Controlador par la administración de propuestas ciudadanas
# 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
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
# 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
# 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
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
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
# 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
# File app/controllers/admin/proposals_controller.rb, line 159 def publish @proposal.update_attributes(:published_at => Time.zone.now) redirect_to @proposal end
Pantalla de confirmación de rechazo un comentario
# File app/controllers/admin/proposals_controller.rb, line 180 def reject end
# File app/controllers/admin/proposals_controller.rb, line 68 def show @title = "#{@proposal.title}" end
# 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
# 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