Merge branch 'szzh' of http://repository.trustie.net/xianbo/trustie2 into szzh
This commit is contained in:
commit
3279fda3e5
|
@ -148,7 +148,8 @@ class NewsController < ApplicationController
|
||||||
flash[:notice] = l(:notice_successful_update)
|
flash[:notice] = l(:notice_successful_update)
|
||||||
redirect_to news_path(@news)
|
redirect_to news_path(@news)
|
||||||
else
|
else
|
||||||
render :action => 'edit'
|
#flash[:error] = l(:notice_successful_update)
|
||||||
|
redirect_to news_path(@news)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
|
@ -407,7 +407,7 @@ class ProjectsController < ApplicationController
|
||||||
@page = @page.to_i
|
@page = @page.to_i
|
||||||
# Find the page of the requested reply
|
# Find the page of the requested reply
|
||||||
@jours = @project.journals_for_messages.where('m_parent_id IS NULL').order('created_on DESC')
|
@jours = @project.journals_for_messages.where('m_parent_id IS NULL').order('created_on DESC')
|
||||||
@limit = 3
|
@limit = 10
|
||||||
|
|
||||||
offset = @jours.count(:conditions => ["#{JournalsForMessage.table_name}.id > ?", params[:r].to_i])
|
offset = @jours.count(:conditions => ["#{JournalsForMessage.table_name}.id > ?", params[:r].to_i])
|
||||||
page = 1 + offset / @limit
|
page = 1 + offset / @limit
|
||||||
|
@ -697,8 +697,8 @@ class ProjectsController < ApplicationController
|
||||||
else # @project.project_type == Project::ProjectType_project
|
else # @project.project_type == Project::ProjectType_project
|
||||||
roles = Role.find_all_givable
|
roles = Role.find_all_givable
|
||||||
@subPage_title = l :label_member_list
|
@subPage_title = l :label_member_list
|
||||||
@members = @project.member_principals.includes(:roles, :principal).all
|
@members = @project.member_principals.includes(:roles, :principal).joins("LEFT JOIN #{OptionNumber.table_name} ON #{OptionNumber.table_name}.user_id = #{Member.table_name}.user_id and #{OptionNumber.table_name}.score_type = 2 AND #{Member.table_name}.project_id = #{OptionNumber.table_name}.project_id").order("#{OptionNumber.table_name}.total_score DESC").all
|
||||||
@members = sort_project_members(@project, @members)
|
#@members = sort_project_members(@project, @members)
|
||||||
@applied_members = appied_project_members(@project, @members)
|
@applied_members = appied_project_members(@project, @members)
|
||||||
end
|
end
|
||||||
@members = paginateHelper @members
|
@members = paginateHelper @members
|
||||||
|
|
|
@ -99,7 +99,7 @@ class WordsController < ApplicationController
|
||||||
@project = Project.find params[:project_id]
|
@project = Project.find params[:project_id]
|
||||||
# Find the page of the requested reply
|
# Find the page of the requested reply
|
||||||
@jours = @project.journals_for_messages.where('m_parent_id IS NULL').order('created_on DESC')
|
@jours = @project.journals_for_messages.where('m_parent_id IS NULL').order('created_on DESC')
|
||||||
@limit = 3
|
@limit = 10
|
||||||
|
|
||||||
offset = @jours.count(:conditions => ["#{JournalsForMessage.table_name}.id > ?", params[:r].to_i])
|
offset = @jours.count(:conditions => ["#{JournalsForMessage.table_name}.id > ?", params[:r].to_i])
|
||||||
page = 1 + offset / @limit
|
page = 1 + offset / @limit
|
||||||
|
|
|
@ -441,7 +441,7 @@ module CoursesHelper
|
||||||
def homework_user_of_homework homework,is_teacher
|
def homework_user_of_homework homework,is_teacher
|
||||||
homework_users = ""
|
homework_users = ""
|
||||||
homework.users.each do |user|
|
homework.users.each do |user|
|
||||||
homework_users = homework_users + (is_teacher ? user.realname : user.name)
|
homework_users = homework_users + (is_teacher ? (user.firstname + user.lastname) : user.login)
|
||||||
if user != homework.users.last
|
if user != homework.users.last
|
||||||
homework_users = homework_users + "、"
|
homework_users = homework_users + "、"
|
||||||
end
|
end
|
||||||
|
|
|
@ -381,6 +381,46 @@ module UserScoreHelper
|
||||||
result
|
result
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def get_option_num_by_id(user_id,type,project_id=nil)
|
||||||
|
if project_id.nil?
|
||||||
|
option_number = OptionNumber.where("user_id = '#{user_id}' and score_type = '#{type}'");
|
||||||
|
else
|
||||||
|
option_number = OptionNumber.where("user_id = '#{user_id}' and score_type = '#{type}' and project_id = '#{project_id}'");
|
||||||
|
end
|
||||||
|
|
||||||
|
result = nil
|
||||||
|
if option_number.nil? || option_number.count == 0
|
||||||
|
result = OptionNumber.new
|
||||||
|
result.user_id = user_id
|
||||||
|
result.memo = 0
|
||||||
|
result.messages_for_issues = 0
|
||||||
|
result.issues_status = 0
|
||||||
|
result.replay_for_message = 0
|
||||||
|
result.replay_for_memo = 0
|
||||||
|
result.follow = 0
|
||||||
|
result.tread = 0
|
||||||
|
result.praise_by_one = 0
|
||||||
|
result.praise_by_two = 0
|
||||||
|
result.praise_by_three = 0
|
||||||
|
result.tread_by_one = 0
|
||||||
|
result.tread_by_two = 0
|
||||||
|
result.tread_by_three = 0
|
||||||
|
result.changeset = 0
|
||||||
|
result.document = 0
|
||||||
|
result.attachment = 0
|
||||||
|
result.issue_done_ratio = 0
|
||||||
|
result.post_issue = 0
|
||||||
|
result.total_score = 0
|
||||||
|
result.score_type =type
|
||||||
|
unless project_id.nil?
|
||||||
|
result.project_id = project_id
|
||||||
|
end
|
||||||
|
else
|
||||||
|
result = option_number.first
|
||||||
|
end
|
||||||
|
result
|
||||||
|
end
|
||||||
|
|
||||||
#更新分数
|
#更新分数
|
||||||
def update_score(option_number)
|
def update_score(option_number)
|
||||||
option_number.total_score = collaboration(option_number) + influence(option_number) + skill(option_number) + active(option_number)
|
option_number.total_score = collaboration(option_number) + influence(option_number) + skill(option_number) + active(option_number)
|
||||||
|
@ -418,11 +458,24 @@ module UserScoreHelper
|
||||||
#发帖数
|
#发帖数
|
||||||
def memo_num(user,project=nil)
|
def memo_num(user,project=nil)
|
||||||
if project.nil?
|
if project.nil?
|
||||||
Message.includes(:author).joins(:board).where("#{Message.table_name}.parent_id IS NULL and #{Message.table_name}.author_id = '#{user.id}' and #{Board.table_name}.project_id != -1").all.count #+ Memo.includes(:author).where("parent_id IS NULL and author_id = '#{user.id}'").all.count
|
#Message.includes(:author).joins(:board).where("#{Message.table_name}.parent_id IS NULL and #{Message.table_name}.author_id = '#{user.id}' and #{Board.table_name}.project_id != -1").all.count #+ Memo.includes(:author).where("parent_id IS NULL and author_id = '#{user.id}'").all.count
|
||||||
|
users = Message.find_by_sql("SELECT COUNT(*) as m_count FROM `messages` JOIN `boards` ON boards.project_id != -1 AND messages.board_id = boards.id
|
||||||
|
WHERE messages.parent_id IS NULL AND messages.author_id = #{user.id}")
|
||||||
|
result = 0
|
||||||
|
users.each do |user|
|
||||||
|
result = user.m_count
|
||||||
|
end
|
||||||
|
result
|
||||||
#user.messages.where("parent_id IS NULL").count
|
#user.messages.where("parent_id IS NULL").count
|
||||||
else
|
else
|
||||||
Message.includes(:author).joins(:board).where("#{Message.table_name}.parent_id IS NULL and #{Message.table_name}.author_id = '#{user.id}' and #{Board.table_name}.project_id = #{project.id}").all.count
|
#Message.includes(:author).joins(:board).where("#{Message.table_name}.parent_id IS NULL and #{Message.table_name}.author_id = '#{user.id}' and #{Board.table_name}.project_id = #{project.id}").all.count
|
||||||
|
users = Message.find_by_sql("SELECT COUNT(*) as m_count FROM `messages` JOIN `boards` ON boards.project_id = '#{project.id}' AND messages.board_id = boards.id
|
||||||
|
WHERE messages.parent_id IS NULL AND messages.author_id = #{user.id}")
|
||||||
|
result = 0
|
||||||
|
users.each do |user|
|
||||||
|
result = user.m_count
|
||||||
|
end
|
||||||
|
result
|
||||||
end
|
end
|
||||||
|
|
||||||
end
|
end
|
||||||
|
@ -448,9 +501,21 @@ FROM `users` where id = #{user.id}")
|
||||||
|
|
||||||
def messges_for_issue_num(user,project=nil)
|
def messges_for_issue_num(user,project=nil)
|
||||||
if project.nil?
|
if project.nil?
|
||||||
Journal.includes(:user).where("user_id = '#{user.id}' and notes is not null and notes != ''").all.count
|
#Journal.includes(:user).where("user_id = '#{user.id}' and notes is not null and notes != ''").all.count
|
||||||
|
users = Journal.find_by_sql("SELECT COUNT(*) as m_count FROM journals WHERE journals.user_id = #{user.id} AND journals.notes IS NOT NULL AND journals.notes != ''")
|
||||||
|
result = 0
|
||||||
|
if users.count > 0
|
||||||
|
result = users.first.m_count
|
||||||
|
end
|
||||||
|
result
|
||||||
else
|
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
|
#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
|
||||||
|
users = Journal.find_by_sql("SELECT COUNT(*) as m_count FROM journals join issues on #{Journal.table_name}.journalized_type = 'Issue' and #{Journal.table_name}.journalized_id = #{Issue.table_name}.id WHERE journals.user_id = #{user.id} AND journals.notes IS NOT NULL AND journals.notes != ''and #{Issue.table_name}.project_id = '#{project.id}'")
|
||||||
|
result = 0
|
||||||
|
if users.count > 0
|
||||||
|
result = users.first.m_count
|
||||||
|
end
|
||||||
|
result
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
@ -471,9 +536,21 @@ FROM `users` where id = #{user.id}")
|
||||||
|
|
||||||
def issues_status_num(user,project=nil)
|
def issues_status_num(user,project=nil)
|
||||||
if 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
|
#Journal.joins(:details, :user).where("#{JournalDetail.table_name}.prop_key = 'status_id' and #{User.table_name}.id = '#{user.id}'").count
|
||||||
|
users = Journal.find_by_sql("SELECT COUNT(*) as m_count FROM journals JOIN journal_details on journals.id = journal_details.journal_id WHERE journal_details.prop_key = 'status_id' and journals.user_id = #{user.id}")
|
||||||
|
result = 0
|
||||||
|
if users.count > 0
|
||||||
|
result = users.first.m_count
|
||||||
|
end
|
||||||
|
result
|
||||||
else
|
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
|
#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
|
||||||
|
users = Journal.find_by_sql("SELECT COUNT(*) as m_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 = #{user.id} and issues.project_id = '#{project.id}'")
|
||||||
|
result = 0
|
||||||
|
if users.count > 0
|
||||||
|
result = users.first.m_count
|
||||||
|
end
|
||||||
|
result
|
||||||
end
|
end
|
||||||
|
|
||||||
end
|
end
|
||||||
|
@ -481,10 +558,10 @@ FROM `users` where id = #{user.id}")
|
||||||
def issues_status_score(user,project=nil)
|
def issues_status_score(user,project=nil)
|
||||||
if 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
|
#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}'")
|
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_count FROM users WHERE users.id = '#{user.id}'")
|
||||||
else
|
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
|
#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}'")
|
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_count FROM users WHERE users.id = '#{user.id}'")
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
@ -497,9 +574,21 @@ FROM `users` where id = #{user.id}")
|
||||||
|
|
||||||
def replay_for_message_num(user,project=nil)
|
def replay_for_message_num(user,project=nil)
|
||||||
if project.nil?
|
if project.nil?
|
||||||
JournalsForMessage.includes(:user).where("m_parent_id IS NOT NULL and user_id = #{user.id} and jour_type = 'Project'").count
|
#JournalsForMessage.includes(:user).where("m_parent_id IS NOT NULL and user_id = #{user.id} and jour_type = 'Project'").count
|
||||||
|
users = JournalsForMessage.find_by_sql("SELECT COUNT(*) as m_count From #{JournalsForMessage.table_name} WHERE m_parent_id IS NOT NULL and user_id = #{user.id} and jour_type = 'Project'")
|
||||||
|
result = 0
|
||||||
|
if users.count > 0
|
||||||
|
result = users.first.m_count
|
||||||
|
end
|
||||||
|
result
|
||||||
else
|
else
|
||||||
JournalsForMessage.includes(:user).where("m_parent_id IS NOT NULL and user_id = #{user.id} and jour_type = 'Project' and jour_id = '#{project.id}'").count
|
#JournalsForMessage.includes(:user).where("m_parent_id IS NOT NULL and user_id = #{user.id} and jour_type = 'Project' and jour_id = '#{project.id}'").count
|
||||||
|
users = JournalsForMessage.find_by_sql("SELECT COUNT(*) as m_count From #{JournalsForMessage.table_name} WHERE m_parent_id IS NOT NULL and user_id = #{user.id} and jour_type = 'Project' and jour_id = '#{project.id}'")
|
||||||
|
result = 0
|
||||||
|
if users.count > 0
|
||||||
|
result = users.first.m_count
|
||||||
|
end
|
||||||
|
result
|
||||||
end
|
end
|
||||||
|
|
||||||
end
|
end
|
||||||
|
@ -508,7 +597,7 @@ FROM `users` where id = #{user.id}")
|
||||||
if 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}'")
|
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
|
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}'")
|
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
|
||||||
end
|
end
|
||||||
|
|
||||||
|
@ -521,9 +610,21 @@ FROM `users` where id = #{user.id}")
|
||||||
|
|
||||||
def replay_for_memo_num(user,project=nil)
|
def replay_for_memo_num(user,project=nil)
|
||||||
if project.nil?
|
if project.nil?
|
||||||
Message.includes(:author).joins(:board).where("#{Message.table_name}.parent_id IS NOT NULL and #{Message.table_name}.author_id = '#{user.id}' and #{Board.table_name}.project_id != -1").all.count
|
#Message.includes(:author).joins(:board).where("#{Message.table_name}.parent_id IS NOT NULL and #{Message.table_name}.author_id = '#{user.id}' and #{Board.table_name}.project_id != -1").all.count
|
||||||
|
users = Message.find_by_sql("SELECT COUNT(*) as m_count FROM messages JOIN boards on messages.board_id = boards.id WHERE messages.parent_id IS NOT NULL AND messages.author_id = #{user.id} AND boards.project_id != -1")
|
||||||
|
result = 0
|
||||||
|
if users.count > 0
|
||||||
|
result = users.first.m_count
|
||||||
|
end
|
||||||
|
result
|
||||||
else
|
else
|
||||||
Message.includes(:author).joins(:board).where("#{Message.table_name}.parent_id IS NOT NULL and #{Message.table_name}.author_id = '#{user.id}' and #{Board.table_name}.project_id = #{project.id}").all.count
|
#Message.includes(:author).joins(:board).where("#{Message.table_name}.parent_id IS NOT NULL and #{Message.table_name}.author_id = '#{user.id}' and #{Board.table_name}.project_id = #{project.id}").all.count
|
||||||
|
users = Message.find_by_sql("SELECT COUNT(*) as m_count FROM messages JOIN boards on messages.board_id = boards.id WHERE messages.parent_id IS NOT NULL AND messages.author_id = #{user.id} AND boards.project_id = #{project.id}")
|
||||||
|
result = 0
|
||||||
|
if users.count > 0
|
||||||
|
result = users.first.m_count
|
||||||
|
end
|
||||||
|
result
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
@ -538,16 +639,22 @@ FROM `users` where id = #{user.id}")
|
||||||
#更新被关注的人数
|
#更新被关注的人数
|
||||||
def update_follow(user,type)
|
def update_follow(user,type)
|
||||||
option_number = get_option_number(user,type)
|
option_number = get_option_number(user,type)
|
||||||
option_number.follow = Watcher.includes(:watchable).where("watchable_type = 'Principal' and watchable_id = '#{user.id}'").count
|
option_number.follow = follow_num(user)#Watcher.includes(:watchable).where("watchable_type = 'Principal' and watchable_id = '#{user.id}'").count
|
||||||
update_score(option_number)
|
update_score(option_number)
|
||||||
end
|
end
|
||||||
|
|
||||||
def follow_num(user)
|
def follow_num(user)
|
||||||
Watcher.includes(:watchable).where("watchable_type = 'Principal' and watchable_id = '#{user.id}'").count
|
#Watcher.includes(:watchable).where("watchable_type = 'Principal' and watchable_id = '#{user.id}'").count
|
||||||
|
users = Watcher.find_by_sql("SELECT COUNT(*) as m_count FROM #{Watcher.table_name} WHERE watchable_type = 'Principal' and watchable_id = #{user.id}")
|
||||||
|
result = 0
|
||||||
|
if users.count > 0
|
||||||
|
result = users.first.m_count
|
||||||
|
end
|
||||||
|
result
|
||||||
end
|
end
|
||||||
|
|
||||||
def follow_score(user)
|
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}'")
|
User.find_by_sql("SELECT users.id, (SELECT COUNT(*) * 2 FROM #{Watcher.table_name} WHERE watchable_type = 'Principal' and watchable_id = users.id) FROM users WHERE users.id = '#{user.id}'")
|
||||||
end
|
end
|
||||||
|
|
||||||
#更新帖子踩各项数量
|
#更新帖子踩各项数量
|
||||||
|
@ -689,9 +796,21 @@ FROM `users` where id = #{user.id}")
|
||||||
|
|
||||||
def changeset_num(user,project=nil)
|
def changeset_num(user,project=nil)
|
||||||
if project.nil?
|
if project.nil?
|
||||||
Changeset.includes(:user).where("user_id = '#{user.id}'").all.count
|
#Changeset.includes(:user).where("user_id = '#{user.id}'").all.count
|
||||||
|
users = Changeset.find_by_sql("SELECT COUNT(*) as m_count FROM #{Changeset.table_name} WHERE user_id = #{user.id}")
|
||||||
|
result = 0
|
||||||
|
if users.count > 0
|
||||||
|
result = users.first.m_count
|
||||||
|
end
|
||||||
|
result
|
||||||
else
|
else
|
||||||
Changeset.includes(:user).joins(:repository).where("#{Changeset.table_name}.user_id = '#{user.id}' and #{Repository.table_name}.project_id = #{project.id}").all.count
|
#Changeset.includes(:user).joins(:repository).where("#{Changeset.table_name}.user_id = '#{user.id}' and #{Repository.table_name}.project_id = #{project.id}").all.count
|
||||||
|
users = Changeset.find_by_sql("SELECT COUNT(*) as m_count FROM #{Changeset.table_name} JOIN #{Repository.table_name} ON #{Changeset.table_name}.repository_id = #{Repository.table_name}.id WHERE #{Changeset.table_name}.user_id = #{user.id} and #{Repository.table_name}.project_id = #{project.id}")
|
||||||
|
result = 0
|
||||||
|
if users.count > 0
|
||||||
|
result = users.first.m_count
|
||||||
|
end
|
||||||
|
result
|
||||||
end
|
end
|
||||||
|
|
||||||
end
|
end
|
||||||
|
@ -705,9 +824,21 @@ FROM `users` where id = #{user.id}")
|
||||||
|
|
||||||
def document_num(user,project=nil)
|
def document_num(user,project=nil)
|
||||||
if project.nil?
|
if project.nil?
|
||||||
Document.includes(:user).where("user_id = '#{user.id}'").all.count
|
#Document.includes(:user).where("user_id = '#{user.id}'").all.count
|
||||||
|
users = Document.find_by_sql("SELECT COUNT(*) as m_count FROM #{Document.table_name} WHERE #{Document.table_name}.user_id = #{user.id}")
|
||||||
|
result = 0
|
||||||
|
if users.count > 0
|
||||||
|
result = users.first.m_count
|
||||||
|
end
|
||||||
|
result
|
||||||
else
|
else
|
||||||
Document.includes(:user,:project).where("user_id = '#{user.id}' and project_id = '#{project.id}'").all.count
|
#Document.includes(:user,:project).where("user_id = '#{user.id}' and project_id = '#{project.id}'").all.count
|
||||||
|
users = Document.find_by_sql("SELECT COUNT(*) as m_count FROM #{Document.table_name} WHERE #{Document.table_name}.user_id = #{user.id} and #{Document.table_name}.project_id = '#{project.id}'")
|
||||||
|
result = 0
|
||||||
|
if users.count > 0
|
||||||
|
result = users.first.m_count
|
||||||
|
end
|
||||||
|
result
|
||||||
end
|
end
|
||||||
|
|
||||||
end
|
end
|
||||||
|
@ -721,9 +852,21 @@ FROM `users` where id = #{user.id}")
|
||||||
|
|
||||||
def attachment_num(user,project=nil)
|
def attachment_num(user,project=nil)
|
||||||
if project.nil?
|
if project.nil?
|
||||||
Attachment.includes(:author,:container).where("author_id = '#{user.id}' and container_type = 'Project'").all.count
|
#Attachment.includes(:author,:container).where("author_id = '#{user.id}' and container_type = 'Project'").all.count
|
||||||
|
users = Attachment.find_by_sql("SELECT COUNT(*) as m_count FROM #{Attachment.table_name} WHERE author_id = '#{user.id}' and container_type = 'Project'")
|
||||||
|
result = 0
|
||||||
|
if users.count > 0
|
||||||
|
result = users.first.m_count
|
||||||
|
end
|
||||||
|
result
|
||||||
else
|
else
|
||||||
Attachment.includes(:author,:container).where("author_id = '#{user.id}' and container_type = 'Project' and container_id = #{project.id}").all.count
|
#Attachment.includes(:author,:container).where("author_id = '#{user.id}' and container_type = 'Project' and container_id = #{project.id}").all.count
|
||||||
|
users = Attachment.find_by_sql("SELECT COUNT(*) as m_count FROM #{Attachment.table_name} WHERE author_id = '#{user.id}' and container_type = 'Project' and container_id = #{project.id}")
|
||||||
|
result = 0
|
||||||
|
if users.count > 0
|
||||||
|
result = users.first.m_coumt
|
||||||
|
end
|
||||||
|
result
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
@ -736,9 +879,21 @@ FROM `users` where id = #{user.id}")
|
||||||
|
|
||||||
def issue_done_ratio_num(user,project=nil)
|
def issue_done_ratio_num(user,project=nil)
|
||||||
if project.nil?
|
if project.nil?
|
||||||
Journal.joins(:details, :user).where("#{JournalDetail.table_name}.prop_key = 'done_ratio' and #{User.table_name}.id = '#{user.id}'").count
|
#Journal.joins(:details, :user).where("#{JournalDetail.table_name}.prop_key = 'done_ratio' and #{User.table_name}.id = '#{user.id}'").count
|
||||||
|
users = Journal.find_by_sql("SELECT COUNT(*) as m_count FROM #{Journal.table_name} JOIN #{JournalDetail.table_name} ON #{JournalDetail.table_name}.journal_id = #{Journal.table_name}.id WHERE #{JournalDetail.table_name}.prop_key = 'done_ratio' and #{Journal.table_name}.user_id = #{user.id}")
|
||||||
|
result = 0
|
||||||
|
if users.count > 0
|
||||||
|
result = users.first.m_count
|
||||||
|
end
|
||||||
|
result
|
||||||
else
|
else
|
||||||
Journal.joins(:issue,:details,:user).where("#{Issue.table_name}.project_id = '#{project.id}' and #{JournalDetail.table_name}.prop_key = 'done_ratio' and #{User.table_name}.id = '#{user.id}'").count
|
#Journal.joins(:issue,:details,:user).where("#{Issue.table_name}.project_id = '#{project.id}' and #{JournalDetail.table_name}.prop_key = 'done_ratio' and #{User.table_name}.id = '#{user.id}'").count
|
||||||
|
users = Journal.find_by_sql("SELECT COUNT(*) as m_count FROM #{Journal.table_name} JOIN #{JournalDetail.table_name} ON #{JournalDetail.table_name}.journal_id = #{Journal.table_name}.id JOIN issues ON issues.id = journals.journalized_id and journalized_type = 'Issue' WHERE #{JournalDetail.table_name}.prop_key = 'done_ratio' and #{Journal.table_name}.user_id = #{user.id} and #{Issue.table_name}.project_id = '#{project.id}'")
|
||||||
|
result = 0
|
||||||
|
if users.count > 0
|
||||||
|
result = users.first.m_count
|
||||||
|
end
|
||||||
|
result
|
||||||
end
|
end
|
||||||
|
|
||||||
end
|
end
|
||||||
|
@ -752,9 +907,21 @@ FROM `users` where id = #{user.id}")
|
||||||
|
|
||||||
def post_issue_num(user,project=nil)
|
def post_issue_num(user,project=nil)
|
||||||
if project.nil?
|
if project.nil?
|
||||||
Issue.includes(:author).where("author_id = '#{user.id}'").all.count
|
#Issue.includes(:author).where("author_id = '#{user.id}'").all.count
|
||||||
|
users = Issue.find_by_sql("SELECT COUNT(*) as m_count FROM #{Issue.table_name} WHERE author_id = #{user.id}")
|
||||||
|
result = 0
|
||||||
|
if users.count > 0
|
||||||
|
result = users.first.m_count
|
||||||
|
end
|
||||||
|
result
|
||||||
else
|
else
|
||||||
Issue.includes(:author).where("author_id = '#{user.id}' and project_id = '#{project.id}'").all.count
|
#Issue.includes(:author).where("author_id = '#{user.id}' and project_id = '#{project.id}'").all.count
|
||||||
|
users = Issue.find_by_sql("SELECT COUNT(*) as m_count FROM #{Issue.table_name} WHERE author_id = #{user.id} and project_id = '#{project.id}'")
|
||||||
|
result = 0
|
||||||
|
if users.count > 0
|
||||||
|
result = users.first.m_count
|
||||||
|
end
|
||||||
|
result
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
@ -778,6 +945,9 @@ FROM `users` where id = #{user.id}")
|
||||||
update_attachment(user,type,project)
|
update_attachment(user,type,project)
|
||||||
update_issue_done_ratio(user,type,project)
|
update_issue_done_ratio(user,type,project)
|
||||||
update_post_issue(user,type,project)
|
update_post_issue(user,type,project)
|
||||||
|
if project.nil?
|
||||||
|
update_follow(user,type)
|
||||||
|
end
|
||||||
update_score(ooption_num)
|
update_score(ooption_num)
|
||||||
ooption_num
|
ooption_num
|
||||||
end
|
end
|
||||||
|
|
|
@ -28,13 +28,15 @@
|
||||||
<tr>
|
<tr>
|
||||||
<td style="vertical-align: top;width: 70px" >
|
<td style="vertical-align: top;width: 70px" >
|
||||||
<table style="text-align: center;width: 100%;table-layout: fixed">
|
<table style="text-align: center;width: 100%;table-layout: fixed">
|
||||||
|
<% user_name = is_teacher ? (homework.user.firstname + homework.user.lastname) : homework.user.login %>
|
||||||
<tr>
|
<tr>
|
||||||
<td title="<%= homework.user.name %>"><%= image_tag(url_to_avatar(homework.user), :class => "avatar")%></td>
|
<td title="<%= user_name %>"><%= image_tag(url_to_avatar(homework.user), :class => "avatar")%></td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
<td title="<%= homework.user.name %>">
|
|
||||||
|
<td title="<%= user_name %>">
|
||||||
<p style="width: 100%;white-space: nowrap;overflow: hidden;text-overflow: ellipsis;"><strong>
|
<p style="width: 100%;white-space: nowrap;overflow: hidden;text-overflow: ellipsis;"><strong>
|
||||||
<%= link_to (is_teacher ? homework.user.realname : homework.user ), user_path(homework.user),{:style => "color:#727272"} %>
|
<%= link_to user_name, user_path(homework.user),{:style => "color:#727272"} %>
|
||||||
</strong></p>
|
</strong></p>
|
||||||
</td>
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
|
|
|
@ -63,7 +63,9 @@
|
||||||
<td>
|
<td>
|
||||||
<table width="640px" border="0">
|
<table width="640px" border="0">
|
||||||
<tr>
|
<tr>
|
||||||
<td valign="top" width="500px" class=" <%= topic.sticky? ? 'sticky' : '' %> <%= topic.locked? ? 'locked' : '' %>"><%= link_to h(topic.subject), board_message_path(@board, topic) %></td>
|
<td valign="top" width="500px" class=" <%= topic.sticky? ? 'sticky' : '' %>
|
||||||
|
<%= topic.locked? ? 'locked' : '' %>"><%= link_to h(topic.subject.truncate(40,ommision:'...')), board_message_path(@board, topic),title: topic.subject.to_s %>
|
||||||
|
</td>
|
||||||
<td align="right" rowspan="3"><table class="borad-count"><tr><td align="center" class="borad-count-digit"><%=link_to (topic.replies_count), board_message_path(@board, topic) %></td></tr>
|
<td align="right" rowspan="3"><table class="borad-count"><tr><td align="center" class="borad-count-digit"><%=link_to (topic.replies_count), board_message_path(@board, topic) %></td></tr>
|
||||||
<tr><td align="center">回答</td></tr>
|
<tr><td align="center">回答</td></tr>
|
||||||
</table></td>
|
</table></td>
|
||||||
|
|
|
@ -71,7 +71,9 @@
|
||||||
<td>
|
<td>
|
||||||
<table width="640px" border="0">
|
<table width="640px" border="0">
|
||||||
<tr>
|
<tr>
|
||||||
<td valign="top" width="500px" class=" <%= topic.sticky? ? 'sticky' : '' %> <%= topic.locked? ? 'locked' : '' %>"><%= link_to h(topic.subject), board_message_path(@board, topic) %></td>
|
<td valign="top" width="500px" class=" <%= topic.sticky? ? 'sticky' : '' %>
|
||||||
|
<%= topic.locked? ? 'locked' : '' %>"><%= link_to h(topic.subject.truncate(40,ommision:'...')), board_message_path(@board, topic),title:topic.subject.to_s %>
|
||||||
|
</td>
|
||||||
<td align="right" rowspan="3">
|
<td align="right" rowspan="3">
|
||||||
<table class="borad-count">
|
<table class="borad-count">
|
||||||
<tr>
|
<tr>
|
||||||
|
|
|
@ -1,9 +1,9 @@
|
||||||
<!--<p><%= link_to_project(news.project) + ': ' unless @project %>
|
<!--<p><%#= link_to_project(news.project) + ': ' unless @project %>
|
||||||
<table><tr><td><img src="/images/new/news.png" width="40" height="40"/></td><td><%= link_to h(news.title), news_path(news) %>
|
<table><tr><td><img src="/images/new/news.png" width="40" height="40"/></td><td><%#= link_to h(news.title), news_path(news) %>
|
||||||
<%= "(#{l(:label_x_comments, :count => news.comments_count)})" if news.comments_count > 0 %>
|
<%#= "(#{l(:label_x_comments, :count => news.comments_count)})" if news.comments_count > 0 %>
|
||||||
|
|
||||||
<% unless news.summary.blank? %></td><td><span class="fontligher"><%=h news.summary %></span><% end %></td>
|
<%# unless news.summary.blank? %></td><td><span class="fontligher"><%#=h news.summary %></span><% end %></td>
|
||||||
<td><span class="author"><%= authoring news.created_on, news.author %></span></td></tr></table></p>-->
|
<td><span class="author"><%#= authoring news.created_on, news.author %></span></td></tr></table></p>-->
|
||||||
|
|
||||||
<table width="660px" border="0" align="center">
|
<table width="660px" border="0" align="center">
|
||||||
<tr>
|
<tr>
|
||||||
|
|
|
@ -96,9 +96,9 @@
|
||||||
<div class="memo-section">
|
<div class="memo-section">
|
||||||
<div class="memo-title <%= @topic.sticky? ? 'sticky' : '' %> <%= @topic.locked? ? 'locked' : '' %>">
|
<div class="memo-title <%= @topic.sticky? ? 'sticky' : '' %> <%= @topic.locked? ? 'locked' : '' %>">
|
||||||
<% if @project %>
|
<% if @project %>
|
||||||
<%= label_tag l(:field_subject) %>: <%= link_to @topic.subject, project_boards_path(@topic.project) %>
|
<%= label_tag l(:field_subject) %>: <%= link_to @topic.subject.truncate(24, omission: '...'), project_boards_path(@topic.project),title: @topic.subject.to_s %>
|
||||||
<% elsif @course %>
|
<% elsif @course %>
|
||||||
<%= label_tag l(:field_subject) %>: <%= link_to @topic.subject, course_boards_path(@topic.course) %>
|
<%= label_tag l(:field_subject) %>: <%= link_to @topic.subject.truncate(24,omission:'...'), course_boards_path(@topic.course),title: @topic.subject.to_s %>
|
||||||
<% end %>
|
<% end %>
|
||||||
</div>
|
</div>
|
||||||
<div class="memo-content">
|
<div class="memo-content">
|
||||||
|
@ -109,14 +109,8 @@
|
||||||
</div>
|
</div>
|
||||||
<div class="memo-timestamp">
|
<div class="memo-timestamp">
|
||||||
<div style="float: left"><%= authoring @topic.created_on, @topic.author %></div>
|
<div style="float: left"><%= authoring @topic.created_on, @topic.author %></div>
|
||||||
|
|
||||||
|
|
||||||
<div style="float: right"><%= toggle_link l(:button_reply), "reply", :focus => 'message_content' %></div>
|
<div style="float: right"><%= toggle_link l(:button_reply), "reply", :focus => 'message_content' %></div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
<br />
|
<br />
|
||||||
</div>
|
</div>
|
||||||
|
|
|
@ -95,11 +95,11 @@
|
||||||
</p>
|
</p>
|
||||||
</div>
|
</div>
|
||||||
<div class="memo-section" style="width: 100%;word-break: break-all;">
|
<div class="memo-section" style="width: 100%;word-break: break-all;">
|
||||||
<div class="memo-title <%= @topic.sticky? ? 'sticky' : '' %> <%= @topic.locked? ? 'locked' : '' %>">
|
<div class="memo-title <%= @topic.sticky? ? 'sticky' : '' %> <%= @topic.locked? ? 'locked' : '' %>" style="width: 83%;word-break: break-all;">
|
||||||
<% if @project %>
|
<% if @project %>
|
||||||
<%= label_tag l(:field_subject) %>: <%= link_to @topic.subject, project_boards_path(@topic.project) %>
|
<%= label_tag l(:field_subject) %>: <%= link_to @topic.subject.truncate(24, omission: '...'), project_boards_path(@topic.project),title: @topic.subject.to_s %>
|
||||||
<% elsif @course %>
|
<% elsif @course %>
|
||||||
<%= label_tag l(:field_subject) %>: <%= link_to @topic.subject, course_boards_path(@topic.course) %>
|
<%= label_tag l(:field_subject) %>: <%= link_to @topic.subject.truncate(24,omission:'...'), course_boards_path(@topic.course),title: @topic.subject.to_s %>
|
||||||
<% end %>
|
<% end %>
|
||||||
</div>
|
</div>
|
||||||
<div class="memo-content">
|
<div class="memo-content">
|
||||||
|
@ -179,9 +179,6 @@
|
||||||
</div>
|
</div>
|
||||||
<% end %>
|
<% end %>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<% if !@topic.locked? && authorize_for('messages', 'reply') %>
|
<% if !@topic.locked? && authorize_for('messages', 'reply') %>
|
||||||
<div id="reply" style="display:none;">
|
<div id="reply" style="display:none;">
|
||||||
<%= form_for @reply, :as => :reply, :url => {:action => 'reply', :id => @topic}, :html => {:multipart => true, :id => 'message-form'} do |f| %>
|
<%= form_for @reply, :as => :reply, :url => {:action => 'reply', :id => @topic}, :html => {:multipart => true, :id => 'message-form'} do |f| %>
|
||||||
|
|
|
@ -1,12 +1,13 @@
|
||||||
<%= error_messages_for @news %>
|
<%= error_messages_for @news %>
|
||||||
<div class="add_frame_header" >
|
<div class="add_frame_header" >
|
||||||
<% str = l(:bale_news_notice)%>
|
<%= is_new ? l(:bale_news_notice):l(:bale_edit_notice)%>
|
||||||
<%= str %>
|
|
||||||
</div>
|
</div>
|
||||||
<div class="box tabular">
|
<div class="box tabular">
|
||||||
<p><%= f.text_field :title, :required => true, :size => 60, :style => "width:488px;" %></p>
|
<p><%= f.text_field :title, :required => true, :size => 60, :style => "width:468px;", :onblur => "regexTitle();" %></p>
|
||||||
|
<P><span id="title_notice_span">(60个字符以内)</span></P>
|
||||||
<!-- <p style="margin-left:-10px;"><%#= f.text_area :summary, :cols => 60, :rows => 2, :style => "width:490px;margin-left:10px;" %></p> -->
|
<!-- <p style="margin-left:-10px;"><%#= f.text_area :summary, :cols => 60, :rows => 2, :style => "width:490px;margin-left:10px;" %></p> -->
|
||||||
<p><%= f.text_area :description, :required => true, :cols => 60, :rows => 11, :class => 'wiki-edit', :style => "width:490px;" %></p>
|
<p><%= f.text_area :description, :required => true, :cols => 60, :rows => 11, :class => 'wiki-edit', :style => "width:470px;", :onblur => "regexDescription();" %></p>
|
||||||
|
<P><span id="description_notice_span"></span></P>
|
||||||
<p id="attachments_form" style="margin-left:-10px;"><label style="padding-right: 15px;"><%= l(:label_attachment_plural) %></label><%= render :partial => 'attachments/form', :locals => {:container => @news} %></p>
|
<p id="attachments_form" style="margin-left:-10px;"><label style="padding-right: 15px;"><%= l(:label_attachment_plural) %></label><%= render :partial => 'attachments/form', :locals => {:container => @news} %></p>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
|
|
@ -3,6 +3,59 @@
|
||||||
label_tips = l(:label_course_news)
|
label_tips = l(:label_course_news)
|
||||||
%>
|
%>
|
||||||
|
|
||||||
|
<script type="text/javascript">
|
||||||
|
function regexTitle()
|
||||||
|
{
|
||||||
|
var name = $("#news_title").val();
|
||||||
|
if(name.length ==0)
|
||||||
|
{
|
||||||
|
$("#title_notice_span").text("标题不能为空");
|
||||||
|
$("#title_notice_span").css('color','#ff0000');
|
||||||
|
$("#title_notice_span").focus();
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
else if(name.length <= 60)
|
||||||
|
{
|
||||||
|
$("#title_notice_span").text("填写正确");
|
||||||
|
$("#title_notice_span").css('color','#008000');
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
$("#title_notice_span").text("标题超过60个字符");
|
||||||
|
$("#title_notice_span").css('color','#ff0000');
|
||||||
|
$("#title_notice_span").focus();
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
function regexDescription()
|
||||||
|
{
|
||||||
|
var name = $("#news_description").val();
|
||||||
|
if(name.length ==0)
|
||||||
|
{
|
||||||
|
$("#description_notice_span").text("描述不能为空");
|
||||||
|
$("#description_notice_span").css('color','#ff0000');
|
||||||
|
$("#description_notice_span").focus();
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
$("#description_notice_span").text("填写正确");
|
||||||
|
$("#description_notice_span").css('color','#008000');
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
function submitNews()
|
||||||
|
{
|
||||||
|
if(regexTitle() && regexDescription())
|
||||||
|
{
|
||||||
|
$("#news-form").submit();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
|
||||||
<span style="font-size: 16px; border-bottom:1px solid #f0f0f0; margin-right: 15px;">
|
<span style="font-size: 16px; border-bottom:1px solid #f0f0f0; margin-right: 15px;">
|
||||||
<%= label_tips %>
|
<%= label_tips %>
|
||||||
</span>
|
</span>
|
||||||
|
@ -15,8 +68,9 @@
|
||||||
<div id="add-news" class="add_frame" style="display:none;">
|
<div id="add-news" class="add_frame" style="display:none;">
|
||||||
<%= labelled_form_for @news, :url => course_news_index_path(@course),
|
<%= labelled_form_for @news, :url => course_news_index_path(@course),
|
||||||
:html => {:id => 'news-form', :multipart => true} do |f| %>
|
:html => {:id => 'news-form', :multipart => true} do |f| %>
|
||||||
<%= render :partial => 'news/course_form', :locals => {:f => f} %>
|
<%= render :partial => 'news/course_form', :locals => {:f => f, :is_new => true} %>
|
||||||
<%= submit_tag l(:button_create), :class => 'whiteButton m3p10 h30', :name => nil %><!-- button-submit --> |
|
<%#= submit_tag l(:button_create), :class => 'whiteButton m3p10 h30', :name => nil %><!-- button-submit -->
|
||||||
|
<%= link_to l(:button_create), "#", :onclick => 'submitNews();', :class => 'whiteButton m3p10' %>|
|
||||||
<%= preview_link preview_news_path(:course_id => @course), 'news-form', target='preview', {:class => 'whiteButton m3p10'} %>
|
<%= preview_link preview_news_path(:course_id => @course), 'news-form', target='preview', {:class => 'whiteButton m3p10'} %>
|
||||||
|
|
|
|
||||||
<%= link_to l(:button_cancel), "#", :onclick => '$("#add-news").hide()', :class => 'whiteButton m3p10' %>
|
<%= link_to l(:button_cancel), "#", :onclick => '$("#add-news").hide()', :class => 'whiteButton m3p10' %>
|
||||||
|
|
|
@ -1,3 +1,56 @@
|
||||||
|
<script type="text/javascript">
|
||||||
|
function regexTitle()
|
||||||
|
{
|
||||||
|
var name = $("#news_title").val();
|
||||||
|
if(name.length ==0)
|
||||||
|
{
|
||||||
|
$("#title_notice_span").text("标题不能为空");
|
||||||
|
$("#title_notice_span").css('color','#ff0000');
|
||||||
|
$("#title_notice_span").focus();
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
else if(name.length <= 60)
|
||||||
|
{
|
||||||
|
$("#title_notice_span").text("填写正确");
|
||||||
|
$("#title_notice_span").css('color','#008000');
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
$("#title_notice_span").text("标题超过60个字符");
|
||||||
|
$("#title_notice_span").css('color','#ff0000');
|
||||||
|
$("#title_notice_span").focus();
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
function regexDescription()
|
||||||
|
{
|
||||||
|
var name = $("#news_description").val();
|
||||||
|
if(name.length ==0)
|
||||||
|
{
|
||||||
|
$("#description_notice_span").text("描述不能为空");
|
||||||
|
$("#description_notice_span").css('color','#ff0000');
|
||||||
|
$("#description_notice_span").focus();
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
$("#description_notice_span").text("填写正确");
|
||||||
|
$("#description_notice_span").css('color','#008000');
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
function submitNews()
|
||||||
|
{
|
||||||
|
if(regexTitle() && regexDescription())
|
||||||
|
{
|
||||||
|
$("#news-form").submit();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
|
||||||
<div class="contextual">
|
<div class="contextual">
|
||||||
<%= watcher_link(@news, User.current) %>
|
<%= watcher_link(@news, User.current) %>
|
||||||
<%= link_to(l(:button_edit),
|
<%= link_to(l(:button_edit),
|
||||||
|
@ -14,8 +67,9 @@
|
||||||
<div id="edit-news" style="display:none;">
|
<div id="edit-news" style="display:none;">
|
||||||
<%= labelled_form_for :news, @news, :url => news_path(@news),
|
<%= labelled_form_for :news, @news, :url => news_path(@news),
|
||||||
:html => { :id => 'news-form', :multipart => true, :method => :put } do |f| %>
|
:html => { :id => 'news-form', :multipart => true, :method => :put } do |f| %>
|
||||||
<%= render :partial => 'course_form', :locals => { :f => f } %>
|
<%= render :partial => 'course_form', :locals => { :f => f, :is_new => false } %>
|
||||||
<%= submit_tag l(:button_save) %>
|
<%#= submit_tag l(:button_save) %>
|
||||||
|
<%= link_to l(:button_save), "#", :onclick => 'submitNews();' %>
|
||||||
<%= preview_link preview_news_path(:course_id => @course, :id => @news), 'news-form',target='preview',{:class => ''} %> |
|
<%= preview_link preview_news_path(:course_id => @course, :id => @news), 'news-form',target='preview',{:class => ''} %> |
|
||||||
<%= link_to l(:button_cancel), "#", :onclick => '$("#edit-news").hide(); return false;' %>
|
<%= link_to l(:button_cancel), "#", :onclick => '$("#edit-news").hide(); return false;' %>
|
||||||
<% end %>
|
<% end %>
|
||||||
|
|
|
@ -129,7 +129,7 @@
|
||||||
<tr>
|
<tr>
|
||||||
<% if e.user == User.current %>
|
<% if e.user == User.current %>
|
||||||
<td colspan="2" valign="top">
|
<td colspan="2" valign="top">
|
||||||
<strong><%= link_to("#{l(:label_i)}", user_path(e.user_id)) %></strong> <span class="font_lighter"><%= l(:label_i_new_activity) %></span> <%= link_to(l(:label_activity_project)+act.issue.project.name, project_path(act.issue.project.identifier)) %> <%= link_to format_activity_title("#{act.issue.tracker} ##{act.issue.id}: #{act.issue.subject}"), {:controller => 'issues', :action => 'show', :id => act.issue.id, :anchor => "change-#{act.id}"} %>
|
<strong><%= link_to("#{l(:label_i)}", user_path(e.user_id)) %></strong> <span class="font_lighter"><%= l(:label_i_new_activity) %></span> <%= link_to(l(:label_activity_project)+act.issue.project.name, project_path(act.issue.project.id)) %> <%= link_to format_activity_title("#{act.issue.tracker} ##{act.issue.id}: #{act.issue.subject}"), {:controller => 'issues', :action => 'show', :id => act.issue.id, :anchor => "change-#{act.id}"} %>
|
||||||
</td>
|
</td>
|
||||||
<% else %>
|
<% else %>
|
||||||
<td colspan="2" valign="top">
|
<td colspan="2" valign="top">
|
||||||
|
|
|
@ -2,7 +2,7 @@
|
||||||
<div id='leave-message'>
|
<div id='leave-message'>
|
||||||
<%= render :partial => 'words/new', :locals => {:user => @user, :sta => @state} %>
|
<%= render :partial => 'words/new', :locals => {:user => @user, :sta => @state} %>
|
||||||
</div>
|
</div>
|
||||||
<div style="border-bottom: 1px dashed rgb(204, 204, 204);font-size: 14px; font-family: 微软雅黑; padding-bottom: 10px; font-weight: bold; color:#807a76">
|
<div style="border-bottom: 1px dashed rgb(204, 204, 204);font-size: 14px; font-family: '微软雅黑'; padding-bottom: 10px; font-weight: bold; color:#807a76">
|
||||||
<%= l(:label_newfeedback_message) %>(<%= @feedback_count%>)
|
<%= l(:label_newfeedback_message) %>(<%= @feedback_count%>)
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
|
|
@ -72,7 +72,7 @@
|
||||||
<table border="0" width="525px" align="center">
|
<table border="0" width="525px" align="center">
|
||||||
<tr>
|
<tr>
|
||||||
<td align="right"> <%= submit_tag l(:button_leave_meassge), :name => nil , :class => "enterprise", :onmouseout => "this.style.backgroundPosition = 'left top'", :onmouseover => "this.style.backgroundPosition = 'left -31px'"%>
|
<td align="right"> <%= submit_tag l(:button_leave_meassge), :name => nil , :class => "enterprise", :onmouseout => "this.style.backgroundPosition = 'left top'", :onmouseover => "this.style.backgroundPosition = 'left -31px'"%>
|
||||||
<%= submit_tag l(:button_clear), :name => nil, :class => "enterprise", :onclick => "clearMessage('new_form_user_message');", :onmouseout => "this.style.backgroundPosition = 'left top'", :onmouseover => "this.style.backgroundPosition = 'left -31px'" %> </td>
|
<%= submit_tag l(:button_cancel), :name => nil, :class => "enterprise", :onclick => "clearMessage('new_form_user_message');", :onmouseout => "this.style.backgroundPosition = 'left top'", :onmouseover => "this.style.backgroundPosition = 'left -31px'" %> </td>
|
||||||
</tr>
|
</tr>
|
||||||
</table>
|
</table>
|
||||||
<% else %>
|
<% else %>
|
||||||
|
|
|
@ -1782,6 +1782,7 @@ en:
|
||||||
label_no_file_uploaded: No file uploaded
|
label_no_file_uploaded: No file uploaded
|
||||||
label_forum_new: New forum
|
label_forum_new: New forum
|
||||||
label_memo_new_from_forum: Release memo
|
label_memo_new_from_forum: Release memo
|
||||||
|
bale_edit_notice: Edit
|
||||||
|
|
||||||
label_user_grade: Individual score
|
label_user_grade: Individual score
|
||||||
label_active_homework: homework
|
label_active_homework: homework
|
||||||
|
@ -1797,6 +1798,8 @@ en:
|
||||||
label_record: 湘ICP备09019772
|
label_record: 湘ICP备09019772
|
||||||
label_check_comment: Check comment
|
label_check_comment: Check comment
|
||||||
label_notification: Notification
|
label_notification: Notification
|
||||||
|
|
||||||
|
|
||||||
#end
|
#end
|
||||||
|
|
||||||
# ajax异步验证
|
# ajax异步验证
|
||||||
|
|
|
@ -707,6 +707,7 @@ zh:
|
||||||
label_news: 新闻
|
label_news: 新闻
|
||||||
label_news_new: 添加新闻
|
label_news_new: 添加新闻
|
||||||
bale_news_notice: 添加通知 #huang
|
bale_news_notice: 添加通知 #huang
|
||||||
|
bale_edit_notice: 修改通知
|
||||||
label_news_notice: 发布课程通知
|
label_news_notice: 发布课程通知
|
||||||
label_news_plural: 新闻
|
label_news_plural: 新闻
|
||||||
label_news_latest: 最近的新闻
|
label_news_latest: 最近的新闻
|
||||||
|
|
|
@ -0,0 +1,23 @@
|
||||||
|
desc "User New Score description"
|
||||||
|
task :user_new_score do
|
||||||
|
puts "user_score sync."
|
||||||
|
end
|
||||||
|
|
||||||
|
namespace :user_new_score do
|
||||||
|
desc "calculating user score"
|
||||||
|
task :calculating => :environment do
|
||||||
|
include UserScoreHelper
|
||||||
|
User.all.each do |user|
|
||||||
|
result = user_scores(user,1).total_score
|
||||||
|
puts "score of #{user.login} is #{result}"
|
||||||
|
end
|
||||||
|
|
||||||
|
Project.where("project_type != 1").all.each do |project|
|
||||||
|
project.member_principals.includes(:roles, :principal).all.each do |member|
|
||||||
|
result = user_scores(member.user,2,project).total_score
|
||||||
|
puts "#{user.login}/'s score in #{project.name} is #{result}"
|
||||||
|
end
|
||||||
|
end
|
||||||
|
puts "calculate completed"
|
||||||
|
end
|
||||||
|
end
|
|
@ -0,0 +1,453 @@
|
||||||
|
desc "User Score description"
|
||||||
|
task :user_score_new do
|
||||||
|
puts "user_score sync."
|
||||||
|
end
|
||||||
|
|
||||||
|
namespace :user_score_new do
|
||||||
|
desc "calculating user score"
|
||||||
|
task :calculated => :environment do
|
||||||
|
include UserScoreHelper
|
||||||
|
puts "truncating table...#{Rails.env}"
|
||||||
|
puts "loading..."
|
||||||
|
# collaboration 协同得分
|
||||||
|
users = {}
|
||||||
|
grades = {}
|
||||||
|
# 发帖
|
||||||
|
Message.find_by_sql("SELECT `messages`.author_id AS u_id,`boards`.project_id AS p_id, COUNT(*) AS memo_number FROM `messages` JOIN `boards` ON `messages`.board_id = `boards`.id WHERE `messages`.parent_id IS NULL AND `boards`.project_id != -1 GROUP BY `messages`.author_id,`boards`.project_id ").each do|message|
|
||||||
|
option_num = get_option_num_by_id(message.u_id,2,message.p_id)
|
||||||
|
option_num.memo = message.memo_number
|
||||||
|
option_num.save
|
||||||
|
update_score(option_num)
|
||||||
|
puts "#{message.u_id}'s memo number in project #{message.p_id}: #{message.memo_number}"
|
||||||
|
end
|
||||||
|
|
||||||
|
Message.find_by_sql("SELECT `messages`.author_id AS u_id, COUNT(*) AS memo_number FROM `messages` JOIN `boards` ON `messages`.board_id = `boards`.id WHERE `messages`.parent_id IS NULL AND `boards`.project_id != -1 GROUP BY `messages`.author_id").each do|message|
|
||||||
|
option_num = get_option_num_by_id(message.u_id,1)
|
||||||
|
option_num.memo = message.memo_number
|
||||||
|
option_num.save
|
||||||
|
update_score(option_num)
|
||||||
|
puts "#{message.u_id}'s memo number: #{message.memo_number}"
|
||||||
|
end
|
||||||
|
|
||||||
|
|
||||||
|
puts "post_message calculate Completed."
|
||||||
|
#
|
||||||
|
## 对缺陷的留言
|
||||||
|
Journal.find_by_sql("SELECT user_id AS u_id,COUNT(*) AS m_count FROM journals WHERE journals.notes IS NOT NULL AND journals.notes != '' GROUP BY u_id").each do |journal|
|
||||||
|
option_num = get_option_num_by_id(journal.u_id,1)
|
||||||
|
option_num.messages_for_issues = journal.m_count
|
||||||
|
option_num.save
|
||||||
|
update_score(option_num)
|
||||||
|
puts "#{journal.u_id}'s messages_for_issues number: #{journal.m_count}"
|
||||||
|
end
|
||||||
|
|
||||||
|
Journal.find_by_sql("SELECT #{Journal.table_name}.user_id AS u_id, #{Issue.table_name}.project_id AS p_id ,COUNT(*) as m_count FROM journals join #{Issue.table_name} on #{Journal.table_name}.journalized_type = 'Issue' and #{Journal.table_name}.journalized_id = #{Issue.table_name}.id WHERE journals.notes IS NOT NULL AND journals.notes != '' GROUP BY u_id,p_id").each do |journal|
|
||||||
|
option_num = get_option_num_by_id(journal.u_id,2,journal.p_id)
|
||||||
|
option_num.messages_for_issues = journal.m_count
|
||||||
|
option_num.save
|
||||||
|
update_score(option_num)
|
||||||
|
puts "#{journal.u_id}'s messages_for_issues number in project #{journal.p_id}: #{journal.m_count}"
|
||||||
|
end
|
||||||
|
|
||||||
|
puts ":post_issue_message calculate Completed"
|
||||||
|
#
|
||||||
|
## 更改一次缺陷状态
|
||||||
|
Journal.find_by_sql("SELECT journals.user_id AS u_id, COUNT(*) as m_count FROM journals JOIN journal_details on journals.id = journal_details.journal_id WHERE journal_details.prop_key = 'status_id' GROUP BY u_id").each do |journal|
|
||||||
|
option_num = get_option_num_by_id(journal.u_id,1)
|
||||||
|
option_num.issues_status = journal.m_count
|
||||||
|
option_num.save
|
||||||
|
update_score(option_num)
|
||||||
|
puts "#{journal.u_id}'s issues_status number: #{journal.m_count}"
|
||||||
|
end
|
||||||
|
|
||||||
|
Journal.find_by_sql("SELECT journals.user_id AS u_id,issues.project_id AS p_id,COUNT(*) as m_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' GROUP BY u_id,p_id").each do |journal|
|
||||||
|
option_num = get_option_num_by_id(journal.u_id,2,journal.p_id)
|
||||||
|
option_num.issues_status = journal.m_count
|
||||||
|
option_num.save
|
||||||
|
update_score(option_num)
|
||||||
|
puts "#{journal.u_id}'s issues_status number in project #{journal.p_id}: #{journal.m_count}"
|
||||||
|
end
|
||||||
|
|
||||||
|
puts ":change_issue_status calculate Completed"
|
||||||
|
#
|
||||||
|
## 对留言的回复
|
||||||
|
JournalsForMessage.find_by_sql("SELECT user_id AS u_id,COUNT(*) as m_count From #{JournalsForMessage.table_name} WHERE m_parent_id IS NOT NULL and jour_type = 'Project' GROUP BY u_id").each do |jfm|
|
||||||
|
option_num = get_option_num_by_id(jfm.u_id,1)
|
||||||
|
option_num.replay_for_message = jfm.m_count
|
||||||
|
option_num.save
|
||||||
|
update_score(option_num)
|
||||||
|
puts "#{jfm.u_id}'s replay_for_message number: #{jfm.m_count}"
|
||||||
|
end
|
||||||
|
|
||||||
|
JournalsForMessage.find_by_sql("SELECT user_id AS u_id,jour_id AS p_id,COUNT(*) as m_count From #{JournalsForMessage.table_name} WHERE m_parent_id IS NOT NULL and jour_type = 'Project' GROUP BY u_id,p_id").each do |jfm|
|
||||||
|
option_num = get_option_num_by_id(jfm.u_id,2,jfm.p_id)
|
||||||
|
option_num.replay_for_message = jfm.m_count
|
||||||
|
option_num.save
|
||||||
|
update_score(option_num)
|
||||||
|
puts "#{jfm.u_id}'s replay_for_message number in project #{jfm.p_id}: #{jfm.m_count}"
|
||||||
|
end
|
||||||
|
|
||||||
|
puts ":reply_message calculate Completed"
|
||||||
|
#
|
||||||
|
## 对帖子的回复
|
||||||
|
Message.find_by_sql("SELECT messages.author_id AS u_id, COUNT(*) as m_count FROM messages JOIN boards on messages.board_id = boards.id WHERE messages.parent_id IS NOT NULL AND boards.project_id != -1 GROUP BY u_id").each do |message|
|
||||||
|
option_num = get_option_num_by_id(message.u_id,1)
|
||||||
|
option_num.replay_for_memo = message.m_count
|
||||||
|
option_num.save
|
||||||
|
update_score(option_num)
|
||||||
|
puts "#{message.u_id}'s replay_for_memo number: #{message.m_count}"
|
||||||
|
end
|
||||||
|
|
||||||
|
Message.find_by_sql("SELECT messages.author_id AS u_id,boards.project_id AS p_id,COUNT(*) as m_count FROM messages JOIN boards on messages.board_id = boards.id WHERE messages.parent_id IS NOT NULL AND boards.project_id != -1 GROUP BY u_id,p_id").each do |message|
|
||||||
|
option_num = get_option_num_by_id(message.u_id,2,message.p_id)
|
||||||
|
option_num.replay_for_memo = message.m_count
|
||||||
|
option_num.save
|
||||||
|
update_score(option_num)
|
||||||
|
puts "#{message.u_id}'s replay_for_memo number in project #{message.p_id}: #{message.m_count}"
|
||||||
|
end
|
||||||
|
|
||||||
|
puts ":reply_posting calculate Completed."
|
||||||
|
#
|
||||||
|
#UserScore.transaction do
|
||||||
|
# users.each do |user_id, score|
|
||||||
|
# UserScore.find_or_create_by_user_id(user_id).update_attribute(:collaboration, score)
|
||||||
|
# end
|
||||||
|
#end
|
||||||
|
#puts "=== UserScore#collaboration calculate Completed. collaboration users count: #{users.count}"
|
||||||
|
#puts ""
|
||||||
|
#
|
||||||
|
#users.clear
|
||||||
|
#
|
||||||
|
## influence 影响力得分
|
||||||
|
##关注
|
||||||
|
Watcher.find_by_sql("SELECT watchable_id AS u_id ,COUNT(*) as m_count FROM #{Watcher.table_name} WHERE watchable_type = 'Principal' GROUP BY u_id").each do |watcher|
|
||||||
|
option_num = get_option_num_by_id(watcher.u_id,1)
|
||||||
|
option_num.follow = watcher.m_count
|
||||||
|
option_num.save
|
||||||
|
update_score(option_num)
|
||||||
|
puts "#{watcher.u_id}'s follow number: #{watcher.m_count}"
|
||||||
|
end
|
||||||
|
puts ":followed_by calculate Completed."
|
||||||
|
#
|
||||||
|
#UserScore.transaction do
|
||||||
|
# users_influence.each do |user_id, score|
|
||||||
|
# UserScore.find_or_create_by_user_id(user_id).update_attribute(:influence, score)
|
||||||
|
# end
|
||||||
|
#end
|
||||||
|
#puts "=== UserScore#influence calculate Completed. influence users count: #{users_influence.count}"
|
||||||
|
#puts ""
|
||||||
|
## skill 技术得分
|
||||||
|
|
||||||
|
#计算相关user的等级
|
||||||
|
PraiseTread.find_by_sql("SELECT user_id AS u_id,COUNT(*) AS m_count FROM `praise_treads` WHERE praise_tread_object_type IN ( 'Issue','Message') GROUP BY u_id").each do |pt|
|
||||||
|
user = User.find(pt.u_id)
|
||||||
|
level = UserLevels.get_level(user)
|
||||||
|
puts "user #{user.login}'s level is #{level}"
|
||||||
|
end
|
||||||
|
## 踩帖
|
||||||
|
PraiseTread.find_by_sql("SELECT user_id AS u_id,COUNT(*) AS m_count FROM `praise_treads` WHERE praise_tread_object_type IN ( 'Issue','Message') AND praise_or_tread = 0 GROUP BY u_id").each do |pt|
|
||||||
|
#踩别人扣分
|
||||||
|
option_num = get_option_num_by_id(pt.u_id,1)
|
||||||
|
option_num.tread = pt.m_count
|
||||||
|
option_num.save
|
||||||
|
update_score(option_num)
|
||||||
|
puts "#{pt.u_id}'s tread number: #{pt.m_count}"
|
||||||
|
end
|
||||||
|
|
||||||
|
|
||||||
|
#SELECT AS u_id,COUNT(*) AS m_count FROM `praise_treads` JOIN issues ON `issues`.id = `praise_treads`.praise_tread_object_id AND `praise_treads`.praise_tread_object_type = 'Issue' WHERE praise_or_tread = 0 GROUP BY u_id
|
||||||
|
PraiseTread.find_by_sql("SELECT `issues`.author_id AS target_u_id,`user_levels`.level AS u_level,COUNT(*) AS m_count FROM `praise_treads` JOIN issues ON `issues`.id =`praise_treads`.praise_tread_object_id AND `praise_treads`.praise_tread_object_type = 'Issue' JOIN `user_levels` ON `praise_treads`.user_id = `user_levels`.user_id WHERE praise_or_tread = 0 GROUP BY target_u_id,u_level").each do |pt|
|
||||||
|
#缺陷被人踩的次数
|
||||||
|
option_num = get_option_num_by_id(pt.target_u_id,1)
|
||||||
|
if pt.u_level == 1
|
||||||
|
option_num.tread_by_one = pt.m_count
|
||||||
|
puts "user #{pt.target_u_id} tread by one-level member #{pt.m_count} times "
|
||||||
|
elsif pt.u_level == 2
|
||||||
|
option_num.tread_by_two = pt.m_count
|
||||||
|
puts "user #{pt.target_u_id} tread by two-level member #{pt.m_count} times "
|
||||||
|
elsif pt.u_level == 3
|
||||||
|
option_num.tread_by_three = pt.m_count
|
||||||
|
puts "user #{pt.target_u_id} tread by three-level member #{pt.m_count} times "
|
||||||
|
else
|
||||||
|
puts "level error!:#{pt.u_level}"
|
||||||
|
next
|
||||||
|
end
|
||||||
|
option_num.save
|
||||||
|
update_score(option_num)
|
||||||
|
end
|
||||||
|
|
||||||
|
PraiseTread.find_by_sql("SELECT `praise_treads`.user_id AS u_id,`issues`.project_id AS p_id, COUNT(*) AS m_count FROM `praise_treads` JOIN issues ON `issues`.id =`praise_treads`.praise_tread_object_id AND `praise_treads`.praise_tread_object_type = 'Issue' WHERE praise_or_tread = 0 GROUP BY u_id,p_id").each do |pt|
|
||||||
|
#项目中踩别人缺陷的次数
|
||||||
|
option_num = get_option_num_by_id(pt.u_id,2,pt.p_id)
|
||||||
|
option_num.tread = pt.m_count
|
||||||
|
option_num.save
|
||||||
|
update_score(option_num)
|
||||||
|
puts "#{pt.u_id}'s tread number: #{pt.m_count}"
|
||||||
|
end
|
||||||
|
|
||||||
|
#项目中被人踩缺陷的次数
|
||||||
|
PraiseTread.find_by_sql("SELECT `issues`.author_id AS target_u_id,`issues`.project_id AS p_id,`user_levels`.level AS u_level,COUNT(*) AS m_count FROM `praise_treads` JOIN issues ON `issues`.id =`praise_treads`.praise_tread_object_id AND `praise_treads`.praise_tread_object_type = 'Issue' JOIN `user_levels` ON `praise_treads`.user_id = `user_levels`.user_id WHERE praise_or_tread = 0 GROUP BY target_u_id,p_id,u_level").each do |pt|
|
||||||
|
option_num = get_option_num_by_id(pt.target_u_id,2,pt.p_id)
|
||||||
|
if pt.u_level == 1
|
||||||
|
option_num.tread_by_one = pt.m_count
|
||||||
|
puts "user #{pt.target_u_id} tread by one-level member in project #{pt.p_id} #{pt.m_count} times "
|
||||||
|
elsif pt.u_level == 2
|
||||||
|
option_num.tread_by_two = pt.m_count
|
||||||
|
puts "user #{pt.target_u_id} tread by two-level member in project #{pt.p_id} #{pt.m_count} times "
|
||||||
|
elsif pt.u_level == 3
|
||||||
|
option_num.tread_by_three = pt.m_count
|
||||||
|
puts "user #{pt.target_u_id} tread by three-level member in project #{pt.p_id} #{pt.m_count} times "
|
||||||
|
else
|
||||||
|
puts "level error!:#{pt.u_level}"
|
||||||
|
next
|
||||||
|
end
|
||||||
|
option_num.save
|
||||||
|
update_score(option_num)
|
||||||
|
end
|
||||||
|
|
||||||
|
PraiseTread.find_by_sql("SELECT `messages`.author_id AS target_u_id,`user_levels`.level AS u_level,COUNT(*) AS m_count FROM `praise_treads` JOIN messages ON `messages`.id =`praise_treads`.praise_tread_object_id AND `praise_treads`.praise_tread_object_type = 'Message' JOIN `user_levels` ON `praise_treads`.user_id = `user_levels`.user_id WHERE praise_or_tread = 0 GROUP BY target_u_id,u_level").each do |pt|
|
||||||
|
#讨论区被人踩的次数
|
||||||
|
option_num = get_option_num_by_id(pt.target_u_id,1)
|
||||||
|
if pt.u_level == 1
|
||||||
|
option_num.tread_by_one += pt.m_count
|
||||||
|
puts "user #{pt.target_u_id} tread by one-level member #{pt.m_count} times "
|
||||||
|
elsif pt.u_level == 2
|
||||||
|
option_num.tread_by_two += pt.m_count
|
||||||
|
puts "user #{pt.target_u_id} tread by two-level member #{pt.m_count} times "
|
||||||
|
elsif pt.u_level == 3
|
||||||
|
option_num.tread_by_three += pt.m_count
|
||||||
|
puts "user #{pt.target_u_id} tread by three-level member #{pt.m_count} times "
|
||||||
|
else
|
||||||
|
puts "level error!:#{pt.u_level}"
|
||||||
|
next
|
||||||
|
end
|
||||||
|
option_num.save
|
||||||
|
update_score(option_num)
|
||||||
|
end
|
||||||
|
|
||||||
|
PraiseTread.find_by_sql("SELECT `praise_treads`.user_id AS u_id,`boards`.project_id AS p_id, COUNT(*) AS m_count FROM `praise_treads` JOIN messages ON `messages`.id =`praise_treads`.praise_tread_object_id AND `praise_treads`.praise_tread_object_type = 'Message' JOIN `boards` ON `boards`.id = `messages`.board_id AND `boards`.project_id != '-1' WHERE praise_or_tread = 0 GROUP BY u_id , p_id").each do |pt|
|
||||||
|
#项目讨论区中踩别人的次数
|
||||||
|
option_num = get_option_num_by_id(pt.u_id,2,pt.p_id)
|
||||||
|
option_num.tread += pt.m_count
|
||||||
|
option_num.save
|
||||||
|
update_score(option_num)
|
||||||
|
puts "#{pt.u_id}'s tread number: #{pt.m_count}"
|
||||||
|
end
|
||||||
|
|
||||||
|
#项目中被人踩的次数
|
||||||
|
PraiseTread.find_by_sql("SELECT `messages`.author_id AS target_u_id,`boards`.project_id AS p_id,`user_levels`.level AS u_level,COUNT(*) AS m_count FROM `praise_treads` JOIN messages ON `messages`.id =`praise_treads`.praise_tread_object_id AND `praise_treads`.praise_tread_object_type = 'Message' JOIN `user_levels` ON `praise_treads`.user_id = `user_levels`.user_id JOIN `boards` ON `boards`.id = `messages`.board_id AND `boards`.project_id != '-1' WHERE praise_or_tread = 0 GROUP BY target_u_id,p_id,u_level").each do |pt|
|
||||||
|
option_num = get_option_num_by_id(pt.target_u_id,2,pt.p_id)
|
||||||
|
if pt.u_level == 1
|
||||||
|
option_num.tread_by_one += pt.m_count
|
||||||
|
puts "user #{pt.target_u_id} tread by one-level member in project #{pt.p_id} #{pt.m_count} times "
|
||||||
|
elsif pt.u_level == 2
|
||||||
|
option_num.tread_by_two += pt.m_count
|
||||||
|
puts "user #{pt.target_u_id} tread by two-level member in project #{pt.p_id} #{pt.m_count} times "
|
||||||
|
elsif pt.u_level == 3
|
||||||
|
option_num.tread_by_three += pt.m_count
|
||||||
|
puts "user #{pt.target_u_id} tread by three-level member in project #{pt.p_id} #{pt.m_count} times "
|
||||||
|
else
|
||||||
|
puts "level error!:#{pt.u_level}"
|
||||||
|
next
|
||||||
|
end
|
||||||
|
option_num.save
|
||||||
|
update_score(option_num)
|
||||||
|
end
|
||||||
|
|
||||||
|
#顶贴
|
||||||
|
#SELECT AS u_id,COUNT(*) AS m_count FROM `praise_treads` JOIN issues ON `issues`.id = `praise_treads`.praise_tread_object_id AND `praise_treads`.praise_tread_object_type = 'Issue' WHERE praise_or_tread = 0 GROUP BY u_id
|
||||||
|
PraiseTread.find_by_sql("SELECT `issues`.author_id AS target_u_id,`user_levels`.level AS u_level,COUNT(*) AS m_count FROM `praise_treads` JOIN issues ON `issues`.id =`praise_treads`.praise_tread_object_id AND `praise_treads`.praise_tread_object_type = 'Issue' JOIN `user_levels` ON `praise_treads`.user_id = `user_levels`.user_id WHERE praise_or_tread = 1 GROUP BY target_u_id,u_level").each do |pt|
|
||||||
|
#缺陷被人顶的次数
|
||||||
|
option_num = get_option_num_by_id(pt.target_u_id,1)
|
||||||
|
if pt.u_level == 1
|
||||||
|
option_num.praise_by_one = pt.m_count
|
||||||
|
puts "user #{pt.target_u_id} praise by one-level member #{pt.m_count} times "
|
||||||
|
elsif pt.u_level == 2
|
||||||
|
option_num.praise_by_two = pt.m_count
|
||||||
|
puts "user #{pt.target_u_id} praise by two-level member #{pt.m_count} times "
|
||||||
|
elsif pt.u_level == 3
|
||||||
|
option_num.praise_by_three = pt.m_count
|
||||||
|
puts "user #{pt.target_u_id} praise by three-level member #{pt.m_count} times "
|
||||||
|
else
|
||||||
|
puts "level error!:#{pt.u_level}"
|
||||||
|
next
|
||||||
|
end
|
||||||
|
option_num.save
|
||||||
|
update_score(option_num)
|
||||||
|
end
|
||||||
|
|
||||||
|
#项目中被人顶缺陷的次数
|
||||||
|
PraiseTread.find_by_sql("SELECT `issues`.author_id AS target_u_id,`issues`.project_id AS p_id,`user_levels`.level AS u_level,COUNT(*) AS m_count FROM `praise_treads` JOIN issues ON `issues`.id =`praise_treads`.praise_tread_object_id AND `praise_treads`.praise_tread_object_type = 'Issue' JOIN `user_levels` ON `praise_treads`.user_id = `user_levels`.user_id WHERE praise_or_tread = 1 GROUP BY target_u_id,p_id,u_level").each do |pt|
|
||||||
|
option_num = get_option_num_by_id(pt.target_u_id,2,pt.p_id)
|
||||||
|
if pt.u_level == 1
|
||||||
|
option_num.praise_by_one = pt.m_count
|
||||||
|
puts "user #{pt.target_u_id} praise by one-level member in project #{pt.p_id} #{pt.m_count} times "
|
||||||
|
elsif pt.u_level == 2
|
||||||
|
option_num.praise_by_two = pt.m_count
|
||||||
|
puts "user #{pt.target_u_id} praise by two-level member in project #{pt.p_id} #{pt.m_count} times "
|
||||||
|
elsif pt.u_level == 3
|
||||||
|
option_num.praise_by_three = pt.m_count
|
||||||
|
puts "user #{pt.target_u_id} praise by three-level member in project #{pt.p_id} #{pt.m_count} times "
|
||||||
|
else
|
||||||
|
puts "level error!:#{pt.u_level}"
|
||||||
|
next
|
||||||
|
end
|
||||||
|
option_num.save
|
||||||
|
update_score(option_num)
|
||||||
|
end
|
||||||
|
|
||||||
|
PraiseTread.find_by_sql("SELECT `messages`.author_id AS target_u_id,`user_levels`.level AS u_level,COUNT(*) AS m_count FROM `praise_treads` JOIN messages ON `messages`.id =`praise_treads`.praise_tread_object_id AND `praise_treads`.praise_tread_object_type = 'Message' JOIN `user_levels` ON `praise_treads`.user_id = `user_levels`.user_id WHERE praise_or_tread = 1 GROUP BY target_u_id,u_level").each do |pt|
|
||||||
|
#讨论区被人顶的次数
|
||||||
|
option_num = get_option_num_by_id(pt.target_u_id,1)
|
||||||
|
if pt.u_level == 1
|
||||||
|
option_num.praise_by_one += pt.m_count
|
||||||
|
puts "user #{pt.target_u_id} praise by one-level member #{pt.m_count} times "
|
||||||
|
elsif pt.u_level == 2
|
||||||
|
option_num.praise_by_two += pt.m_count
|
||||||
|
puts "user #{pt.target_u_id} praise by two-level member #{pt.m_count} times "
|
||||||
|
elsif pt.u_level == 3
|
||||||
|
option_num.praise_by_three += pt.m_count
|
||||||
|
puts "user #{pt.target_u_id} praise by three-level member #{pt.m_count} times "
|
||||||
|
else
|
||||||
|
puts "level error!:#{pt.u_level}"
|
||||||
|
next
|
||||||
|
end
|
||||||
|
option_num.save
|
||||||
|
update_score(option_num)
|
||||||
|
end
|
||||||
|
|
||||||
|
#项目中被人踩的次数
|
||||||
|
PraiseTread.find_by_sql("SELECT `messages`.author_id AS target_u_id,`boards`.project_id AS p_id,`user_levels`.level AS u_level,COUNT(*) AS m_count FROM `praise_treads` JOIN messages ON `messages`.id =`praise_treads`.praise_tread_object_id AND `praise_treads`.praise_tread_object_type = 'Message' JOIN `user_levels` ON `praise_treads`.user_id = `user_levels`.user_id JOIN `boards` ON `boards`.id = `messages`.board_id AND `boards`.project_id != '-1' WHERE praise_or_tread = 1 GROUP BY target_u_id,p_id,u_level").each do |pt|
|
||||||
|
option_num = get_option_num_by_id(pt.target_u_id,2,pt.p_id)
|
||||||
|
if pt.u_level == 1
|
||||||
|
option_num.praise_by_one += pt.m_count
|
||||||
|
puts "user #{pt.target_u_id} praise by one-level member in project #{pt.p_id} #{pt.m_count} times "
|
||||||
|
elsif pt.u_level == 2
|
||||||
|
option_num.praise_by_two += pt.m_count
|
||||||
|
puts "user #{pt.target_u_id} praise by two-level member in project #{pt.p_id} #{pt.m_count} times "
|
||||||
|
elsif pt.u_level == 3
|
||||||
|
option_num.praise_by_three += pt.m_count
|
||||||
|
puts "user #{pt.target_u_id} praise by three-level member in project #{pt.p_id} #{pt.m_count} times "
|
||||||
|
else
|
||||||
|
puts "level error!:#{pt.u_level}"
|
||||||
|
next
|
||||||
|
end
|
||||||
|
option_num.save
|
||||||
|
update_score(option_num)
|
||||||
|
end
|
||||||
|
|
||||||
|
puts "UserScore#skill calculate Completed."
|
||||||
|
#puts ""
|
||||||
|
#
|
||||||
|
## active 项目贡献得分
|
||||||
|
## 提交代码
|
||||||
|
Changeset.find_by_sql("SELECT user_id AS u_id, COUNT(*) AS m_count FROM `changesets` GROUP BY u_id").each do |changeset|
|
||||||
|
unless changeset.u_id.nil?
|
||||||
|
option_num = get_option_num_by_id(changeset.u_id,1)
|
||||||
|
option_num.changeset = changeset.m_count
|
||||||
|
option_num.save
|
||||||
|
update_score(option_num)
|
||||||
|
puts "#{changeset.u_id}'s changeset number: #{changeset.m_count}"
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
Changeset.find_by_sql("SELECT `changesets`.user_id AS u_id, `repositories`.project_id AS p_id,COUNT(*) AS m_count FROM `changesets` JOIN `repositories` ON `repositories`.id = `changesets`.repository_id GROUP BY u_id,p_id ").each do |changeset|
|
||||||
|
unless changeset.nil?
|
||||||
|
option_num = get_option_num_by_id(changeset.u_id,2,changeset.p_id)
|
||||||
|
option_num.changeset = changeset.m_count
|
||||||
|
option_num.save
|
||||||
|
update_score(option_num)
|
||||||
|
puts "#{changeset.u_id}'s changeset number in project #{changeset.p_id}: #{changeset.m_count}"
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
puts ":push_code calculate Completed."
|
||||||
|
##提交文档
|
||||||
|
Document.find_by_sql("SELECT user_id AS u_id ,COUNT(*) AS m_count FROM `documents` GROUP BY user_id").each do |document|
|
||||||
|
option_num = get_option_num_by_id(document.u_id,1)
|
||||||
|
option_num.document = document.m_count
|
||||||
|
option_num.save
|
||||||
|
update_score(option_num)
|
||||||
|
puts "#{document.u_id}'s document number: #{document.m_count}"
|
||||||
|
end
|
||||||
|
|
||||||
|
Document.find_by_sql("SELECT user_id AS u_id , project_id AS p_id, COUNT(*) AS m_count FROM `documents` GROUP BY u_id,p_id").each do |document|
|
||||||
|
option_num = get_option_num_by_id(document.u_id,2,document.p_id)
|
||||||
|
option_num.document = document.m_count
|
||||||
|
option_num.save
|
||||||
|
update_score(option_num)
|
||||||
|
puts "#{document.u_id}'s document number in project #{document.p_id}: #{document.m_count}"
|
||||||
|
end
|
||||||
|
|
||||||
|
puts ":push_document calculate Completed."
|
||||||
|
##提交附件
|
||||||
|
Attachment.find_by_sql("SELECT author_id AS u_id,COUNT(*) as m_count FROM #{Attachment.table_name} WHERE container_type = 'Project' GROUP By u_id").each do |attachment|
|
||||||
|
option_num = get_option_num_by_id(attachment.u_id,1)
|
||||||
|
option_num.attachment = attachment.m_count
|
||||||
|
option_num.save
|
||||||
|
update_score(option_num)
|
||||||
|
puts "#{attachment.u_id}'s attachment number: #{attachment.m_count}"
|
||||||
|
end
|
||||||
|
|
||||||
|
Attachment.find_by_sql("SELECT author_id AS u_id,container_id AS p_id,COUNT(*) as m_count FROM #{Attachment.table_name} WHERE container_type = 'Project' GROUP By u_id,p_id").each do |attachment|
|
||||||
|
option_num = get_option_num_by_id(attachment.u_id,2,attachment.p_id)
|
||||||
|
option_num.attachment = attachment.m_count
|
||||||
|
option_num.save
|
||||||
|
update_score(option_num)
|
||||||
|
puts "#{attachment.u_id}'s attachment number in project #{attachment.p_id}: #{attachment.m_count}"
|
||||||
|
end
|
||||||
|
|
||||||
|
puts ":push_file calculate Completed."
|
||||||
|
##更新完成度
|
||||||
|
Journal.find_by_sql("SELECT #{Journal.table_name}.user_id AS u_id, COUNT(*) as m_count FROM #{Journal.table_name} JOIN #{JournalDetail.table_name} ON #{JournalDetail.table_name}.journal_id = #{Journal.table_name}.id WHERE #{JournalDetail.table_name}.prop_key = 'done_ratio' GROUP BY u_id ").each do |j|
|
||||||
|
option_num = get_option_num_by_id(j.u_id,1)
|
||||||
|
option_num.issue_done_ratio = j.m_count
|
||||||
|
option_num.save
|
||||||
|
update_score(option_num)
|
||||||
|
puts "#{j.u_id}'s issue_done_ratio number: #{j.m_count}"
|
||||||
|
end
|
||||||
|
|
||||||
|
Journal.find_by_sql("SELECT #{Journal.table_name}.user_id AS u_id, #{Issue.table_name}.project_id AS p_id,COUNT(*) as m_count FROM #{Journal.table_name} JOIN #{JournalDetail.table_name} ON #{JournalDetail.table_name}.journal_id = #{Journal.table_name}.id JOIN issues ON issues.id = journals.journalized_id and journalized_type = 'Issue' WHERE #{JournalDetail.table_name}.prop_key = 'done_ratio' GROUP BY u_id,p_id ").each do |j|
|
||||||
|
option_num = get_option_num_by_id(j.u_id,2,j.p_id)
|
||||||
|
option_num.issue_done_ratio = j.m_count
|
||||||
|
option_num.save
|
||||||
|
update_score(option_num)
|
||||||
|
puts "#{j.u_id}'s issue_done_ratio number in project #{j.p_id}: #{j.m_count}"
|
||||||
|
end
|
||||||
|
|
||||||
|
puts ":update_issue_ratio calculate Completed."
|
||||||
|
##发布缺陷
|
||||||
|
Issue.find_by_sql("SELECT author_id AS u_id,COUNT(*) as m_count FROM #{Issue.table_name} GROUP BY u_id").each do |issues|
|
||||||
|
option_num = get_option_num_by_id(issues.u_id,1)
|
||||||
|
option_num.post_issue = issues.m_count
|
||||||
|
option_num.save
|
||||||
|
update_score(option_num)
|
||||||
|
puts "#{issues.u_id}'s issues number: #{issues.m_count}"
|
||||||
|
end
|
||||||
|
|
||||||
|
Issue.find_by_sql("SELECT author_id AS u_id,project_id AS p_id,COUNT(*) as m_count FROM #{Issue.table_name} GROUP BY u_id,p_id").each do |issues|
|
||||||
|
option_num = get_option_num_by_id(issues.u_id,2,issues.p_id)
|
||||||
|
option_num.post_issue = issues.m_count
|
||||||
|
option_num.save
|
||||||
|
update_score(option_num)
|
||||||
|
puts "#{issues.u_id}'s issues number in project #{issues.p_id}: #{issues.m_count}"
|
||||||
|
end
|
||||||
|
puts ":post_issue calculate Completed."
|
||||||
|
#
|
||||||
|
#
|
||||||
|
#UserScore.transaction do
|
||||||
|
# users_active.each do |user_id, score|
|
||||||
|
# UserScore.find_or_create_by_user_id(user_id).update_attribute(:active, score)
|
||||||
|
# end
|
||||||
|
#end
|
||||||
|
#puts "=== UserScore#active calculate Completed. active users count: #{users_active.count}"
|
||||||
|
#UserGrade.transaction do
|
||||||
|
# grades.each do |grade_id,score|
|
||||||
|
# grade = UserGrade.find(grade_id)
|
||||||
|
# grade.grade = score
|
||||||
|
# grade.save
|
||||||
|
# end
|
||||||
|
#end
|
||||||
|
#puts "=== UserGrid calculate Completed. UserGrids count: #{grades.count}"
|
||||||
|
end
|
||||||
|
end
|
Loading…
Reference in New Issue