You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
523 lines
21 KiB
523 lines
21 KiB
6 years ago
|
# Redmine - project management software
|
||
|
# Copyright (C) 2006-2013 Jean-Philippe Lang
|
||
|
#
|
||
|
# This program is free software; you can redistribute it and/or
|
||
|
# modify it under the terms of the GNU General Public License
|
||
|
# as published by the Free Software Foundation; either version 2
|
||
|
# of the License, or (at your option) any later version.
|
||
|
#
|
||
|
# This program is distributed in the hope that it will be useful,
|
||
|
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||
|
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||
|
# GNU General Public License for more details.
|
||
|
#
|
||
|
# You should have received a copy of the GNU General Public License
|
||
|
# along with this program; if not, write to the Free Software
|
||
|
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
||
|
|
||
|
class MessagesController < ApplicationController
|
||
|
include ApplicationHelper
|
||
|
# before_filter :authorize1, :only => [:show]
|
||
|
menu_item :boards
|
||
|
default_search_scope :messages
|
||
|
before_filter :find_board, :only => [:new, :create, :preview, :edit, :update, :sticky_topic]
|
||
|
before_filter :find_attachments, :only => [:preview]
|
||
|
before_filter :find_message, :except => [:new, :create, :preview, :join_org_subfield, :get_subfield_on_click_org, :join_org_subfields]
|
||
|
# before_filter :authorize, :except => [:preview, :edit, :update, :destroy, :message_replies, :new, :create, :join_org_subfield, :get_subfield_on_click_org, :join_org_subfields, :sticky_topic]
|
||
|
|
||
|
helper :boards
|
||
|
helper :watchers
|
||
|
helper :attachments
|
||
|
include AttachmentsHelper
|
||
|
helper :project_score
|
||
|
|
||
|
include CoursesHelper
|
||
|
|
||
|
REPLIES_PER_PAGE = 25 unless const_defined?(:REPLIES_PER_PAGE)
|
||
|
|
||
|
# Show a topic and its replies
|
||
|
def show
|
||
|
# 顶部导航
|
||
|
@project_menu_type = 3
|
||
|
@topic.update_column('visits', @topic.visits + 1)
|
||
|
@isReply = true
|
||
|
# page = params[:page]
|
||
|
# # Find the page of the requested reply
|
||
|
# if params[:r] && page.nil?
|
||
|
# offset = @topic.children.count(:conditions => ["#{Message.table_name}.id < ?", params[:r].to_i])
|
||
|
# page = 1 + offset / REPLIES_PER_PAGE
|
||
|
# end
|
||
|
all_comments = []
|
||
|
@replies = Message.where("root_id = #{@topic.id}").reorder("created_on 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]
|
||
|
@reply = Message.new
|
||
|
if @course
|
||
|
#帖子消息状态更新
|
||
|
course_messages = CourseMessage.where("user_id =? and course_message_type =? and course_message_id =? and course_id =? and viewed =?", User.current.id, 'Message', @topic.id, @course.id, 0)
|
||
|
course_messages.update_all(:viewed => true)
|
||
|
#@replies = @topic.children.
|
||
|
#includes(:author, :attachments, :praise_tread_cache, {:board => :project}).
|
||
|
#reorder("#{Message.table_name}.created_on DESC").
|
||
|
#limit(@reply_pages.per_page).
|
||
|
#offset(@reply_pages.offset).
|
||
|
#all
|
||
|
#@replies = paginateHelper messages_replies,10
|
||
|
# 班级帖子回复消息设为已读
|
||
|
|
||
|
@replies.each do |comment|
|
||
|
course_message = CourseMessage.where(:course_message_type => 'Message', :course_message_id => comment.id, :user_id => User.current.id, :viewed => 0)
|
||
|
course_message.update_all(:viewed => 1)
|
||
|
end
|
||
|
@left_nav_type = 2
|
||
|
respond_to do |format|
|
||
|
format.js
|
||
|
format.html {render :layout => 'base_edu'}
|
||
|
end
|
||
|
#render :action => "show", :layout => "base_courses"#by young
|
||
|
elsif @project
|
||
|
#帖子消息状态更新
|
||
|
project_messages = ForgeMessage.where("user_id =? and forge_message_type =? and forge_message_id =? and project_id =? and viewed =?", User.current.id, 'Message', @topic.id, @project.id, 0)
|
||
|
project_messages.update_all(:viewed => true)
|
||
|
#@reply_pages = Paginator.new @reply_count, REPLIES_PER_PAGE, page
|
||
|
# @replies = @topic.children.
|
||
|
# includes(:author, :attachments, {:board => :project}).
|
||
|
# reorder("#{Message.table_name}.created_on DESC").
|
||
|
# limit(@reply_pages.per_page).
|
||
|
# offset(@reply_pages.offset).
|
||
|
# all
|
||
|
# 项目帖子回复消息设为已读
|
||
|
# @replies.each do |comment|
|
||
|
# project_message = ForgeMessage.where(:forge_message_type => 'Message', :forge_message_id => comment.id, :user_id => User.current.id, :viewed => 0)
|
||
|
# project_message.update_all(:viewed => 1)
|
||
|
# end
|
||
|
@limit_count = @replies.count
|
||
|
@page = params[:page] ? params[:page].to_i + 1 : 0
|
||
|
@limit = 10
|
||
|
@replies = @replies[@page * @limit..@page * @limit + 9]
|
||
|
respond_to do |format|
|
||
|
format.js
|
||
|
format.html {render :layout => 'base_projects'}
|
||
|
end
|
||
|
elsif @contest
|
||
|
#帖子消息状态更新
|
||
|
contest_messages = ContestMessage.where("user_id =? and contest_message_type =? and contest_message_id =? and contest_id =? and viewed =?", User.current.id, 'Message', @topic.id, @contest.id, 0)
|
||
|
contest_messages.update_all(:viewed => true)
|
||
|
|
||
|
# 竞赛帖子回复消息设为已读
|
||
|
@replies.each do |comment|
|
||
|
contest_message = ContestMessage.where(:contest_message_type => 'Message', :contest_message_id => comment.id, :user_id => User.current.id, :viewed => 0)
|
||
|
contest_message.update_all(:viewed => 1)
|
||
|
end
|
||
|
@left_nav_type = 4
|
||
|
respond_to do |format|
|
||
|
format.js
|
||
|
format.html { render :layout => 'base_contests' }
|
||
|
end
|
||
|
#render :action => "show", :layout => "base_courses"#by young
|
||
|
else
|
||
|
# @reply_pages = Paginator.new @reply_count, REPLIES_PER_PAGE, page
|
||
|
# @replies = @topic.children.
|
||
|
# includes(:author, :attachments, {:board => :project}).
|
||
|
# reorder("#{Message.table_name}.created_on DESC").
|
||
|
# limit(@reply_pages.per_page).
|
||
|
# offset(@reply_pages.offset).
|
||
|
# all
|
||
|
|
||
|
@organization = @org_subfield.organization
|
||
|
respond_to do |format|
|
||
|
format.js
|
||
|
format.html { render :layout => 'base_org' }
|
||
|
end
|
||
|
end
|
||
|
end
|
||
|
|
||
|
# Create a new topic
|
||
|
def new
|
||
|
@message = Message.new
|
||
|
if @course
|
||
|
@main_board = @course.boards.where(:parent_id => 0).first
|
||
|
@sub_boards = @main_board.children.reorder("position asc")
|
||
|
end
|
||
|
respond_to do |format|
|
||
|
format.html { render :layout => 'base_edu' }
|
||
|
end
|
||
|
end
|
||
|
|
||
|
def create
|
||
|
if User.current.logged?
|
||
|
board_id = params[:select_board_id] ? params[:select_board_id] : @board.id
|
||
|
@message = Message.new
|
||
|
@message.author = User.current
|
||
|
@message.board_id = board_id
|
||
|
@message.safe_attributes = params[:message]
|
||
|
@message.sticky = params[:message][:sticky] ? 1 : 0
|
||
|
if request.post?
|
||
|
if @project
|
||
|
is_public = @project.is_public
|
||
|
elsif @course
|
||
|
is_public = @course.is_public
|
||
|
elsif @contest
|
||
|
is_public = @contest.is_public
|
||
|
end
|
||
|
# 公开项目/课程上传的资源是公开的,私有项目上传的是私有的
|
||
|
@message.save_attachments_containers(params[:attachments], User.current, is_public)
|
||
|
if @message.save
|
||
|
# 更新kindeditor上传的图片资源所有者
|
||
|
if params[:asset_id]
|
||
|
ids = params[:asset_id].split(',')
|
||
|
update_kindeditor_assets_owner ids,@message.id,OwnerTypeHelper::MESSAGE
|
||
|
end
|
||
|
|
||
|
call_hook(:controller_messages_new_after_save, { :params => params, :message => @message})
|
||
|
render_attachment_warning_if_needed(@message)
|
||
|
if @course
|
||
|
redirect_to board_message_url(board_id, @message)
|
||
|
else
|
||
|
if params[:is_board]
|
||
|
if @project
|
||
|
redirect_to project_boards_path(@project)
|
||
|
elsif @contest
|
||
|
redirect_to contest_boards_path(@contest, :board_id => @board.id)
|
||
|
end
|
||
|
else
|
||
|
redirect_to board_message_url(board_id, @message)
|
||
|
end
|
||
|
end
|
||
|
else
|
||
|
if params[:is_board]
|
||
|
if @project
|
||
|
redirect_to project_boards_path(@project, :flag => true)
|
||
|
elsif @course
|
||
|
redirect_to course_boards_path(@course, :board_id => board_id, :flag => true)
|
||
|
elsif @contest
|
||
|
redirect_to contest_boards_path(@contest, :board_id => @board.id, :flag => true)
|
||
|
end
|
||
|
else
|
||
|
layout_file = @project ? 'base_projects' : (@course ? 'base_edu' : 'base_contests')
|
||
|
render :action => 'new', :layout => layout_file
|
||
|
end
|
||
|
|
||
|
end
|
||
|
else
|
||
|
@left_nav_type = 2
|
||
|
respond_to do |format|
|
||
|
format.html {
|
||
|
layout_file = @project ? 'base_projects' : (@course ? 'base_edu' : 'base_contests')
|
||
|
render :layout => layout_file
|
||
|
}
|
||
|
end
|
||
|
end
|
||
|
else
|
||
|
redirect_to signin_path
|
||
|
end
|
||
|
end
|
||
|
|
||
|
# Reply to a topic
|
||
|
def reply
|
||
|
if User.current.logged?
|
||
|
if params[:parent_id]
|
||
|
parent = Message.find params[:parent_id]
|
||
|
@topic = params[:activity_id].blank? ? parent : Message.find(params[:activity_id].to_i)
|
||
|
@reply = Message.new
|
||
|
@reply.author = User.current
|
||
|
@reply.board = parent.board
|
||
|
@reply.content = params[:content]
|
||
|
@reply.subject = "RE: #{@topic.subject}"
|
||
|
@reply.reply_id = params[:id]
|
||
|
@reply.root_id = parent.root_id.nil? ? parent.id : parent.root_id
|
||
|
# @reply.reply_id = params[:id]
|
||
|
parent.children << @reply
|
||
|
else
|
||
|
#@quote = params[:quote][:quote]
|
||
|
@reply = Message.new
|
||
|
@reply.author = User.current
|
||
|
@reply.board = @board
|
||
|
@reply.subject = @topic.subject
|
||
|
@reply.content = params[:content]
|
||
|
@reply.safe_attributes = params[:reply]
|
||
|
#@reply.content = @quote + @reply.content
|
||
|
#@reply.subject = "RE: #{@topic.subject}" unless params[:reply][:subject]
|
||
|
@reply.root_id = @topic.id
|
||
|
@topic.children << @reply
|
||
|
# @reply.reply_id = params[:id]
|
||
|
end
|
||
|
|
||
|
update_course_activity(@topic.class,@topic.id)
|
||
|
update_contest_activity(@topic.class,@topic.id)
|
||
|
update_user_activity(@topic.class,@topic.id)
|
||
|
update_forge_activity(@topic.class,@topic.id)
|
||
|
update_org_activity(@topic.class,@topic.id)
|
||
|
|
||
|
if @project && !params[:user_activity_id]
|
||
|
redirect_to board_message_url(@board, @topic)
|
||
|
else
|
||
|
redirect_to message_replies_board_message_path(@topic, :board_id => @board.id, :user_activity_id => params[:user_activity_id])
|
||
|
end
|
||
|
#@topic.update_attribute(:updated_on, Time.now)
|
||
|
# if !@reply.new_record?
|
||
|
# if params[:asset_id]
|
||
|
# ids = params[:asset_id].split(',')
|
||
|
# update_kindeditor_assets_owner ids,@reply.id,OwnerTypeHelper::MESSAGE
|
||
|
# end
|
||
|
#
|
||
|
# call_hook(:controller_messages_reply_after_save, { :params => params, :message => @reply})
|
||
|
# attachments = Attachment.attach_files(@reply, params[:attachments])
|
||
|
# render_attachment_warning_if_needed(@reply)
|
||
|
# else
|
||
|
# #render file: 'messages#show', layout: 'base_courses'
|
||
|
# end
|
||
|
|
||
|
# if params[:user_activity_id]
|
||
|
# @user_activity_id = params[:user_activity_id]
|
||
|
# @is_course = params[:is_course] if params[:is_course]
|
||
|
# @is_board = params[:is_board] if params[:is_board]
|
||
|
# respond_to do |format|
|
||
|
# format.js
|
||
|
# end
|
||
|
# return
|
||
|
# else
|
||
|
# redirect_to board_message_url(@board, @topic)
|
||
|
# return
|
||
|
# end
|
||
|
else
|
||
|
render_403
|
||
|
end
|
||
|
end
|
||
|
|
||
|
def message_replies
|
||
|
@replies = Message.where("root_id = #{@topic.id}").reorder("created_on 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]
|
||
|
@reply = Message.new()
|
||
|
@user_activity_id = params[:user_activity_id].blank? ? @topic.id : params[:user_activity_id].to_i
|
||
|
if !params[:user_activity_id].blank? && params[:user_activity_id].to_i != @topic.id
|
||
|
@topic.update_attributes(:visits => @topic.visits + 1)
|
||
|
end
|
||
|
respond_to do |format|
|
||
|
format.js
|
||
|
end
|
||
|
end
|
||
|
|
||
|
# Edit a message
|
||
|
def edit
|
||
|
if @project
|
||
|
(render_403; return false) unless @message.editable_by?(User.current)
|
||
|
elsif @course
|
||
|
(render_403; return false) unless @message.course_editable_by?(User.current)
|
||
|
elsif @contest
|
||
|
(render_403; return false) unless @message.contest_editable_by?(User.current)
|
||
|
else
|
||
|
(render_403; return false) unless @message.org_subfield_editable_by?(User.current)
|
||
|
end
|
||
|
|
||
|
respond_to do |format|
|
||
|
format.html {
|
||
|
if @project
|
||
|
layout_file = 'base_projects'
|
||
|
elsif @course
|
||
|
@main_board = @course.boards.where(:parent_id => 0).first
|
||
|
@sub_boards = @main_board.children.reorder("position asc")
|
||
|
@left_nav_type = 2
|
||
|
layout_file = 'base_edu'
|
||
|
elsif @contest
|
||
|
@left_nav_type = 4
|
||
|
layout_file = 'base_contests'
|
||
|
elsif @org_subfield
|
||
|
@organization = @org_subfield.organization
|
||
|
layout_file = 'base_org'
|
||
|
end
|
||
|
render :layout => layout_file
|
||
|
}
|
||
|
end
|
||
|
end
|
||
|
|
||
|
def update
|
||
|
board_id = params[:select_board_id] ? params[:select_board_id] : @board.id
|
||
|
@message.board_id = board_id
|
||
|
@message.safe_attributes = params[:message]
|
||
|
@message.sticky = params[:message][:sticky] ? 1 : 0
|
||
|
if @message.save
|
||
|
attachments = Attachment.attach_files(@message, params[:attachments])
|
||
|
render_attachment_warning_if_needed(@message)
|
||
|
#flash[:notice] = l(:notice_successful_update)
|
||
|
@message.reload
|
||
|
redirect_to board_message_url(board_id, @message.root, :r => (@message.parent_id && @message.id))
|
||
|
end
|
||
|
end
|
||
|
|
||
|
# Delete a messages
|
||
|
def destroy
|
||
|
if params[:user_activity_id]
|
||
|
@message.destroy
|
||
|
@topic = Message.find(params[:activity_id].to_i)
|
||
|
@user_activity_id = params[:user_activity_id]
|
||
|
@is_course = params[:is_course] if params[:is_course]
|
||
|
@is_board = params[:is_board] if params[:is_board]
|
||
|
redirect_to message_replies_board_message_path(@topic, :board_id => @board.id, :user_activity_id => params[:user_activity_id])
|
||
|
return
|
||
|
end
|
||
|
if @project
|
||
|
(render_403; return false) unless @message.destroyable_by?(User.current)
|
||
|
elsif @course
|
||
|
(render_403; return false) unless @message.course_destroyable_by?(User.current)
|
||
|
elsif @contest
|
||
|
(render_403; return false) unless @message.contest_destroyable_by?(User.current)
|
||
|
else
|
||
|
(render_403; return false) unless @message.org_subfield_editable_by?(User.current)
|
||
|
end
|
||
|
r = @message.to_param
|
||
|
@message.destroy
|
||
|
# modify by nwb
|
||
|
if @project
|
||
|
if params[:is_course] && params[:is_course].to_i == 0
|
||
|
redirect_to user_activities_path(User.current.id)
|
||
|
elsif params[:is_course] && params[:is_course].to_i == 1 && params[:is_board] && params[:is_board].to_i == 0
|
||
|
redirect_to project_path(@project)
|
||
|
elsif params[:is_course] && params[:is_course].to_i == 1 && params[:is_board] && params[:is_board].to_i == 1
|
||
|
redirect_to project_boards_path(@project)
|
||
|
elsif @message.parent
|
||
|
redirect_to board_message_url(@board, @message.parent, :r => r)
|
||
|
else
|
||
|
redirect_to project_board_url(@project, @board)
|
||
|
end
|
||
|
elsif @course
|
||
|
if params[:is_course] && params[:is_course].to_i == 0
|
||
|
redirect_to user_activities_path(User.current.id)
|
||
|
elsif params[:is_course] && params[:is_course].to_i == 1 && params[:is_board] && params[:is_board].to_i == 0
|
||
|
redirect_to course_path(@course)
|
||
|
elsif params[:is_course] && params[:is_course].to_i == 1 && params[:is_board] && params[:is_board].to_i == 1
|
||
|
redirect_to course_boards_path(@course)
|
||
|
elsif @message.parent
|
||
|
redirect_to board_message_url(@board, @message.parent, :r => r)
|
||
|
else
|
||
|
redirect_to course_boards_path(@course, :board_id => @board.id)
|
||
|
end
|
||
|
elsif @contest
|
||
|
if params[:is_course] && params[:is_course].to_i == 0
|
||
|
redirect_to user_contest_community_path(User.current.id)
|
||
|
elsif params[:is_course] && params[:is_course].to_i == 1 && params[:is_board] && params[:is_board].to_i == 0
|
||
|
redirect_to contest_path(@contest)
|
||
|
elsif params[:is_course] && params[:is_course].to_i == 1 && params[:is_board] && params[:is_board].to_i == 1
|
||
|
redirect_to contest_boards_path(@contest)
|
||
|
elsif @message.parent
|
||
|
redirect_to board_message_url(@board, @message.parent, :r => r)
|
||
|
else
|
||
|
redirect_to contest_boards_path(@contest, :board_id => @board.id)
|
||
|
end
|
||
|
elsif @org_subfield
|
||
|
if params[:is_board]
|
||
|
redirect_to organization_path(:id => @org_subfield.organization_id, :org_subfield_id => @org_subfield.id)
|
||
|
else
|
||
|
if @message.parent
|
||
|
redirect_to board_message_url(@board, @message.parent, :r => r)
|
||
|
else
|
||
|
redirect_to organization_path(:id => @org_subfield.organization_id, :org_subfield_id => @org_subfield.id)
|
||
|
end
|
||
|
end
|
||
|
end
|
||
|
end
|
||
|
|
||
|
def sticky_topic
|
||
|
(render_403; return false) unless (User.current.admin? || User.current.allowed_to?(:as_teacher, @course))
|
||
|
@topic.update_attributes(:sticky => @topic.sticky == 1 ? 0 : 1)
|
||
|
respond_to do |format|
|
||
|
format.js
|
||
|
format.html{
|
||
|
if params[:is_board]
|
||
|
redirect_to course_boards_path(@course)
|
||
|
else
|
||
|
redirect_to board_message_path(@topic.board_id, @topic)
|
||
|
end
|
||
|
}
|
||
|
end
|
||
|
end
|
||
|
|
||
|
def quote
|
||
|
# @subject = @message.subject
|
||
|
# @subject = "RE: #{@subject}" unless @subject.starts_with?('RE:')
|
||
|
#
|
||
|
# @content = "> #{ll(Setting.default_language, :text_user_wrote, @message.author)}\n> "
|
||
|
# @temp = Message.new
|
||
|
# @temp.content = "<blockquote>#{ll(Setting.default_language, :text_user_wrote, @message.author.show_name)} <br/>#{@message.content.html_safe}</blockquote>".html_safe
|
||
|
end
|
||
|
|
||
|
def preview
|
||
|
message = @board.messages.find_by_id(params[:id])
|
||
|
@text = (params[:message] || params[:reply])[:content]
|
||
|
@previewed = message
|
||
|
render :partial => 'common/preview'
|
||
|
end
|
||
|
|
||
|
def join_org_subfield
|
||
|
@message = Message.find(params[:message_id])
|
||
|
@organizations = User.current.organizations
|
||
|
end
|
||
|
|
||
|
def get_subfield_on_click_org
|
||
|
@org = Organization.find(params[:organization_id])
|
||
|
end
|
||
|
|
||
|
def join_org_subfields
|
||
|
org_subfield_ids = params[:org_subfields]
|
||
|
@message = Message.find(params[:id])
|
||
|
# @message.update_attribute(:updated_on, Time.now)
|
||
|
# type = @message.board.course_id.nil? ? "Project":"Course"
|
||
|
org_subfield_ids.each do |field_id|
|
||
|
@message.quotes = @message.quotes.nil? ? 1 : (@message.quotes + 1)
|
||
|
@message.save
|
||
|
board = OrgSubfield.find(field_id).boards.first
|
||
|
mes = Message.create(:board_id => board.id, :subject => @message.subject, :content => @message.content, :author_id => User.current.id,
|
||
|
:created_on => Time.now, :updated_on => Time.now, :locked => @message.locked, :sticky => @message.sticky)
|
||
|
@message.attachments.each do |attach|
|
||
|
mes.attachments << Attachment.new(:filename => attach.filename, :disk_filename => attach.disk_filename, :filesize => attach.filesize, :content_type => attach.content_type, :digest => attach.digest,
|
||
|
:downloads => 0, :author_id => User.current.id, :created_on => Time.now, :description => attach.description, :disk_directory => attach.disk_directory, :attachtype => attach.attachtype,
|
||
|
:is_public => attach.is_public, :quotes => 0)
|
||
|
end
|
||
|
# OrgSubfieldMessage.create(:org_subfield_id => field_id.to_i, :message_id => mes.id, :message_type => type)
|
||
|
# org_acts = OrgActivity.where("container_type='OrgSubfield' and container_id=? and org_act_type='Message' and org_act_id=?", field_id.to_i, @message.id)
|
||
|
# if org_acts.all.size() > 0
|
||
|
# org_acts.first.update_attribute(:updated_at, Time.now)
|
||
|
# else
|
||
|
OrgActivity.create(:container_type => 'OrgSubfield', :container_id => field_id.to_i, :org_act_type=>'Message', :org_act_id => mes.id, :user_id => User.current.id)
|
||
|
# end
|
||
|
end
|
||
|
end
|
||
|
|
||
|
private
|
||
|
def find_message
|
||
|
return unless find_board
|
||
|
@message = @board.messages.find(params[:id], :include => :parent)
|
||
|
@topic = @message.root
|
||
|
rescue ActiveRecord::RecordNotFound
|
||
|
render_404
|
||
|
end
|
||
|
|
||
|
def find_board
|
||
|
#modify by nwb
|
||
|
@board = Board.find(params[:board_id])
|
||
|
if @board.project_id != -1 && @board.project_id != nil
|
||
|
@project = @board.project
|
||
|
elsif @board.course_id && @board.course_id != -1
|
||
|
@course = @board.course
|
||
|
elsif @board.contest_id
|
||
|
@contest = @board.contest
|
||
|
else
|
||
|
@org_subfield = @board.org_subfield
|
||
|
@organization = @org_subfield
|
||
|
end
|
||
|
|
||
|
rescue ActiveRecord::RecordNotFound
|
||
|
render_404
|
||
|
nil
|
||
|
end
|
||
|
end
|