socialforge/app/controllers/memos_controller.rb

235 lines
7.9 KiB
Ruby
Raw Normal View History

class MemosController < ApplicationController
default_search_scope :memos
before_filter :find_forum, :only => [:new, :create, :preview]
before_filter :find_attachments, :only => [:preview]
before_filter :find_memo, :except => [:new, :create, :preview]
before_filter :authenticate_user_edit, :only => [:edit, :update]
before_filter :authenticate_user_destroy, :only => [:destroy]
before_filter :require_login, :only => [:new, :create]
helper :attachments
include AttachmentsHelper
include ApplicationHelper
2015-09-18 17:44:16 +08:00
# layout 'base_memos'
def quote
2016-11-29 09:36:38 +08:00
# @subject = @memo.subject
# @subject = "RE: #{@subject}" unless @subject.starts_with?('RE:')
#
# @content = "#{ll(Setting.default_language, :text_user_wrote, @memo.author)} <br/> &nbsp; "
# @content << @memo.content.to_s.strip.gsub(%r{<pre>((.|\s)*?)</pre>}m, '[...]').gsub(/(\r?\n|\r\n?)/, "\n") + "</blockquote>\n\n<br/>"
# @content = "<blockquote style='word-break: break-all;word-wrap: break-word;'>" << @content
# #@content = "> #{ll(Setting.default_language, :text_user_wrote, @memo.author)}\n> "
# #@content << @memo.content.to_s.strip.gsub(%r{<pre>((.|\s)*?)</pre>}m, '[...]').gsub(/(\r?\n|\r\n?)/, "\n> ") + "\n\n"
# #@content_html = textilizable(@content)
# @temp = Memo.new
# @temp.content = @content
end
def new
@memo = Memo.new
@memo.forum_id = @forum.id
respond_to do |format|
format.html {
render action: :new ,layout: 'base'
}
format.json { render json: @memo }
end
end
def create
if params[:quote].nil?
@quote = ""
else
@quote = params[:quote]
end
2016-11-29 09:36:38 +08:00
#unless params[:quote].nil?
# @quote = params[:quote][:quote]
#end
@memo = Memo.new(params[:memo])
@memo.forum_id = params[:forum_id]
@memo.author_id = User.current.id
2016-11-29 09:36:38 +08:00
if params[:memo][:parent_id]
@memo.root_id = (Memo.find params[:memo][:parent_id]).root_id.nil? ? params[:memo][:parent_id].to_i : (Memo.find params[:memo][:parent_id]).root_id
end
@memo.save_attachments(params[:attachments] || (params[:memo] && params[:memo][:uploads]))
@memo.content = @quote + @memo.content
respond_to do |format|
if @memo.save
# Time 2015-03-24 14:47:05
# Author lizanle
# Description after save后需要进行资源记录的更新
# owner_type = 1 对应的是 memo
if !params[:asset_id].nil?
ids = params[:asset_id].split(',')
ids.each do |id|
asset = Kindeditor::Asset.find(id.to_i)
asset.owner_id = @memo.id
asset.owner_type = 1
asset.save
end
end
#end
format.js
format.html { redirect_to back_memo_url, notice: "#{l :label_memo_create_succ}" }
format.json { render json: @memo, status: :created, location: @memo }
else
flash.now[:error] = "#{l :label_memo_create_fail}: #{@memo.errors.full_messages[0]}"
format.js
format.html { redirect_to( forum_path(Forum.find(params[:forum_id]),:errors=>@memo.errors.full_messages[0])) }
format.json { render json: @memo.errors, status: :unprocessable_entity }
#end
end
end
end
REPLIES_PER_PAGE = 20 unless const_defined?(:REPLIES_PER_PAGE)
def show
2015-09-18 17:44:16 +08:00
2015-09-02 10:23:22 +08:00
# 更新贴吧帖子留言对应的memo_messages的viewed字段
unless @memo.children.blank?
@memo.children.each do |child|
child.memo_messages.each do |memo_message|
if User.current.id == memo_message.user_id
memo_message.update_attributes(:viewed => true)
end
end
end
2015-09-02 11:46:49 +08:00
end
query_memo_messages = @memo.memo_messages
query_memo_messages.each do |query_memo_message|
if User.current.id == query_memo_message.user_id
query_memo_message.update_attributes(:viewed => true)
end
end
pre_count = REPLIES_PER_PAGE
@memo = @memo.root # 取出楼主防止输入帖子id让回复作为主贴显示
@memo.update_column(:viewed_count, (@memo.viewed_count.to_i + 1))
2016-11-29 09:36:38 +08:00
# page = params[:page]
# if params[:r] && page.nil?
# offset = @memo.children.where("#{Memo.table_name}.id < ?", params[:r].to_i).count
# page = 1 + offset / pre_count
# else
# end
# @reply_count = @memo.children.count
# @reply_pages = Paginator.new @reply_count, pre_count, page
# @replies = @memo.children.
# includes(:author, :attachments).
# reorder("#{Memo.table_name}.created_at DESC").
# limit(@reply_pages.per_page).
# offset(@reply_pages.offset).
# all
@replies = Memo.where("root_id = #{@memo.id}").reorder("created_at desc")
@reply_count = @replies.count
@replies = get_no_children_comments_all @replies
@limit_count = @replies.count
@page = params[:page] ? params[:page].to_i + 1 : 0
@limit = 10
@replies = @replies[@page * @limit..@page * @limit + 9]
@memo_new = Memo.new
2015-09-18 17:44:16 +08:00
@my_topic_count = Memo.where("forum_id = #{@memo.forum_id} and author_id = #{User.current.id} and parent_id is null").count
@my_replies_count = Memo.where("forum_id = #{@memo.forum_id} and author_id = #{User.current.id} and parent_id is not null").count
respond_to do |format|
2016-11-29 09:36:38 +08:00
format.js
2015-09-18 17:44:16 +08:00
format.html {render :layout=> 'base_forums'}#:layout=> 'base_forums',
format.json { render json: @memo }
format.xml { render xml: @memo }
end
end
def edit
2015-09-24 09:40:53 +08:00
@my_topic_count = Memo.where("forum_id = #{@memo.forum_id} and author_id = #{User.current.id} and parent_id is null").count
@my_replies_count = Memo.where("forum_id = #{@memo.forum_id} and author_id = #{User.current.id} and parent_id is not null").count
@replying = false
2015-09-24 09:40:53 +08:00
respond_to do |format|
format.html {render :layout=>'base_forums'}
end
end
def update
@flag = false
respond_to do |format|
if( #@memo.update_column(:subject, params[:memo][:subject]) &&
@memo.update_column(:content, params[:memo][:content]) &&
@memo.update_column(:sticky, params[:memo][:sticky]) &&
2015-09-24 13:38:40 +08:00
@memo.update_column(:lock, params[:memo][:lock]) &&
2015-12-16 17:08:59 +08:00
@memo.update_column(:subject,params[:memo][:subject]) &&
@memo.update_column(:updated_at,Time.now))
@memo.save_attachments(params[:attachments] || (params[:memo] && params[:memo][:uploads]))
@flag = @memo.save
# @memo.root.update_attribute(:updated_at, @memo.updated_at)
format.js
format.html {redirect_to back_memo_url, notice: "#{l :label_memo_create_succ}"}
else
format.js
format.html { render action: "edit" }
format.json { render json: @person.errors, status: :unprocessable_entity }
end
end
end
def destroy
@memo.destroy
respond_to do |format|
# format.html { redirect_to @back_url }
format.html { redirect_to back_memo_or_forum_url }
format.json { head :no_content }
end
end
private
def find_memo
return unless find_forum
#@memo = @forum.memos.find(params[:id])
@memo = Memo.find(params[:id])
rescue ActiveRecord::RecordNotFound
render_404
nil
end
def find_forum
@forum = Forum.find(params[:forum_id])
rescue ActiveRecord::RecordNotFound
render_404
nil
end
def authenticate_user_edit
find_memo
render_403 unless @memo.editable_by? User.current
end
def authenticate_user_destroy
find_memo
render_403 unless @memo.destroyable_by? User.current
end
def back_memo_url
2015-09-19 10:00:46 +08:00
forum_memo_path(@forum, (@memo.root.nil? ? @memo : @memo.root))
end
def back_memo_or_forum_url
@memo.parent_id.nil? ? forum_url(@forum) : forum_memo_url(@forum, @memo.parent_id)
end
end