|
- # encoding: utf-8
- #####leave message fq
- class WordsController < ApplicationController
- include ApplicationHelper
- before_filter :find_user, :only => [:new, :create, :destroy, :more, :back]
- before_filter :require_login, :only => [:create_reply]
-
- def create
- if params[:new_form][:user_message].size>0 && User.current.logged?
- unless params[:user_id].nil?
- if params[:reference_content]
- message = params[:new_form][:user_message] + "\n" + params[:reference_content]
- else
- message = params[:new_form][:user_message]
- end
- refer_user_id = params[:new_form][:reference_user_id].to_i
-
- list = @user.add_jour(User.current, message, refer_user_id)
- unless refer_user_id == 0 || refer_user_id == User.current.id
- list = User.find(refer_user_id).add_jour(User.current, message, refer_user_id)
- end
- @jour = list.last
- end
- end
- jours = @user.journals_for_messages.where('m_parent_id IS NULL').order('created_on DESC')
- @jour = paginateHelper jours,10
-
- respond_to do |format|
- format.js
- end
- end
-
-
- def create_reply
- # 这里是创建回复所使用的方法,此方法只针对回复,每一个新的留言并不在此方法管理范围内。
- # 由于多个地方用到了留言,而之前的表设计也有jour_type/jour_id这类信息
- # 所以在方法 add_reply_adapter 中判断所有调用此方法的来源页面,
- # 为了保证兼容以往所有的代码,保证以往的方法可以调用,在返回页面中都做了各式各样的判断。
- # 页面保证 render new_respond/journal_reply
- # 修改 add_reply_adapter 中可以确保留言创建成功
- # 删除留言功能要调用destroy,也记得在destroy.js中修改
-
- # deny api. api useless
- parent_id = params[:reference_id]
- author_id = User.current.id
- reply_user_id = params[:reference_user_id]
- reply_id = params[:reference_message_id] # 暂时不实现
- content = params[:user_notes]
- @show_name = params[:show_name] == "true"
- options = {:user_id => author_id,
- :status => true,
- :m_parent_id => parent_id,
- :m_reply_id => reply_id,
- :reply_id => reply_user_id,
- :notes => content,
- :is_readed => false}
- @jfm = add_reply_adapter options
- @save_succ = true if @jfm.errors.empty?
- if @save_succ
- update_course_activity('JournalsForMessage',parent_id)
- update_user_activity('JournalsForMessage',parent_id)
- update_forge_activity('JournalsForMessage',parent_id)
- update_org_activity('JournalsForMessage',parent_id)
- update_principal_activity('JournalsForMessage',parent_id)
- (JournalsForMessage.find parent_id).update_attribute(:updated_on,Time.now)
- end
- respond_to do |format|
- # format.html {
- # if @jfm.errors.empty?
- # flash.now.notice = l(:label_feedback_success)
- # else
- # flash.now.errors = l(:label_feedback_fail)
- # end
- # render 'test/index'
- # }
- format.js {
- #@reply_type = params[:reply_type]
- @user_activity_id = params[:user_activity_id]
- @activity = JournalsForMessage.find(parent_id)
- @is_activity = params[:is_activity] if params[:is_activity]
- }
- end
-
- end
-
- def destroy
- @journal_destroyed = JournalsForMessage.find params[:object_id]
- if @journal_destroyed.destroy
- if @journal_destroyed.jour_type == "Bid"
- @bid = Bid.find(@journal_destroyed.jour_id)
- @jours_count = @bid.journals_for_messages.where('m_parent_id IS NULL').count
- elsif @journal_destroyed.jour_type == "Course"
- @course = Course.find @journal_destroyed.jour_id
- @jours_count = @course.journals_for_messages.where('m_parent_id IS NULL').count
- elsif @journal_destroyed.jour_type == "Principal"
- @user = User.find(@journal_destroyed.jour_id)
- @jours_count = @user.journals_for_messages.where('m_parent_id IS NULL').count
- @is_user = true
- @user_activity_id = params[:user_activity_id] if params[:user_activity_id]
- @is_activity = params[:is_activity].to_i if params[:is_activity]
- @activity = @journal_destroyed.parent if @journal_destroyed.parent
- unless @activity
- redirect_to feedback_path(@user)
- return
- end
- elsif @journal_destroyed.jour_type == 'HomeworkCommon'
- @homework = HomeworkCommon.find @journal_destroyed.jour_id
- if params[:user_activity_id]
- @user_activity_id = params[:user_activity_id]
- else
- @user_activity_id = -1
- end
- @is_in_course = params[:is_in_course].to_i
- @course_activity = params[:course_activity].to_i
- end
- respond_to do |format|
- format.js
- end
- end
- end
-
- def destroyJournal
- @journalP=JournalsForMessage.find(params[:object_id])
- @journalP.destroy
-
- @page = params[:page]
- @page = @page.to_i
- @project = Project.find params[:project_id]
- # Find the page of the requested reply
- @jours = @project.journals_for_messages.where('m_parent_id IS NULL').order('created_on DESC')
- @limit = 10
-
- offset = @jours.count(:conditions => ["#{JournalsForMessage.table_name}.id > ?", params[:r].to_i])
- page = 1 + offset / @limit
- if params[:r] && @page.nil?
- @page = page
- end
-
- if @page < 0
- @page = 1
- end
- if @page > page
- @page = page
- end
-
- @feedback_count = @jours.count
- @feedback_pages = Paginator.new @feedback_count, @limit, @page
- @offset ||= @feedback_pages.offset
- @jour = @jours[@offset, @limit]
- @state = false
- @base_courses_tag = @project.project_type
-
- respond_to do |format|
- format.js
- end
- end
-
- def new
- @jour = JournalsForMessage.find(params[:journal_id]) if params[:journal_id]
- if @jour
- user = @jour.user
- text = @jour.notes
- else
- user = @user
- text = []
- end
- # Replaces pre blocks with [...]
- text = text.to_s.strip.gsub(%r{<pre>((.|\s)*?)</pre>}m, '[...]')
- @content = "> #{ll(User.current.language, :text_user_wrote, user)}\n> "
- @content << text.gsub(/(\r?\n|\r\n?)/, "\n> ") + "\n\n"
-
- # @content << text.gsub(/(\r?\n|\r\n?)/, "\n> ") + "\n\n"
- # @content = "> #{ll(Setting.default_language, :text_user_wrote, user)}\n> "
-
- @id = user.id
- rescue ActiveRecord::RecordNotFound
- render_404
- end
-
- def more
- @jours = @user.journals_for_messages.reverse
- @limit = 10
- @feedback_count = @jours.count
- @feedback_pages = Paginator.new @feedback_count, @limit, params['page']
- @offset ||= @feedback_pages.offset
- @jour = @jours[@offset, @limit]
- @state = true
-
- respond_to do |format|
- format.html { redirect_to :back }
- format.js
- #format.api { render_api_ok }
- end
- end
-
- def back
- @jours = @user.journals_for_messages.reverse
- @limit = 10
- @feedback_count = @jours.count
- @feedback_pages = Paginator.new @feedback_count, @limit, params['page']
- @offset ||= @feedback_pages.offset
- @jour = @jours[@offset, @limit]
- @state = false
-
- respond_to do |format|
- format.html { redirect_to :back }
- format.js
- #format.api { render_api_ok }
- end
- end
-
- def add_project_respond
- user = User.current
- message = params[:new_form][:project_message]
- Project.add_jour(user, message)
-
- redirect_to project_feedback_url('trustie')
- # redirect_to signin_path
- end
-
- def leave_project_message
- user = User.current
- message = params[:new_form][:project_message]
- feedback = Project.add_new_jour(user, message, params[:id])
- if(feedback.errors.empty?)
- redirect_to project_feedback_url(params[:id]), notice: l(:label_feedback_success)
- else
- flash[:error] = feedback.errors.full_messages[0]
- redirect_to project_feedback_url(params[:id])
- end
- end
-
- #给用户留言
- def leave_user_message
- if User.current.logged?
- @user = User.find(params[:id])
- if params[:new_form][:content].size>0 && User.current.logged? && @user
- if params[:private] && params[:private] == '1'
- @user.journals_for_messages << JournalsForMessage.new(:user_id => User.current.id, :notes => params[:new_form][:content], :reply_id => 0, :status => true, :is_readed => false, :private => 1)
- else
- @user.add_jour(User.current, params[:new_form][:content])
- end
- end
- redirect_to feedback_path(@user)
- else
- render_403
- end
- end
-
- # add by nwb
- def leave_course_message
- user = User.current
- message = params[:new_form][:course_message]
- feedback = Course.add_new_jour(user, message, params[:id])
- if(feedback.errors.empty?)
- if params[:asset_id]
- ids = params[:asset_id].split(',')
- update_kindeditor_assets_owner ids,feedback[:id],OwnerTypeHelper::JOURNALSFORMESSAGE
- end
- redirect_to course_feedback_url(params[:id]), notice: l(:label_feedback_success)
- else
- flash[:error] = feedback.errors.full_messages[0]
- redirect_to course_feedback_url(params[:id])
- end
- end
-
- #作业的回复
- def leave_homework_message
- if User.current.logged?
- @user = User.current
- @homework_common = HomeworkCommon.find(params[:id]);
- if params[:homework_message].size>0 && User.current.logged? && @user
- feedback = HomeworkCommon.add_homework_jour(@user, params[:homework_message], params[:id])
- if (feedback.errors.empty?)
- if params[:asset_id]
- ids = params[:asset_id].split(',')
- update_kindeditor_assets_owner ids,feedback[:id],OwnerTypeHelper::JOURNALSFORMESSAGE
- end
- @homework_common.update_attributes(:updated_at => Time.now)
- update_course_activity(@homework_common.class,@homework_common.id)
- update_user_activity(@homework_common.class,@homework_common.id)
- update_org_activity(@homework_common.class,@homework_common.id)
- respond_to do |format|
- format.js{
- @user_activity_id = params[:user_activity_id]
- @is_in_course = params[:is_in_course]
- @course_activity = params[:course_activity]
- @homework_common_id = params[:homework_common_id]
- }
- end
- else
- flash[:error] = feedback.errors.full_messages[0]
- end
- end
- else
- render_403
- end
- end
-
- def add_brief_introdution
- user = User.current
- message = params[:new_form][:user_introduction]
- UserExtensions.introduction(user, message)
- redirect_to user_url(user.id)
- end
-
- private
-
- def find_user
- if params[:user_id]
- @user = User.find(params[:user_id])
- end
- rescue
- render_404
- end
-
- def obj_distinguish_url_origin
- #modify by nwb
- #添加对课程留言的支持
- referer = request.headers["Referer"]
- #referer = "http://forge.trustie.net/words/create_reply"
- obj_id = referer.match(%r(/([0-9]{1,})(/|\?|$)))[1]
- if referer.match(/project/)
- obj = Project.find_by_id(obj_id)
- elsif referer.match(/user/)
- obj = User.find_by_id(obj_id)
- elsif ( referer.match(/bids/) || referer.match(/calls/) )
- obj = Bid.find_by_id(obj_id)
- elsif ( referer.match(/contests/) || referer.match(/contests/) ) #new added
- obj = Contest.find_by_id(obj_id)
- elsif ( referer.match(/softapplications/) || referer.match(/softapplications/) ) #new added
- obj = Softapplication.find_by_id(obj_id)
- elsif ( referer.match(/homework_attach/) || referer.match(/homework_attach/) ) #new added
- obj = HomeworkAttach.find_by_id(obj_id)
- elsif referer.match(/course/)
- obj = Course.find_by_id(obj_id)
- else
- #raise "create reply obj unknow type.#{referer}"
- end
- obj
- end
-
- def add_reply_adapter options
- #modify by nwb
- #添加对课程留言的支持
- #留言回复应该不关系其所属的Class,而关心的是其所属的父留言
- obj = obj_distinguish_url_origin || User.find_by_id(2)
- if obj.kind_of? User
- obj.add_jour(nil, nil, nil, options)
- elsif obj.kind_of? Project
- Project.add_new_jour(nil, nil, obj.id, options)
- elsif obj.kind_of? Course
- Course.add_new_jour(nil, nil, obj.id, options)
- elsif obj.kind_of? Bid
- obj.add_jour(nil, nil, nil, options)
- elsif obj.kind_of? Contest
- obj.add_jour(nil, nil, obj.id, options) #new added
- elsif obj.kind_of? Softapplication
- obj.add_jour(nil, nil, obj.id, options) #new added
- elsif obj.kind_of? HomeworkAttach
- obj.add_jour(nil, nil, obj.id, options) #new added
- else
- raise "create reply obj unknow type.#{obj.class}"
- end
- end
- #######end of message
- end
|