socialforge/app/controllers/words_controller.rb

224 lines
7.1 KiB
Ruby
Raw Normal View History

2013-12-25 15:40:34 +08:00
# encoding: utf-8
2013-08-01 10:33:49 +08:00
#####leave message fq
class WordsController < ApplicationController
before_filter :find_user, :only => [:new, :create, :destroy, :more, :back]
def create
if params[:new_form][:user_message].size>0
unless params[:user_id].nil?
2013-08-15 09:54:08 +08:00
if params[:reference_content]
message = params[:new_form][:user_message] + "\n" + params[:reference_content]
2013-08-15 09:54:08 +08:00
else
message = params[:new_form][:user_message]
end
refer_user_id = params[:new_form][:reference_user_id].to_i
@user.add_jour(User.current, message, refer_user_id)
2013-12-09 08:36:31 +08:00
unless refer_user_id == 0 || refer_user_id == User.current.id
User.find(refer_user_id).add_jour(User.current, message, refer_user_id)
end
2013-08-25 20:19:44 +08:00
@user.count_new_jour
2013-08-01 10:33:49 +08:00
# if a_message.size > 5
# @message = a_message[-5, 5]
# else
# @message = a_message
# end
# @message_count = a_message.count
end
end
2013-12-26 08:43:16 +08:00
@jours = @user.journals_for_messages.where('m_parent_id IS NULL').reverse
@limit = 10
@feedback_count = @jours.count
@feedback_pages = Paginator.new @feedback_count, @limit, params['page']
@offset ||= @feedback_pages.offset
@jour = @jours[@offset, @limit]
2013-08-25 20:19:44 +08:00
2013-08-01 10:33:49 +08:00
respond_to do |format|
# format.html { redirect_to_referer_or {render :text => 'Watcher added.', :layout => true}}
format.js
#format.api { render_api_ok }
end
2013-08-01 10:33:49 +08:00
end
2013-12-30 17:13:44 +08:00
2013-08-01 10:33:49 +08:00
2013-12-24 16:42:56 +08:00
def create_reply
2014-01-03 10:33:06 +08:00
# 这里是创建回复所使用的方法,此方法只针对回复,每一个新的留言并不在此方法管理范围内。
# 由于多个地方用到了留言而之前的表设计也有jour_type/jour_id这类信息
# 所以在方法 add_reply_adapter 中判断所有调用此方法的来源页面,
# 为了保证兼容以往所有的代码,保证以往的方法可以调用,在返回页面中都做了各式各样的判断。
# 页面保证 render new_respond/journal_reply
# 修改 add_reply_adapter 中可以确保留言创建成功
# 删除留言功能要调用destroy也记得在destroy.js中修改
2013-12-26 08:39:43 +08:00
# deny api. api useless
2013-12-25 10:09:21 +08:00
parent_id = params[:reference_id]
author_id = User.current.id
reply_user_id = params[:reference_user_id]
2013-12-25 22:21:16 +08:00
reply_id = params[:reference_message_id] # 暂时不实现
2013-12-25 10:09:21 +08:00
content = params[:user_notes]
2013-12-25 15:40:34 +08:00
options = {:user_id => author_id,
: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
2013-12-25 10:09:21 +08:00
2013-12-24 16:42:56 +08:00
respond_to do |format|
2013-12-25 22:21:16 +08:00
# 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{
@save_succ = true if @jfm.errors.empty?
2013-12-25 15:40:34 +08:00
}
2013-12-24 16:42:56 +08:00
end
end
2013-08-01 10:33:49 +08:00
def destroy
2013-12-26 20:22:19 +08:00
@journal_destroyed = JournalsForMessage.delete_message(params[:object_id])
2013-08-01 10:33:49 +08:00
respond_to do |format|
format.js
#format.api { render_api_ok }
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, '[...]')
2013-10-19 15:39:53 +08:00
@content = "> #{ll(User.current.language, :text_user_wrote, user)}\n> "
2013-08-01 10:33:49 +08:00
@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
2013-08-01 10:33:49 +08:00
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]
2013-08-01 10:33:49 +08:00
@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]
2013-08-01 10:33:49 +08:00
@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_path('trustie')
# redirect_to signin_path
end
def leave_project_message
user = User.current
message = params[:new_form][:project_message]
2013-12-21 10:15:41 +08:00
feedback = Project.add_new_jour(user, message, params[:id])
if(feedback.errors.empty?)
redirect_to project_feedback_path(params[:id]), notice: l(:label_feedback_success)
else
flash[:error] = feedback.errors.full_messages[0]
redirect_to project_feedback_path(params[:id])
end
end
2013-09-14 17:22:44 +08:00
def add_brief_introdution
user = User.current
message = params[:new_form][:user_introduction]
UserExtensions.introduction(user, message)
redirect_to user_path(user.id)
end
2013-08-01 10:33:49 +08:00
private
def find_user
if params[:user_id]
@user = User.find(params[:user_id])
end
rescue
render_404
end
2013-12-30 17:13:44 +08:00
def obj_distinguish_url_origin
referer = request.headers["Referer"]
2014-01-02 17:29:46 +08:00
obj_id = referer.match(%r(/([0-9]{1,})(/|$)))[1]
2013-12-30 17:13:44 +08:00
if referer.match(/project/)
obj = Project.find_by_id(obj_id)
elsif referer.match(/user/)
obj = User.find_by_id(obj_id)
2014-01-02 17:29:46 +08:00
elsif ( referer.match(/bids/) || referer.match(/calls/) )
obj = Bid.find_by_id(obj_id)
2014-04-03 17:26:56 +08:00
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)
2013-12-30 17:13:44 +08:00
else
raise 'create reply obj unknow type.'
end
obj
end
def add_reply_adapter options
obj = obj_distinguish_url_origin
2013-12-30 17:13:44 +08:00
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)
2014-01-02 17:29:46 +08:00
elsif obj.kind_of? Bid
obj.add_jour(nil, nil, nil, options)
2014-04-03 17:26:56 +08:00
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
2013-12-30 17:13:44 +08:00
else
raise 'create reply obj unknow type.'
end
end
2013-08-01 10:33:49 +08:00
#######end of message
end