Class Admin::CommentsController
In: app/controllers/admin/comments_controller.rb
Parent: Sadmin::BaseController

Controlador para la administración de comentarios

Methods

Public Instance methods

Muestra los comentarios de un contenido concreto

[Source]

     # File app/controllers/admin/comments_controller.rb, line 112
112:   def comments_on_item    
113:     @item = params[:type].constantize.find(params[:id])
114:     if @department_tag_id && !@item.tag_ids.include?(@department_tag_id)
115:       flash[:notice] = t('no_tienes_permiso')
116:       redirect_to admin_comments_path
117:     end
118: 
119:     @additional_conditions =  nil if @additional_conditions[0].blank?
120:     
121:     if @department_tag_id.nil?
122:       @comments = @item.comments.paginate :per_page => 20, :page => params[:page],
123:         :conditions => @additional_conditions ,
124:         :joins => "INNER JOIN users ON (users.id = comments.user_id) ",
125:         :order => "created_at DESC"
126:     else
127:       @additional_conditions[0] << " AND commentable_id=#{@item.id}"
128:       @comments = @item.comments.paginate_by_sql(query_for_department(@department_tag_id, @additional_conditions), 
129:         :page => params[:page], :per_page => 20, :order => "created_at DESC")
130:     end
131:         
132:     @title = "Comentarios en #{@item.class.human_name} \"#{@item.title_es}\""
133:     rewrite_current_tab
134:   end

Eliminación de un comentario

[Source]

     # File app/controllers/admin/comments_controller.rb, line 82
 82:   def destroy
 83:     if @comment.destroy
 84:       respond_to do |format|
 85:         format.html {
 86:           flash[:notice] = 'El comentario ha sido eliminado'
 87:           redirect_to admin_comments_path
 88:         }
 89:         format.js { 
 90:           render :update do |page|
 91:             page.visual_effect :fade, "comment_#{@comment.id}"
 92:           end
 93:         }
 94:       end
 95:     else
 96:       respond_to do |format|
 97:         format.html {
 98:           flash[:error] = 'El comentario no ha podido ser eliminado'
 99:           redirect_to admin_comments_path
100:         }
101:         format.js { 
102:           render :update do |page|
103:             page.alert "El comentario no se ha borrado"
104:           end
105:         }
106:       end
107:       
108:     end
109:   end

Rechacar un comentario

[Source]

    # File app/controllers/admin/comments_controller.rb, line 34
34:   def do_reject
35:     if @comment.update_attributes(:status => "rechazado")
36:       if params[:reject_and_mail]
37:         email = Notifier.create_rejected_comment(@comment)
38: 
39:         begin
40:           logger.info("Mandando email sobre comentario rechazado a #{@comment.user.email}")
41:           Notifier.deliver(email)
42:           flash[:notice] = "El email ha sido enviado"
43:         rescue Net::SMTPServerBusy, Net::SMTPSyntaxError => err_type
44:           logger.info("Error al mandar el email: " + err_type)
45:           flash[:error] = t('session.Error_servidor_correo')
46:         end
47:       end
48:       redirect_to(params[:return_to].present? ? params[:return_to] :  admin_comments_path)
49:     else
50:       render :action => :reject
51:     end    
52:   end

Modificación de comentarios

[Source]

    # File app/controllers/admin/comments_controller.rb, line 26
26:   def edit
27:   end

Listado de comentarios

[Source]

    # File app/controllers/admin/comments_controller.rb, line 11
11:   def index    
12:     @title ||= 'Todos los comentarios'
13: 
14:     if @department_tag_id.nil?
15:       @comments = Comment.paginate :per_page => 20, 
16:         :conditions => @additional_conditions,
17:         :joins => "INNER JOIN users ON (users.id = comments.user_id) ",
18:         :page => params[:page], :order => "created_at DESC"
19:     else
20:       @comments = Comment.paginate_by_sql(query_for_department(@department_tag_id, @additional_conditions), 
21:         :page => params[:page], :per_page => 20, :order => "created_at DESC")
22:     end    
23:   end

Marcar un comentario como no-spam

[Source]

    # File app/controllers/admin/comments_controller.rb, line 76
76:   def mark_as_ham
77:     @comment.mark_as_ham!
78:     render_updated_comment
79:   end

Marcar un comentario como spam

[Source]

    # File app/controllers/admin/comments_controller.rb, line 70
70:   def mark_as_spam
71:     @comment.mark_as_spam!
72:     render_updated_comment
73:   end

Pantalla de confirmación de rechazo un comentario

[Source]

    # File app/controllers/admin/comments_controller.rb, line 30
30:   def reject
31:   end

Actualización de un comentario

[Source]

    # File app/controllers/admin/comments_controller.rb, line 55
55:   def update
56:     if @comment.update_attributes(params[:comment])
57:       redirect_to(params[:return_to].present? ? params[:return_to] :  admin_comments_path)
58:     else
59:       render :action => :edit
60:     end
61:   end

Actualiza el campo de si un contenido admite comentarios o no

[Source]

     # File app/controllers/admin/comments_controller.rb, line 137
137:   def update_comments_status
138:     @item = params[:type].constantize.find(params[:item_id], :readonly => false)
139:     if @department_tag_id && !@item.tag_ids.include?(@department_tag_id)
140:       render :update do |page|
141:         flash[:notice] = t('no_tienes_permiso')
142:         page.redirect_to comments_on_item_admin_comment_path(@item, :type => params[:type])
143:       end
144:     else
145:       if @item.update_attribute(:comments_closed, params[:comments_closed])
146:         render :update do |page|
147:           page.replace :comments_status, :partial => 'comments_status'
148:         end
149:       end
150:     end
151:   end

Cambiar el estado de un comentario (aprobado, spam, etc…)

[Source]

    # File app/controllers/admin/comments_controller.rb, line 64
64:   def update_status
65:     @comment.update_attributes(params[:comment])
66:     render_updated_comment
67:   end

[Validate]