class Admin::CommentsController

Controlador para la administración de comentarios

Public Instance Methods

comments_on_item() click to toggle source

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
destroy() click to toggle source

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
do_reject() click to toggle source

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
edit() click to toggle source

Modificación de comentarios

# File app/controllers/admin/comments_controller.rb, line 64
def edit
end
index() click to toggle source

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
mark_as_ham() click to toggle source

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
mark_as_spam() click to toggle source

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
pending() click to toggle source
# 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
reject() click to toggle source

Pantalla de confirmación de rechazo un comentario

# File app/controllers/admin/comments_controller.rb, line 68
def reject
end
update() click to toggle source

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
update_comments_status() click to toggle source

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
update_status() click to toggle source

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
zforward() click to toggle source

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
zforward_form() click to toggle source

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