Controlador para la administración de comentarios
Muestra los comentarios de un contenido concreto
# File app/controllers/admin/comments_controller.rb, line 150 def comments_on_item @item = params[:type].constantize.find(params[:id]) if @department_tag_id && !@item.tag_ids.include?(@department_tag_id) flash[:notice] = t('no_tienes_permiso') redirect_to admin_comments_path end @additional_conditions = nil if @additional_conditions[0].blank? if @department_tag_id.nil? @comments = @item.comments.paginate :per_page => 20, :page => params[:page], :conditions => @additional_conditions , :joins => "INNER JOIN users ON (users.id = comments.user_id) ", :order => "created_at DESC" else @additional_conditions[0] << " AND commentable_id=#{@item.id}" @comments = @item.comments.paginate_by_sql(query_for_department(@department_tag_id, @additional_conditions), :page => params[:page], :per_page => 20, :order => "created_at DESC") end @title = "Comentarios en #{@item.class.human_name} \"#{@item.title_es}\"" rewrite_current_tab end
Eliminación de un comentario
# File app/controllers/admin/comments_controller.rb, line 120 def destroy if @comment.destroy respond_to do |format| format.html { flash[:notice] = 'El comentario ha sido eliminado' redirect_to admin_comments_path } format.js { render :update do |page| page.visual_effect :fade, "comment_#{@comment.id}" end } end else respond_to do |format| format.html { flash[:error] = 'El comentario no ha podido ser eliminado' redirect_to admin_comments_path } format.js { render :update do |page| page.alert "El comentario no se ha borrado" end } end end end
Rechacar un comentario
# File app/controllers/admin/comments_controller.rb, line 72 def do_reject if @comment.update_attributes(:status => "rechazado") if params[:reject_and_mail] email = Notifier.create_rejected_comment(@comment) begin logger.info("Mandando email sobre comentario rechazado a #{@comment.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_comments_path) else render :action => :reject end end
Modificación de comentarios
# File app/controllers/admin/comments_controller.rb, line 64 def edit end
Listado de comentarios
# File app/controllers/admin/comments_controller.rb, line 32 def index @title ||= 'Todos los comentarios' if @department_tag_id.nil? @comments = Comment.paginate :per_page => 20, :conditions => @additional_conditions, :joins => "INNER JOIN users ON (users.id = comments.user_id) ", :page => params[:page], :order => "created_at DESC" else @comments = Comment.paginate_by_sql(query_for_department(@department_tag_id, @additional_conditions), :page => params[:page], :per_page => 20, :order => "created_at DESC") end end
Marcar un comentario como no-spam
# File app/controllers/admin/comments_controller.rb, line 114 def mark_as_ham @comment.mark_as_ham! render_updated_comment end
Marcar un comentario como spam
# File app/controllers/admin/comments_controller.rb, line 108 def mark_as_spam @comment.mark_as_spam! render_updated_comment end
# File app/controllers/admin/comments_controller.rb, line 46 def pending @comments = Comment.pending if params[:c_id] @comment = @comments.select {|c| c.id == params[:c_id].to_i}.first end @comment = @comments.first unless @comment if @comments.length > 0 @previous = @comments[@comments.index(@comment) - 1] @next = @comments[@comments.index(@comment) + 1] || @comments.first end @page_title = "1 de #{@comments.length}" render :action => 'pending.iphone', :layout => false end
Pantalla de confirmación de rechazo un comentario
# File app/controllers/admin/comments_controller.rb, line 68 def reject end
Actualización de un comentario
# File app/controllers/admin/comments_controller.rb, line 93 def update if @comment.update_attributes(params[:comment]) redirect_to(params[:return_to].present? ? params[:return_to] : admin_comments_path) else render :action => :edit end end
Actualiza el campo de si un contenido admite comentarios o no
# File app/controllers/admin/comments_controller.rb, line 175 def update_comments_status @item = params[:type].constantize.find(params[:item_id], :readonly => false) if @department_tag_id && !@item.tag_ids.include?(@department_tag_id) render :update do |page| flash[:notice] = t('no_tienes_permiso') page.redirect_to comments_on_item_admin_comment_path(@item, :type => params[:type]) end else if @item.update_attribute(:comments_closed, params[:comments_closed]) render :update do |page| page.replace :comments_status, :partial => 'comments_status' end end end end
Cambiar el estado de un comentario (aprobado, spam, etc…)
# File app/controllers/admin/comments_controller.rb, line 102 def update_status @comment.update_attributes(params[:comment]) render_updated_comment end
Reenvía un comentario a Zuzenean
# File app/controllers/admin/comments_controller.rb, line 200 def zforward body_for_z = "#{@comment.body} --------- Esta consulta corresponde al comentario nº #{@comment.id} de Irekia." res = Net::HTTP.post_form(URI.parse('http://www.ej-gv.net/o53/visualizador/o53regbuzonEuskadi.jsp'), {'por'=>params[:por], 'lenguaje'=>'1', 'sugerencia' => body_for_z, 'name' => @comment.user.public_name, 'usuario' => @comment.user.email}) # res = Net::HTTP.post_form(URI.parse('http://www.google.es/'), # {'por'=> params[:por], 'lenguaje'=>'1', 'sugerencia' => body_for_z, # 'name' => @comment.user.public_name, 'usuario' => @comment.user.email}) case res when Net::HTTPSuccess #, Net::HTTPRedirection flash[:notice] = "El comentario se ha redigido correctamente" # La respuesta esta en res.read_body @comment.update_attributes(:zforwarded_at => Time.zone.now, :zforwarded_to => params[:por]) redirect_to :back when Net::HTTPRedirection flash[:error] = "Peticion redirigida a #{res['location']}" redirect_to :back # response = Net::HTTP.get(URI.parse(res['location'])) else flash[:error] = "La redirección del comentario no ha funcionado: #{res.body}" redirect_to :back # res.error! end end
Formulario para reenviar un comentario a Zuzenean, el servicio de atención ciudadana de euskadi.net
# File app/controllers/admin/comments_controller.rb, line 192 def zforward_form render :update do |page| page.replace_html "comment_id_#{@comment.id}", :partial => "zforward_form", :locals => {:comment => @comment} end end