diff --git a/app/controllers/bids_controller.rb b/app/controllers/bids_controller.rb
index be27a71ea..047f7103e 100644
--- a/app/controllers/bids_controller.rb
+++ b/app/controllers/bids_controller.rb
@@ -488,6 +488,11 @@ class BidsController < ApplicationController
if @bid.homework_type
@homework = HomeworkAttach.new
+ if @bid.proportion
+ teacher_proportion = @bid.proportion * 1.0 / 100
+ else
+ teacher_proportion = 1.0
+ end
#@homework_list = @bid.homeworks
#增加作业按评分排序,
#@homework_list = @bid.homeworks.eager_load(:rate_averages, :user, :attachments).order('seems_rateable_cached_ratings.avg DESC').order("#{HomeworkAttach.table_name}.created_at ASC")
@@ -495,7 +500,7 @@ class BidsController < ApplicationController
(SELECT AVG(stars) FROM seems_rateable_rates WHERE rateable_type = 'HomeworkAttach' AND rateable_id = homework_attaches.id AND rater_id = #{@bid.author_id}) AS t_score,
(SELECT AVG(stars) FROM seems_rateable_rates WHERE rateable_type = 'HomeworkAttach' AND rateable_id = homework_attaches.id AND rater_id <> #{@bid.author_id}) AS s_score
FROM homework_attaches WHERE bid_id = #{@bid.id} ORDER BY
- (CASE WHEN t_score IS NULL THEN 0 ELSE t_score * #{@bid.proportion * 1.0 / 100} END + CASE WHEN s_score IS NULL THEN 0 ELSE s_score * #{1 - @bid.proportion * 1.0 / 100} END) DESC,created_at ASC")
+ (CASE WHEN t_score IS NULL THEN 0 ELSE t_score * #{teacher_proportion} END + CASE WHEN s_score IS NULL THEN 0 ELSE s_score * #{1 - teacher_proportion} END) DESC,created_at ASC")
if params[:student_id].present?
@temp = []
@homework_list.each do |pro|
diff --git a/app/controllers/files_controller.rb b/app/controllers/files_controller.rb
index c80ce6d69..666c39d30 100644
--- a/app/controllers/files_controller.rb
+++ b/app/controllers/files_controller.rb
@@ -38,6 +38,17 @@ class FilesController < ApplicationController
@isproject = true
@containers = [ Project.includes(:attachments).reorder("#{Attachment.table_name}.created_on DESC").find(@project.id)]
@containers += @project.versions.includes(:attachments).reorder("#{Attachment.table_name}.created_on DESC").all.sort
+
+ all_attachments = []
+ @containers.each do |container|
+ all_attachments += container.attachments
+ end
+ @limit = 10
+ @feedback_count = all_attachments.count
+ @feedback_pages = Paginator.new @feedback_count, @limit, params['page']
+ @offset ||= @feedback_pages.offset
+ @curse_attachments = all_attachments[@offset, @limit]
+
render :layout => !request.xhr?
elsif params[:course_id]
@isproject = false
@@ -67,6 +78,18 @@ class FilesController < ApplicationController
else
@containers = [ Course.includes(:attachments).reorder("#{Attachment.table_name}.created_on desc").find(@course.id)]
end
+
+ all_attachments = []
+ @containers.each do |container|
+ all_attachments += container.attachments
+ end
+
+ @limit = 10
+ @feedback_count = all_attachments.count
+ @feedback_pages = Paginator.new @feedback_count, @limit, params['page']
+ @offset ||= @feedback_pages.offset
+ @curse_attachments = all_attachments[@offset, @limit]
+
render :layout => 'base_courses'
end
end
diff --git a/app/controllers/news_controller.rb b/app/controllers/news_controller.rb
index 9437889b2..e564bc940 100644
--- a/app/controllers/news_controller.rb
+++ b/app/controllers/news_controller.rb
@@ -148,7 +148,8 @@ class NewsController < ApplicationController
flash[:notice] = l(:notice_successful_update)
redirect_to news_path(@news)
else
- render :action => 'edit'
+ #flash[:error] = l(:notice_successful_update)
+ redirect_to news_path(@news)
end
end
diff --git a/app/controllers/projects_controller.rb b/app/controllers/projects_controller.rb
index 329159a05..ee42c2c6a 100644
--- a/app/controllers/projects_controller.rb
+++ b/app/controllers/projects_controller.rb
@@ -697,8 +697,8 @@ class ProjectsController < ApplicationController
else # @project.project_type == Project::ProjectType_project
roles = Role.find_all_givable
@subPage_title = l :label_member_list
- @members = @project.member_principals.includes(:roles, :principal).all
- @members = sort_project_members(@project, @members)
+ @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)
@applied_members = appied_project_members(@project, @members)
end
@members = paginateHelper @members
diff --git a/app/helpers/courses_helper.rb b/app/helpers/courses_helper.rb
index aad350d22..e08e50e80 100644
--- a/app/helpers/courses_helper.rb
+++ b/app/helpers/courses_helper.rb
@@ -441,7 +441,7 @@ module CoursesHelper
def homework_user_of_homework homework,is_teacher
homework_users = ""
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
homework_users = homework_users + "、"
end
diff --git a/app/helpers/user_score_helper.rb b/app/helpers/user_score_helper.rb
index 1353f9a1c..376f676b7 100644
--- a/app/helpers/user_score_helper.rb
+++ b/app/helpers/user_score_helper.rb
@@ -381,6 +381,46 @@ module UserScoreHelper
result
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)
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)
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
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
@@ -448,9 +501,21 @@ 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 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
- 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
@@ -471,9 +536,21 @@ FROM `users` where id = #{user.id}")
def issues_status_num(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
+ #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
- 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
@@ -481,10 +558,10 @@ FROM `users` where id = #{user.id}")
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}'")
+ 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
#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
@@ -497,9 +574,21 @@ FROM `users` where id = #{user.id}")
def replay_for_message_num(user,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
- 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
@@ -508,7 +597,7 @@ FROM `users` where id = #{user.id}")
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}'")
+ 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
@@ -521,9 +610,21 @@ FROM `users` where id = #{user.id}")
def replay_for_memo_num(user,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
- 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
@@ -538,16 +639,22 @@ FROM `users` where id = #{user.id}")
#更新被关注的人数
def update_follow(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)
end
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
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
#更新帖子踩各项数量
@@ -689,9 +796,21 @@ FROM `users` where id = #{user.id}")
def changeset_num(user,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
- 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
@@ -705,9 +824,21 @@ FROM `users` where id = #{user.id}")
def document_num(user,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
- 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
@@ -721,9 +852,21 @@ FROM `users` where id = #{user.id}")
def attachment_num(user,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
- 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
@@ -736,9 +879,21 @@ FROM `users` where id = #{user.id}")
def issue_done_ratio_num(user,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
- 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
@@ -752,9 +907,21 @@ FROM `users` where id = #{user.id}")
def post_issue_num(user,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
- 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
@@ -778,6 +945,9 @@ FROM `users` where id = #{user.id}")
update_attachment(user,type,project)
update_issue_done_ratio(user,type,project)
update_post_issue(user,type,project)
+ if project.nil?
+ update_follow(user,type)
+ end
update_score(ooption_num)
ooption_num
end
diff --git a/app/models/attachment.rb b/app/models/attachment.rb
index 8f3d68d02..e25434e6e 100644
--- a/app/models/attachment.rb
+++ b/app/models/attachment.rb
@@ -29,9 +29,9 @@ class Attachment < ActiveRecord::Base
include UserScoreHelper
validates_presence_of :filename, :author
- validates_length_of :filename, :maximum => 255
- validates_length_of :disk_filename, :maximum => 255
- validates_length_of :description, :maximum => 255
+ validates_length_of :filename, :maximum => 254
+ validates_length_of :disk_filename, :maximum => 254
+ validates_length_of :description, :maximum => 254
validate :validate_max_file_size
diff --git a/app/views/bids/_homework_list.html.erb b/app/views/bids/_homework_list.html.erb
index 6797bc9eb..6d3a2adcc 100644
--- a/app/views/bids/_homework_list.html.erb
+++ b/app/views/bids/_homework_list.html.erb
@@ -28,13 +28,15 @@