comments_controller.rb
上传用户:netsea168
上传日期:2022-07-22
资源大小:4652k
文件大小:2k
源码类别:

Ajax

开发平台:

Others

  1. class CommentsController < FeedbackController
  2.   before_filter :get_article, :only => [:create, :preview]
  3.   def create
  4.     @comment = @article.with_options(new_comment_defaults) do |art|
  5.       art.add_comment(params[:comment].symbolize_keys)
  6.     end
  7.     unless current_user.nil? or session[:user_id].nil?
  8.       # maybe useless, but who knows ?
  9.       if current_user.id == session[:user_id]
  10.         @comment.user_id = current_user.id
  11.       end
  12.     end
  13.     set_comment_cookies
  14.     if @comment.save
  15.       if request.xhr?
  16.         render :partial => '/articles/comment', :object => @comment
  17.       else
  18.         redirect_to @article.permalink_url
  19.       end
  20.     else
  21.       if request.xhr?
  22.         render :partial => '/articles/comment_failed', :object => @comment
  23.       else
  24.         redirect_to @article.permalink_url
  25.       end      
  26.     end
  27.   end
  28.   def preview
  29.     if !session
  30.       session :session => new
  31.     end
  32.     
  33.     if (params[:comment][:body].blank? rescue true)
  34.       render :nothing => true
  35.       return
  36.     end
  37.     set_headers
  38.     @comment = Comment.new(params[:comment])
  39.     unless @article.comments_closed?
  40.       render :template => 'articles/comment_preview'
  41.     else
  42.       render :text => 'Comment are closed'
  43.     end
  44.   end
  45.   protected
  46.   def get_feedback
  47.     @comments = 
  48.       if params[:article_id]
  49.         Article.find(params[:article_id]).published_comments
  50.       else
  51.         Comment.find_published(:all, this_blog.rss_limit_params.merge(:order => 'created_at DESC'))
  52.       end
  53.   end
  54.   def new_comment_defaults
  55.     return { :ip  => request.remote_ip,
  56.       :author     => 'Anonymous',
  57.       :published  => true,
  58.       :user       => @current_user,
  59.       :user_agent => request.env['HTTP_USER_AGENT'],
  60.       :referrer   => request.env['HTTP_REFERER'],
  61.       :permalink  => @article.permalink_url }
  62.   end
  63.   def set_headers
  64.     headers["Content-Type"] = "text/html; charset=utf-8"
  65.   end
  66.   def set_comment_cookies
  67.     add_to_cookies(:author, @comment.author)
  68.     if ! @comment.email.blank?
  69.       add_to_cookies(:gravatar_id, Digest::MD5.hexdigest(@comment.email.strip))
  70.     end
  71.     add_to_cookies(:url, @comment.url)
  72.   end
  73.   def get_article
  74.     @article = Article.find(params[:article_id])
  75.   end
  76. end