class Admin::ProposalsController

Controlador par la administración de propuestas ciudadanas

Public Instance Methods

arguments() click to toggle source
# File app/controllers/admin/proposals_controller.rb, line 72
def arguments
   @arguments = Argument.for_proposals.paginate :per_page => 20, 
      :joins => "INNER JOIN users ON (users.id = arguments.user_id) ",
      :page => params[:page], 
      :order => "published_at DESC, created_at DESC"
end
auto_complete_for_proposal_tag_list_es() click to toggle source

def update_comments_status

@title = "Actualizar propuesta"

if @proposal.update_attribute(:comments_closed, params[:comments_closed])
  render :update do |page|
    page.replace :comments_status, :partial => 'comments_status'
  end
end

end

# File app/controllers/admin/proposals_controller.rb, line 214
def auto_complete_for_proposal_tag_list_es
  auto_complete_for_tag_list(params[:proposal][:tag_list_es])
  if @tags.length > 0
    render :inline => "<%= content_tag(:ul, @tags.map {|t| content_tag(:li, t.nombre)}) %>"
  else
    render :nothing => true
  end  
end
comments() click to toggle source
# File app/controllers/admin/proposals_controller.rb, line 154
def comments
  @comments = @proposal.comments.paginate :per_page => 20, :page => params[:page], :order => "created_at DESC"
  @title = "Comentarios de la propuesta \"#{@proposal.title_es}\""
end
destroy() click to toggle source
# File app/controllers/admin/proposals_controller.rb, line 124
def destroy
  @title = 'Eliminar propuesta'
  
  if @proposal.destroy
    respond_to do |format|
      format.html {
        flash[:notice] = 'La propuesta se ha eliminado correctamente'
        redirect_to admin_proposals_path
      }
      format.js { 
        render :update do |page|
          page.visual_effect :fade, "proposal_#{@proposal.id}"
        end
      }
    end
  else
    respond_to do |format|
      format.html {
        flash[:error] = 'La propuesta no se ha podido eliminar'
        redirect_to admin_proposals_path
      }
      format.js { 
        render :update do |page|
          page.alert "La propuesta no se ha borrado"
        end
      }
    end
  end
end
do_reject() click to toggle source

Rechacar un comentario

# File app/controllers/admin/proposals_controller.rb, line 184
def do_reject
  if @proposal.update_attributes(:status => "rechazado")
    if params[:reject_and_mail]
      email = Notifier.create_proposal_rejection(@proposal)

      begin
        logger.info("Mandando email sobre comentario rechazado a #{@proposal.user.email}")
        Notifier.deliver(email)
        flash[:notice] = "El email ha sido enviado"
      rescue Net::SMTPServerBusy, Net::SMTPSyntaxError => err_type
        logger.info("Error al mandar el email: " + err_type)
        flash[:error] = t('session.Error_servidor_correo')
      end
    end
    redirect_to(params[:return_to].present? ? params[:return_to] :  admin_proposals_path)
  else
    render :action => :reject
  end    
end
edit() click to toggle source

Sólo los usuarios que son citizen pueden crear propuestas.

def new

@title = "Crear propuesta gubernamental"
@proposal = Proposal.new

end

def create

@title = "Crear propuesta gubernamental"
@proposal = Proposal.new(params[:proposal])
@proposal.governmental = true
@proposal.user_id = current_user.id
@proposal.name = current_user.name
@proposal.email = current_user.email
@proposal.status = 'aprobado'

if @proposal.save
  flash[:notice] = 'La propuesta se ha guardado correctamente'
  redirect_to admin_proposal_path(@proposal)
else
  render :action => 'new'
end

end

# File app/controllers/admin/proposals_controller.rb, line 104
def edit
  @title = "Modificar propuesta"
end
index() click to toggle source
# File app/controllers/admin/proposals_controller.rb, line 37
def index
  @sort_order = params[:sort] ||  "update"
  
  case @sort_order
  when "update"
    order = "updated_at DESC, title_es, published_at DESC"
  when "publish"
    order = "created_at DESC, title_es, updated_at DESC"
  when "title"
    order = "lower(tildes(title_es)), published_at DESC, updated_at DESC"
  end
  
  conditions = []
  cond_values = {}

  if params[:q].present?
    conditions << "lower(tildes(coalesce(title_es, '') || ' ' || coalesce(title_eu, ''))) like :q"
    cond_values[:q] = "%" + params[:q].tildes.downcase + "%"
  end

  @proposals = Proposal.paginate :page => params[:page], :per_page => 20,
    :joins => " INNER JOIN users ON (user_id=users.id) AND users.status='aprobado'",
    :order => order,
    :conditions => [conditions.join(' AND '), cond_values]

  @title = "Propuestas"
  
  # @your_proposals_text = Proposal.yours_intro_page
  # @our_proposals_text = Proposal.ours_intro_page
end
publish() click to toggle source
# File app/controllers/admin/proposals_controller.rb, line 159
def publish
  @proposal.update_attributes(:published_at => Time.zone.now)
  redirect_to @proposal
end
reject() click to toggle source

Pantalla de confirmación de rechazo un comentario

# File app/controllers/admin/proposals_controller.rb, line 180
def reject
end
show() click to toggle source
# File app/controllers/admin/proposals_controller.rb, line 68
def show
  @title = "#{@proposal.title}"
end
update() click to toggle source
# File app/controllers/admin/proposals_controller.rb, line 108
def update
  @proposal.attributes = params[:proposal]

  @title = "Actualizar propuesta"
  
  if @proposal.save
    flash[:notice] = 'El propuesta se ha guardado correctamente'
    
    send_notifications

    redirect_to admin_proposal_path(@proposal)
  else
    render :action => params[:return_to] || 'edit'
  end
end
update_status() click to toggle source
# File app/controllers/admin/proposals_controller.rb, line 164
def update_status
  if @proposal.update_attributes(params[:proposal])
    send_notifications
    render :update do |page|
      page.replace "proposal_#{@proposal.id}", :partial => "proposal", :locals => {:proposal => @proposal}
      page["proposal_#{@proposal.id}"].className = @proposal.status
    end
  else
    render :update do |page|
      page.visual_effect :highlight, "proposal_#{@proposal.id}"
    end
  end
  
end