' + content_tag('p', link_to_issue(ancestor, :project => (issue.project_id != ancestor.project_id)))
end
- s << '
'
+ s << '
'
subject = h(issue.subject)
if issue.is_private?
subject = content_tag('span', l(:field_is_private), :class => 'private') + ' ' + subject
diff --git a/app/helpers/project_score_helper.rb b/app/helpers/project_score_helper.rb
index 6cf7e7767..07b0ee921 100644
--- a/app/helpers/project_score_helper.rb
+++ b/app/helpers/project_score_helper.rb
@@ -65,26 +65,34 @@ module ProjectScoreHelper
b_m_num * 2
end
- #项目得分
+ #计算项目得分
def project_scores project
result = (issue_score project) + (news_score project) + (document_score project) + (changesets_score project) + (board_message_score project)
- pss = ProjectStatus.where("project_id = '#{project.id}'")
+ pss = ProjectScore.where("project_id = '#{project.id}'")
if pss.nil? || pss.count == 0
- ps = ProjectStatus.new
- ps.grade = result
+ ps = ProjectScore.new
+ ps.score = result
ps.project = project
- ps.watchers_count = project.watcher_users.count
- ps.changesets_count = project.changesets.count
ps.save
else
ps = pss.first
- ps.grade = result
- if ps.changesets_count.nil? || ps.changesets_count == ""
- ps.changesets_count = project.changesets.count
- end
+ ps.score = result
ps.save
end
result
end
+ #读取项目得分
+ def red_project_scores project
+ grade = 0
+ pss = ProjectScore.where("project_id = '#{project.id}'")
+ if pss.nil? || pss.count == 0
+ grade
+ else
+ ps = pss.first
+ grade = ps.score
+ grade
+ end
+ end
+
end
\ No newline at end of file
diff --git a/app/helpers/user_score_helper.rb b/app/helpers/user_score_helper.rb
index dc43de32a..38f4f91f0 100644
--- a/app/helpers/user_score_helper.rb
+++ b/app/helpers/user_score_helper.rb
@@ -445,7 +445,7 @@ FROM `users` where id = #{user.id}")
def messges_for_issue_num(user,project=nil)
if project.nil?
- Journal.includes(:user).where("user_id = '#{user.id}' and notes != '' and notes is not null").all.count
+ Journal.includes(:user).where("user_id = '#{user.id}' and notes is not null and notes != ''").all.count
else
Journal.includes(:user).joins(:issue).where("#{Journal.table_name}.user_id = '#{user.id}' and #{Issue.table_name}.project_id = '#{project.id}' and #{Journal.table_name}.notes != '' and #{Journal.table_name}.notes is not null").all.count
end
@@ -475,6 +475,16 @@ FROM `users` where id = #{user.id}")
end
+ def issues_status_score(user,project=nil)
+ if project.nil?
+ #Journal.joins(:details, :user).where("#{JournalDetail.table_name}.prop_key = 'status_id' and #{User.table_name}.id = '#{user.id}'").count
+ User.find_by_sql("SELECT users.id,(SELECT COUNT(*) FROM journals JOIN journal_details on journals.id = journal_details.journal_id WHERE journal_details.prop_key = 'status_id' and journals.user_id = users.id) AS m_score FROM users WHERE users.id = '#{user.id}'")
+ else
+ #Journal.joins(:issue,:details,:user).where("#{Issue.table_name}.project_id = '#{project.id}' and #{JournalDetail.table_name}.prop_key = 'status_id' and #{User.table_name}.id = '#{user.id}'").count
+ User.find_by_sql("SELECT users.id,(SELECT COUNT(*) FROM journals JOIN journal_details on journals.id = journal_details.journal_id JOIN issues ON issues.id = journals.journalized_id and journalized_type = 'Issue' WHERE journal_details.prop_key = 'status_id' and journals.user_id = users.id and issues.project_id = '#{project.id}') AS m_score FROM users WHERE users.id = '#{user.id}'")
+ end
+ end
+
#更新对留言的回复数量
def update_replay_for_message(user,type,project=nil)
option_number = get_option_number(user,type)
@@ -491,6 +501,14 @@ FROM `users` where id = #{user.id}")
end
+ def replay_for_message_score(user,project=nil)
+ if project.nil?
+ User.find_by_sql("SELECT users.id,(SELECT COUNT(*) From journals_for_messages WHERE m_parent_id IS NOT NULL and user_id = users.id and jour_type = 'Project') as m_score FROM users WHERE users.id = '#{user.id}'")
+ else
+ User.find_by_sql("SELECT users.id,(SELECT COUNT(*) From journals_for_messages WHERE m_parent_id IS NOT NULL and user_id = users.id and jour_type = 'Project' and jour_id = '#{project.id}') as m_score FROM users WHERE users.id = '#{user.id}'")
+ end
+ end
+
#更新对帖子的回复数量
def update_replay_for_memo(user,type,project=nil)
option_number = get_option_number(user,type)
@@ -506,6 +524,14 @@ FROM `users` where id = #{user.id}")
end
end
+ def replay_for_memo_score(user,project=nil)
+ if project.nil?
+ User.find_by_sql("SELECT users.id,(SELECT COUNT(*) FROM messages JOIN boards on messages.board_id = boards.id WHERE messages.parent_id IS NOT NULL AND messages.author_id = users.id AND boards.project_id != -1) FROM users WHERE users.id = #{user.id}")
+ else
+ User.find_by_sql("SELECT users.id,(SELECT COUNT(*) FROM messages JOIN boards on messages.board_id = boards.id WHERE messages.parent_id IS NOT NULL AND messages.author_id = users.id AND boards.project_id = #{project.id}) FROM users WHERE users.id = #{user.id}")
+ end
+ end
+
#更新被关注的人数
def update_follow(user,type)
option_number = get_option_number(user,type)
@@ -517,6 +543,10 @@ FROM `users` where id = #{user.id}")
Watcher.includes(:watchable).where("watchable_type = 'Principal' and watchable_id = '#{user.id}'").count
end
+ def follow_score(user)
+ User.find_by_sql("SELECT users.id, (SELECT COUNT(*) * 2 FROM #{Watcher.table_name} WHERE watchable_type = 'Principal' and watchable_id = '#{user.id}') FROM users WHERE users.id = '#{user.id}'")
+ end
+
#更新帖子踩各项数量
def update_tread(user,type,project=nil)
option_number = get_option_number(user,type)
@@ -542,7 +572,7 @@ FROM `users` where id = #{user.id}")
end
target_user = obj.author
level = UserLevels.get_level(pt.user)#pt.user.get_level
- project = pt.project
+ #project = pt.project
if level == 1 && target_user.id == user.id
result << pt
elsif level == 2 && target_user.id == user.id
@@ -560,7 +590,7 @@ FROM `users` where id = #{user.id}")
result2 = []
pts.each do |pt|
obj = PraiseTread.find_object_by_type_and_id(pt.praise_tread_object_type, pt.praise_tread_object_id)
- if obj.nil?
+ if obj.nil? || (pt.praise_tread_object_type == "Issue" && obj.project.nil?) || (pt.praise_tread_object_type == "Message" && obj.board.nil?) || (pt.praise_tread_object_type == "Message" && obj.board.project.nil?)
next
end
if !(pt.praise_tread_object_type == "Issue" && obj.project.id == project.id) && !(pt.praise_tread_object_type == "Message" && obj.board.project.id == project.id)
@@ -568,7 +598,7 @@ FROM `users` where id = #{user.id}")
end
target_user = obj.author
level = UserLevels.get_level(pt.user)#pt.user.get_level
- project = pt.project
+ #project = pt.project
if level == 1 && target_user.id == user.id
result << pt
elsif level == 2 && target_user.id == user.id
@@ -600,7 +630,7 @@ FROM `users` where id = #{user.id}")
result2 = []
pts.each do |pt|
obj = PraiseTread.find_object_by_type_and_id(pt.praise_tread_object_type, pt.praise_tread_object_id)
- if obj.nil?
+ if obj.nil? || (pt.praise_tread_object_type == "Issue" && obj.project.nil?) || (pt.praise_tread_object_type == "Message" && obj.board.nil?) || (pt.praise_tread_object_type == "Message" && obj.board.project.nil?)
next
end
if !(pt.praise_tread_object_type == "Issue" && obj.project.id == project.id) && !(pt.praise_tread_object_type == "Message" && obj.board.project.id == project.id)
@@ -608,7 +638,7 @@ FROM `users` where id = #{user.id}")
end
target_user = obj.author
level = UserLevels.get_level(pt.user)#pt.user.get_level
- project = pt.project
+ #project = pt.project
if level == 1 && target_user.id == user.id
result << pt
elsif level == 2 && target_user.id == user.id
diff --git a/app/helpers/welcome_helper.rb b/app/helpers/welcome_helper.rb
index 48d590c4b..4964e6cd2 100644
--- a/app/helpers/welcome_helper.rb
+++ b/app/helpers/welcome_helper.rb
@@ -428,13 +428,13 @@ module WelcomeHelper
resultSet.take(limit)
end
- def sort_project_by_hot_rails project_type=0, order_by='grade DESC', limit=15
+ def sort_project_by_hot_rails project_type=0, order_by='score DESC', limit=15
# Project.find_by_sql("
# SELECT p.id, p.name, p.description, p.identifier, t.project_id
# FROM projects AS p LEFT OUTER JOIN (
# SELECT project_id,grade FROM project_statuses
# WHERE project_type = #{project_type} ORDER BY #{order_by} LIMIT #{limit} ) AS t ON p.id = t.project_id ")
- Project.visible.joins(:project_status).where("#{Project.table_name}.project_type = ?", project_type).order(order_by).limit(limit).all
+ Project.visible.joins(:project_status).joins("LEFT JOIN #{ProjectScore.table_name} ON #{Project.table_name}.id = #{ProjectScore.table_name}.project_id").where("#{Project.table_name}.project_type = ?", project_type).order(order_by).limit(limit).all
end
def sort_bid_by_hot_rails reward_type, limit = 10
diff --git a/app/helpers/wiki_helper.rb b/app/helpers/wiki_helper.rb
index c6cb3b39d..8278ce035 100644
--- a/app/helpers/wiki_helper.rb
+++ b/app/helpers/wiki_helper.rb
@@ -40,4 +40,14 @@ module WikiHelper
link_to(h(parent.pretty_title), {:controller => 'wiki', :action => 'show', :id => parent.title, :project_id => parent.project, :version => nil})
})
end
+
+ def wiki_content_format wiki
+ text = wiki.text.html_safe
+ text = parse_non_pre_blocks(text, wiki, text) do |text|
+ [:parse_inline_attachments, :parse_wiki_links, :parse_redmine_links].each do |method_name|
+ send method_name, text, project, wiki, attr, only_path, options
+ end
+ end
+ text
+ end
end
diff --git a/app/models/attachment.rb b/app/models/attachment.rb
index 67e46eb5e..bcd8852f5 100644
--- a/app/models/attachment.rb
+++ b/app/models/attachment.rb
@@ -26,6 +26,8 @@ class Attachment < ActiveRecord::Base
belongs_to :author, :class_name => "User", :foreign_key => "author_id"
belongs_to :attachmentstype, :foreign_key => "attachtype",:primary_key => "id"
+ include UserScoreHelper
+
validates_presence_of :filename, :author
validates_length_of :filename, :maximum => 255
validates_length_of :disk_filename, :maximum => 255
@@ -68,8 +70,9 @@ class Attachment < ActiveRecord::Base
@@thumbnails_storage_path = File.join(Rails.root, "tmp", "thumbnails")
before_save :files_to_final_location
- before_save :be_user_score # user_score
- after_destroy :delete_from_disk
+ after_create :be_user_score # user_score
+ after_update :be_user_score
+ after_destroy :delete_from_disk,:down_user_score
# add by nwb
# 获取所有可公开的资源文件列表
@@ -504,9 +507,16 @@ class Attachment < ActiveRecord::Base
type = self.container_type
types = %w|Document News Version Project Issue Message WikiPage|
if types.include?(type)
- UserScore.project(:push_file, User.current,self, { attachment_id: self.id })
+ #UserScore.project(:push_file, self.author,self, { attachment_id: self.id })
+
end
end
+ update_attachment(self.author,1)
+ end
+
+ #删除附件时重新统计用户的附件数量得分
+ def down_user_score
+ update_attachment(self.author,1)
end
end
diff --git a/app/models/changeset.rb b/app/models/changeset.rb
index a56dee691..38bdd0cc8 100644
--- a/app/models/changeset.rb
+++ b/app/models/changeset.rb
@@ -18,7 +18,7 @@
class Changeset < ActiveRecord::Base
belongs_to :repository
belongs_to :user
-
+ include UserScoreHelper
#after_save :be_user_score # user_score
has_many :filechanges, :class_name => 'Change', :dependent => :delete_all
@@ -64,6 +64,8 @@ class Changeset < ActiveRecord::Base
}
after_create :scan_for_issues,:be_user_score # user_score
+ after_update :be_user_score
+ after_destroy :down_user_score
before_create :before_create_cs
# fq
@@ -305,6 +307,13 @@ class Changeset < ActiveRecord::Base
UserScore.project(:push_code, self.user,self, { changeset_id: self.id })
#更新用户等级
UserLevels.update_user_level(self.user)
+ update_changeset(self.user,1)
+ end
+
+ #积分刷新
+ def down_user_score
+ UserLevels.update_user_level(self.user)
+ update_changeset(self.user,1)
end
end
diff --git a/app/models/document.rb b/app/models/document.rb
index 1467903b0..42692bc22 100644
--- a/app/models/document.rb
+++ b/app/models/document.rb
@@ -20,9 +20,9 @@ class Document < ActiveRecord::Base
belongs_to :project
belongs_to :user
belongs_to :category, :class_name => "DocumentCategory", :foreign_key => "category_id"
-
- after_create :be_user_score # user_score
-
+ include UserScoreHelper
+ after_save :be_user_score # user_score
+ after_destroy :down_user_score
acts_as_attachable :delete_permission => :delete_documents
@@ -68,5 +68,10 @@ class Document < ActiveRecord::Base
# update user score
def be_user_score
UserScore.project(:push_document, self.user,self,{ document_id: self.id })
+ update_document(self.user,1)
+ end
+
+ def down_user_score
+ update_document(self.user,1)
end
end
diff --git a/app/models/issue.rb b/app/models/issue.rb
index 1978f5405..68afe21a2 100644
--- a/app/models/issue.rb
+++ b/app/models/issue.rb
@@ -79,7 +79,7 @@ class Issue < ActiveRecord::Base
# fq
after_create :act_as_activity,:be_user_score_new_issue
after_update :be_user_score
- before_destroy :down_user_score
+ after_destroy :down_user_score
# after_create :be_user_score
# end
@@ -138,10 +138,10 @@ class Issue < ActiveRecord::Base
nil
when 'default'
user_ids = [user.id] + user.groups.map(&:id)
- "(#{table_name}.is_private = #{connection.quoted_false} OR #{table_name}.author_id = #{user.id} OR #{table_name}.assigned_to_id IN (#{user_ids.join(',')}))"
+ "(#{table_name}.is_private = #{connection.quoted_false}) OR (#{table_name}.author_id = #{user.id} OR #{table_name}.tracker_id IN (#{user_ids.join(',')}) OR #{table_name}.assigned_to_id IN (#{user_ids.join(',')}))"
when 'own'
user_ids = [user.id] + user.groups.map(&:id)
- "(#{table_name}.author_id = #{user.id} OR #{table_name}.assigned_to_id IN (#{user_ids.join(',')}))"
+ "(#{table_name}.author_id = #{user.id} OR #{table_name}.tracker_id IN (#{user_ids.join(',')}) OR #{table_name}.assigned_to_id IN (#{user_ids.join(',')}))"
else
'1=0'
end
@@ -159,9 +159,9 @@ class Issue < ActiveRecord::Base
when 'all'
true
when 'default'
- !self.is_private? || (self.author == user || user.is_or_belongs_to?(assigned_to))
- when 'own'
- self.author == user || user.is_or_belongs_to?(assigned_to)
+ (!self.is_private? ||self.tracker == user) || (self.author == user || user.is_or_belongs_to?(assigned_to))
+ when 'own'
+ self.tracker == user || self.author == user || user.is_or_belongs_to?(assigned_to)
else
false
end
@@ -1009,9 +1009,10 @@ class Issue < ActiveRecord::Base
s << ' overdue' if overdue?
s << ' child' if child?
s << ' parent' unless leaf?
- s << ' private' if is_private?
+ #s << ' private' if is_private?
s << ' created-by-me' if User.current.logged? && author_id == User.current.id
s << ' assigned-to-me' if User.current.logged? && assigned_to_id == User.current.id
+ s << ' tracker-id' if User.current.logged? && tracker_id == User.current.id
s
end
@@ -1508,35 +1509,38 @@ class Issue < ActiveRecord::Base
def be_user_score
#缺陷完成度更新
if self.done_ratio_changed?
- UserScore.project(:update_issue_ratio, User.current,self,{ issue_id: self.id })
- #update_issue_done_ratio(User.current,1)
+ UserScore.project(:update_issue_ratio, self.author,self,{ issue_id: self.id })
+ #update_issue_done_ratio(self.author,1)
end
#缺陷状态更改
if self.status_id_changed?
- #协同得分
- UserScore.joint(:change_issue_status, User.current,nil,self, {issue_id: self.id})
- #update_issues_status(self.author , 1)
+ #协同得分
+ UserScore.joint(:change_issue_status, self.author,nil,self, {issue_id: self.id})
+ #update_issues_status(self.author , 1)
end
end
#发布缺陷
def be_user_score_new_issue
- UserScore.project(:post_issue, User.current,self, { issue_id: self.id })
+ UserScore.project(:post_issue, self.author,self, { issue_id: self.id })
update_post_issue(self.author,1)
end
def down_user_score
#缺陷完成度更新
- if self.done_ratio_changed?
- UserScore.project(:update_issue_ratio, User.current,self,{ issue_id: self.id })
- #update_issue_done_ratio(User.current,1)
- end
+ #if self.done_ratio_changed?
+ # UserScore.project(:update_issue_ratio, User.current,self,{ issue_id: self.id })
+ # update_issue_done_ratio(User.current,1)
+ #end
#缺陷状态更改
- if self.status_id_changed?
- #协同得分
- UserScore.joint(:change_issue_status, User.current,nil,self, {issue_id: self.id})
- #update_issues_status(self.author , 1)
- end
+ #if self.status_id_changed?
+ # #协同得分
+ # UserScore.joint(:change_issue_status, User.current,nil,self, {issue_id: self.id})
+ # update_issues_status(self.author , 1)
+ #end
+ update_post_issue(self.author,1)
+ update_issue_done_ratio(User.current,1)
+ update_issues_status(self.author , 1)
end
diff --git a/app/models/journal.rb b/app/models/journal.rb
index c08d8d630..0fe2b804b 100644
--- a/app/models/journal.rb
+++ b/app/models/journal.rb
@@ -46,11 +46,11 @@ class Journal < ActiveRecord::Base
before_create :split_private_notes
# fq
- after_create :act_as_activity,:be_user_score
+ after_save :act_as_activity,:be_user_score
# end
#after_destroy :down_user_score
#before_save :be_user_score
- before_destroy :down_user_score
+ after_destroy :down_user_score
scope :visible, lambda {|*args|
user = args.shift || User.current
@@ -162,8 +162,9 @@ class Journal < ActiveRecord::Base
if !self.notes.nil? && self.notes.gsub(' ','') != ''
#协同得分加分
UserScore.joint(:post_issue_message, self.user,self.issue.author,self, { message_id: self.id })
+ update_messges_for_issue(self.user,1)
end
- #update_messges_for_issue(User.current,1)
+
end
# 减少用户分数 -by zjc
def down_user_score
@@ -171,7 +172,8 @@ class Journal < ActiveRecord::Base
if !self.notes.nil? && self.notes.gsub(' ','') != ''
#协同得分减分
UserScore.joint(:delete_issue_message, self.user,self.issue.author,self, { message_id: self.id })
+ update_messges_for_issue(self.user,1)
end
- #update_messges_for_issue(User.current,1)
+
end
end
diff --git a/app/models/journal_detail.rb b/app/models/journal_detail.rb
index c2b0aaa2a..82a63b028 100644
--- a/app/models/journal_detail.rb
+++ b/app/models/journal_detail.rb
@@ -19,9 +19,9 @@ class JournalDetail < ActiveRecord::Base
include UserScoreHelper
belongs_to :journal
before_save :normalize_values
- after_create :be_user_score
- #after_destroy :down_user_score
- before_destroy :down_user_score
+ after_save :be_user_score
+ after_destroy :down_user_score
+ #before_destroy :down_user_score
private
def normalize_values
@@ -45,23 +45,21 @@ class JournalDetail < ActiveRecord::Base
def be_user_score
#更新缺陷完成度
if self.prop_key == 'done_ratio'
- #update_issue_done_ratio(User.current,1)
+ update_issue_done_ratio(self.journal.user,1)
#更新缺陷状态
elsif self.prop_key == 'status_id'
- #update_issues_status(User.current , 1)
+ update_issues_status(self.journal.user , 1)
end
end
#更新用户分数
def down_user_score
- #update_issue_done_ratio(User.current,1)
- #update_issues_status(User.current , 1)
if self.prop_key == 'done_ratio'
-
+ update_issue_done_ratio(self.journal.user,1)
#更新缺陷状态
elsif self.prop_key == 'status_id'
- UserScore.joint(:delete_issue_status, self.journal.user,nil,self, {issue_id: self.id})
+ update_issues_status(self.journal.user, 1)
end
end
diff --git a/app/models/journals_for_message.rb b/app/models/journals_for_message.rb
index c79004794..dd687f263 100644
--- a/app/models/journals_for_message.rb
+++ b/app/models/journals_for_message.rb
@@ -54,10 +54,10 @@ class JournalsForMessage < ActiveRecord::Base
validates :notes, presence: true
after_create :act_as_activity #huang
- after_create :reset_counters!,:be_user_score
+ after_create :reset_counters!
after_destroy :reset_counters!
- #before_save :be_user_score
- #before_destroy :down_user_score
+ after_save :be_user_score
+ after_destroy :down_user_score
# default_scope { where('m_parent_id IS NULL') }
@@ -142,8 +142,8 @@ class JournalsForMessage < ActiveRecord::Base
#新建了留言回复
if self.reply_id != 0
#协同得分加分
- UserScore.joint(:reply_message, User.current,User.find(self.reply_id),self, { journals_for_messages_id: self.id })
- update_replay_for_message(User.current,1)
+ UserScore.joint(:reply_message, self.user,User.find(self.reply_id),self, { journals_for_messages_id: self.id })
+ update_replay_for_message(self.user,1)
end
end
# 更新用户分数 -by zjc
@@ -151,7 +151,8 @@ class JournalsForMessage < ActiveRecord::Base
#删除了留言回复
if self.reply_id != 0
#协同得分减分
- UserScore.joint(:reply_message_delete, User.current,User.find(self.reply_id), { journals_for_messages_id: self.id })
+ UserScore.joint(:reply_message_delete, self.user,User.find(self.reply_id), { journals_for_messages_id: self.id })
+ update_replay_for_message(self.user,1)
end
end
end
diff --git a/app/models/memo.rb b/app/models/memo.rb
index 1d191e39d..5a909f782 100644
--- a/app/models/memo.rb
+++ b/app/models/memo.rb
@@ -14,6 +14,7 @@ class Memo < ActiveRecord::Base
acts_as_tree :counter_cache => :replies_count, :order => "#{Memo.table_name}.created_at ASC"
acts_as_attachable
has_many :user_score_details, :class_name => 'UserScoreDetails',:as => :score_changeable_obj
+ has_many :praise_tread, as: :praise_tread_object, dependent: :destroy
belongs_to :last_reply, :class_name => 'Memo', :foreign_key => 'last_reply_id'
# acts_as_searchable :column => ['subject', 'content'],
# #:include => { :forum => :p}
diff --git a/app/models/message.rb b/app/models/message.rb
index a57797af1..647a665dc 100644
--- a/app/models/message.rb
+++ b/app/models/message.rb
@@ -21,6 +21,8 @@ class Message < ActiveRecord::Base
belongs_to :board
belongs_to :author, :class_name => 'User', :foreign_key => 'author_id'
+ has_many :praise_tread, as: :praise_tread_object, dependent: :destroy
+
acts_as_tree :counter_cache => :replies_count, :order => "#{Message.table_name}.created_on ASC"
acts_as_attachable
belongs_to :last_reply, :class_name => 'Message', :foreign_key => 'last_reply_id'
@@ -59,12 +61,11 @@ class Message < ActiveRecord::Base
after_create :add_author_as_watcher, :reset_counters!
after_update :update_messages_board
- after_destroy :reset_counters!#,:down_user_score
+ after_destroy :reset_counters!,:down_user_score
# fq
after_create :act_as_activity,:be_user_score
#before_save :be_user_score
- before_destroy :down_user_score
# end
scope :visible, lambda {|*args|
@@ -151,11 +152,11 @@ class Message < ActiveRecord::Base
#新建message且无parent的为发帖
if self.parent_id.nil? && !self.board.project.nil?
UserScore.joint(:post_message, self.author,nil,self, { message_id: self.id })
- #update_memo_number(User.current,1)
+ update_memo_number(User.current,1)
#新建message且有parent的为回帖
elsif !self.parent_id.nil? && !self.board.project.nil?
UserScore.joint(:reply_posting, self.author,self.parent.author,self, { message_id: self.id })
- #update_replay_for_memo(User.current,1)
+ update_replay_for_memo(User.current,1)
end
end
@@ -163,10 +164,10 @@ class Message < ActiveRecord::Base
def down_user_score
if self.parent_id.nil? && !self.board.project.nil?
UserScore.joint(:delete_message, self.author,nil,self, { message_id: self.id })
+ update_memo_number(User.current,1)
elsif !self.parent_id.nil? && !self.board.project.nil?
UserScore.joint(:reply_deleting, self.author,self.parent.author,self, { message_id: self.id })
+ update_replay_for_memo(User.current,1)
end
- #update_memo_number(User.current,1)
- #update_replay_for_memo(User.current,1)
end
end
diff --git a/app/models/praise_tread.rb b/app/models/praise_tread.rb
index 98253d837..0a7282d26 100644
--- a/app/models/praise_tread.rb
+++ b/app/models/praise_tread.rb
@@ -3,7 +3,8 @@ class PraiseTread < ActiveRecord::Base
belongs_to :user
belongs_to :praise_tread_object, polymorphic: true
after_create :be_user_score
-
+ after_destroy :down_user_score
+ include UserScoreHelper
def self.find_object_by_type_and_id(type,id)
@obj = nil
case type
@@ -28,7 +29,7 @@ class PraiseTread < ActiveRecord::Base
# 获取裁定对象为Message时Message所属的项目或课程
def project
project = nil
- if self.praise_tread_object_type == 'Message'
+ if self.praise_tread_object_type == 'Message' || self.praise_tread_object_type == 'Issues'
obj = PraiseTread.find_object_by_type_and_id(self.praise_tread_object_type,praise_tread_object_id)
project = obj.project
end
@@ -38,15 +39,37 @@ class PraiseTread < ActiveRecord::Base
#更新用户分数 - by zjc
def be_user_score
#踩贴吧或讨论区帖子
- if self.praise_or_tread == 0 && (self.praise_tread_object_type == 'Memo' || self.praise_tread_object_type == 'Message')
+ if self.praise_or_tread == 0 && (self.praise_tread_object_type == 'Issue' || self.praise_tread_object_type == 'Message')
obj = PraiseTread.find_object_by_type_and_id(self.praise_tread_object_type,praise_tread_object_id)
target_user = obj.author
UserScore.skill(:treaded_by_user, User.current,target_user,self, { praise_tread_id: self.id })
+ update_tread(User.current,1)
+ update_tread(target_user,1)
#顶贴吧或讨论区帖子
- elsif self.praise_or_tread == 1 && (self.praise_tread_object_type == 'Memo' || self.praise_tread_object_type == 'Message')
+ elsif self.praise_or_tread == 1 && (self.praise_tread_object_type == 'Issue' || self.praise_tread_object_type == 'Message')
obj = PraiseTread.find_object_by_type_and_id(self.praise_tread_object_type,praise_tread_object_id)
target_user = obj.author
UserScore.skill(:praised_by_user, User.current,target_user,self,{ praise_tread_id: self.id })
+ update_praise(target_user,1)
+ #更新用户等级
+ UserLevels.update_user_level(target_user)
+ end
+ end
+
+ def down_user_score
+ #踩贴吧或讨论区帖子
+ if self.praise_or_tread == 0 && (self.praise_tread_object_type == 'Issue' || self.praise_tread_object_type == 'Message')
+ obj = PraiseTread.find_object_by_type_and_id(self.praise_tread_object_type,praise_tread_object_id)
+ target_user = obj.author
+ #UserScore.skill(:treaded_by_user, User.current,target_user,self, { praise_tread_id: self.id })
+ update_tread(User.current,1)
+ update_tread(target_user,1)
+ #顶贴吧或讨论区帖子
+ elsif self.praise_or_tread == 1 && (self.praise_tread_object_type == 'Issue' || self.praise_tread_object_type == 'Message')
+ obj = PraiseTread.find_object_by_type_and_id(self.praise_tread_object_type,praise_tread_object_id)
+ target_user = obj.author
+ #UserScore.skill(:praised_by_user, User.current,target_user,self,{ praise_tread_id: self.id })
+ update_praise(target_user,1)
#更新用户等级
UserLevels.update_user_level(target_user)
end
diff --git a/app/models/project_score.rb b/app/models/project_score.rb
new file mode 100644
index 000000000..a2e229f50
--- /dev/null
+++ b/app/models/project_score.rb
@@ -0,0 +1,4 @@
+class ProjectScore < ActiveRecord::Base
+ attr_accessible :project_id, :score
+ belongs_to :project, foreign_key: :project_id
+end
diff --git a/app/models/watcher.rb b/app/models/watcher.rb
index e2e255a1e..420bd0d84 100644
--- a/app/models/watcher.rb
+++ b/app/models/watcher.rb
@@ -16,6 +16,7 @@
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
class Watcher < ActiveRecord::Base
+ include UserScoreHelper
belongs_to :watchable, :polymorphic => true
belongs_to :user
#Added by nie
@@ -23,7 +24,7 @@ class Watcher < ActiveRecord::Base
has_one :users_status
#end
after_create :be_user_score
- before_destroy :down_user_score
+ after_destroy :down_user_score
validates_presence_of :user
validates_uniqueness_of :user_id, :scope => [:watchable_type, :watchable_id]
@@ -79,6 +80,7 @@ class Watcher < ActiveRecord::Base
if self.watchable_type == 'Principal'
#影响力得分
UserScore.influence(:followed_by, self.user,self.watchable,self, { watcher_id: self.id })
+ update_follow(self.watchable,1)
end
end
@@ -87,6 +89,7 @@ class Watcher < ActiveRecord::Base
#取消关注
if self.watchable_type == 'Principal'
UserScore.influence(:cancel_followed, self.user,self.watchable,self, { watcher_id: self.id })
+ update_follow(self.watchable,1)
end
end
diff --git a/app/views/documents/show.html.erb b/app/views/documents/show.html.erb
index 2964a06ba..45f54ad9b 100644
--- a/app/views/documents/show.html.erb
+++ b/app/views/documents/show.html.erb
@@ -9,7 +9,7 @@
<% end %>
-
<%=h @document.title %>
+
<%=h @document.title %>
<%#=h @document.category.name %>
<%= format_date @document.created_on %>
diff --git a/app/views/messages/_project_show.html.erb b/app/views/messages/_project_show.html.erb
index 66027e6ec..0bae1a761 100644
--- a/app/views/messages/_project_show.html.erb
+++ b/app/views/messages/_project_show.html.erb
@@ -161,8 +161,8 @@
diff --git a/app/views/projects/_member_list.html.erb b/app/views/projects/_member_list.html.erb
index cdf6c459d..15a02df93 100644
--- a/app/views/projects/_member_list.html.erb
+++ b/app/views/projects/_member_list.html.erb
@@ -23,7 +23,7 @@
<% else%>
<%= content_tag "div", content_tag("p", rolesToLanguage(member.roles.sort.collect(&:to_s)).join(', ')), :class => "clear avatar_name" %>
-
+
<%= l(:label_user_for_project_grade) %>: <%= format("%.2f" ,UserGrade.find_by_user_id_and_project_id(member[:user_id], @project.id).grade).to_i %>
diff --git a/app/views/projects/_project.html.erb b/app/views/projects/_project.html.erb
index e9a733ece..3d7cdfb6c 100644
--- a/app/views/projects/_project.html.erb
+++ b/app/views/projects/_project.html.erb
@@ -128,7 +128,7 @@
<% if @project.project_type !=1 %>
<%= l(:label_project_grade)%>:
- <%= link_to(format("%.2f" , project_scores(@project) ).to_i,
+ <%= link_to(format("%.2f" , red_project_scores(@project) ).to_i,
{:controller => 'projects',
:action => 'show_projects_score',
:remote => true, :id => @project.id}, :style=>"color: #EC6300;") %>
diff --git a/app/views/stores/index.html.erb b/app/views/stores/index.html.erb
index 8ad37f504..6984169d7 100644
--- a/app/views/stores/index.html.erb
+++ b/app/views/stores/index.html.erb
@@ -21,7 +21,7 @@
<% k.each do |c1|%>
- <%= link_to c1.filename, (attachFromUrl c1), {:title => c1.filename, :target => "_blank"} %>
+ <%= link_to c1.filename, (attachFromUrl c1), {:title => c1.filename, :target => "_blank"} %>
<%= c1.downloads %>
@@ -32,7 +32,7 @@
<% end -%>
-
+