diff --git a/.gitignore b/.gitignore index 9d33b264c..601f691a1 100644 --- a/.gitignore +++ b/.gitignore @@ -39,3 +39,4 @@ public/javascripts/wechat/node_modules/ .access_token tmux*.log config/wechat.yml +config/oneapm.yml diff --git a/app/controllers/blogs_controller.rb b/app/controllers/blogs_controller.rb index eeea2d01a..8c6cc4f0c 100644 --- a/app/controllers/blogs_controller.rb +++ b/app/controllers/blogs_controller.rb @@ -26,7 +26,7 @@ class BlogsController < ApplicationController @type = 2 @topics.each do |topic| - topic[:infocount] = get_praise_num(topic) + (topic.parent ? topic.parent.children.count : topic.children.count) + topic[:infocount] = get_praise_num(topic) + BlogComment.where("root_id = #{topic.id}").count if topic[:infocount] < 0 topic[:infocount] = 0 end diff --git a/app/controllers/homework_common_controller.rb b/app/controllers/homework_common_controller.rb index b9a49dbcb..7f89b0fb9 100644 --- a/app/controllers/homework_common_controller.rb +++ b/app/controllers/homework_common_controller.rb @@ -257,26 +257,25 @@ class HomeworkCommonController < ApplicationController def stop_anonymous_comment @homework_detail_manual.update_column('comment_status', 3) @homework_detail_manual.update_column('evaluation_end', Date.today) - #计算缺评扣分 + # 计算缺评扣分 work_ids = "(" + @homework.student_works.has_committed.map(&:id).join(",") + ")" - if @homework.homework_type != 3 - @homework.student_works.has_committed.each do |student_work| - absence_penalty_count = student_work.user.student_works_evaluation_distributions.where("student_work_id IN #{work_ids}").count - student_work.user.student_works_scores.where("student_work_id IN #{work_ids} and reviewer_role = 3").count - student_work.absence_penalty = absence_penalty_count > 0 ? absence_penalty_count * @homework_detail_manual.absence_penalty : 0 - student_work.save - end - else - @homework.student_works.has_committed.each do |student_work| - absence_penalty_count = student_work.user.student_works_evaluation_distributions.where("student_work_id IN #{work_ids}").count - student_work.user.student_works_scores.where("student_work_id IN #{work_ids} and reviewer_role = 3").count - student_work.absence_penalty = absence_penalty_count > 0 ? absence_penalty_count * @homework_detail_manual.absence_penalty : 0 - student_work.save - pros = student_work.student_work_projects.where("is_leader = 0") - user_ids = pros.empty? ? "(-1)" : "(" + pros.map{|stu|stu.user_id}.join(",") + ")" - student_works = @homework.student_works.where("user_id in #{user_ids}") - student_works.each do |st_work| - absence_penalty_count = st_work.user.student_works_evaluation_distributions.where("student_work_id IN #{work_ids}").count - st_work.user.student_works_scores.where("student_work_id IN #{work_ids} and reviewer_role = 3").count - st_work.absence_penalty = absence_penalty_count > 0 ? absence_penalty_count * @homework_detail_manual.absence_penalty : 0 - st_work.save + + # 参与匿评的缺评计算 + @homework.student_works.where("work_status != 0").each do |student_work| + absence_penalty_count = student_work.user.student_works_evaluation_distributions.where("student_work_id IN #{work_ids}").count - student_work.user.student_works_scores.where("student_work_id IN #{work_ids} and reviewer_role = 3").count + student_work.absence_penalty = absence_penalty_count > 0 ? absence_penalty_count * @homework_detail_manual.absence_penalty : 0 + student_work.save + end + + # 未参与匿评的缺评计算 + if @homework_detail_manual.no_anon_penalty == 0 + all_dis_eva = StudentWorksEvaluationDistribution.where("student_work_id IN #{work_ids}") + has_sw_count = all_dis_eva.select("distinct user_id").count + anon_count = all_dis_eva.count / has_sw_count + @homework.student_works.where("work_status != 0").each do |student_work| + if student_work.user.student_works_evaluation_distributions.where("student_work_id IN #{work_ids}").count == 0 + student_work.absence_penalty = @homework_detail_manual.absence_penalty * anon_count + student_work.save end end end diff --git a/app/controllers/issues_controller.rb b/app/controllers/issues_controller.rb index a137b7cd1..c6cb018a5 100644 --- a/app/controllers/issues_controller.rb +++ b/app/controllers/issues_controller.rb @@ -102,6 +102,7 @@ class IssuesController < ApplicationController @issue_count = @query.issue_count @test = params[:test] @project_sort = 'issues.updated_on desc' + if params[:test] != "0" case @test when "1" @@ -284,11 +285,11 @@ class IssuesController < ApplicationController # 用户编辑更改issue def update - # params[:assigned_to_id] = nil if params[:assigned_to_id].to_i == 0 + # params[:assigned_to_id] = nil if params[:assigned_to_id].to_i == 0 + # params[:fixed_version_id] = nil if params[:fixed_version_id].to_i == 0 if params[:issue_detail] issue = Issue.find(params[:id]) issue = update_user_issue_detail(issue, params) - @issue.assigned_to_id = nil if @issue.assigned_to_id == 0 @saved = update_user_issue_detail(issue, params) return else @@ -296,6 +297,7 @@ class IssuesController < ApplicationController return unless update_issue_from_params @issue.save_attachments(params[:attachments] || (params[:issue] && params[:issue][:uploads])) @issue.assigned_to_id = nil if @issue.assigned_to_id == 0 + @issue.fixed_version_id = nil if @issue.fixed_version_id == 0 saved = false begin @saved = @issue.save_issue_with_child_records(params, @time_entry) @@ -630,7 +632,9 @@ class IssuesController < ApplicationController end end # 搜索结果 - @issues_filter = @query.issues(:order => @project_sort) + # SELECT assigned_to_id, count(*) as ac FROM `issues` where project_id = @project.id group by assigned_to_id order by ac desc; + @issues_filter = @query.issues.sort_by{ |i| Issue.where(:project_id => @project.id , :assigned_to_id => i.assigned_to_id).count }.reverse + # @issues_filter = @query.issues(:order => @project_sort) # if params[:type] == 1 || params[:type].nil? # @results = @issues_filter @@ -668,7 +672,7 @@ class IssuesController < ApplicationController @alltotal[issue.tracker_id.to_i] = @alltotal[issue.tracker_id.to_i] + 1 user_id = issue.assigned_to_id if issue.assigned_to_id.nil? - user_id = issue.author_id + user_id = 0 end if !@results[user_id].nil? @@ -696,7 +700,7 @@ class IssuesController < ApplicationController tmpuser = User.find(user_id) - @results[user_id][:name] = tmpuser.nil? ? " " : tmpuser.show_name + @results[user_id][:name] = tmpuser.nil? ? "" : tmpuser.show_name #所有的 @results[user_id][0] = 1 for i in 1..17 do diff --git a/app/controllers/projects_controller.rb b/app/controllers/projects_controller.rb index 2bdaddb25..b9d61e61e 100644 --- a/app/controllers/projects_controller.rb +++ b/app/controllers/projects_controller.rb @@ -1,3 +1,4 @@ +# encoding: utf-8 # Redmine - project management software # Copyright (C) 2006-2013 Jean-Philippe Lang # @@ -31,7 +32,7 @@ class ProjectsController < ApplicationController before_filter :authorize, :only => [:show, :settings, :edit, :sort_project_members, :update, :modules, :close, :reopen,:view_homework_attaches,:course] before_filter :authorize_global, :only => [:new, :create,:view_homework_attaches] before_filter :require_admin, :only => [ :copy, :unarchive, :destroy, :calendar] - before_filter :file, :statistics #:watcherlist + before_filter :file # 除非项目内人员,不可查看成员, TODO: 完了写报表里去 # before_filter :memberAccess, only: :member @@ -534,6 +535,23 @@ class ProjectsController < ApplicationController end end + def project_watcherlist + unless @project.nil? + if !@project.is_public? && !User.current.member_of?(@project) && !User.current.admin? + render_403 + else + @users -= watched.watcher_users if @watched + end + @watchers = @project.watcher_users + @limit = 20 + @is_remote = true + @watchers_count = @watchers.count + @watcher_pages = Paginator.new @watchers_count, @limit, params['page'] || 1 + @offset ||= @watcher_pages.offset + @watchers = paginateHelper @watchers, 20 + end + end + # include CoursesHelper def member # 消息"同意加入项目" @@ -600,6 +618,13 @@ class ProjectsController < ApplicationController def member_forked @forked_projects = Project.where(:forked_from_project_id => @project.id) + @limit = 20 + @is_remote = true + @forked_count = @forked_projects.count + @forked_pages = Paginator.new @forked_count, @limit, params['page'] || 1 + @offset ||= @forked_pages.offset + @forked_projects = paginateHelper @forked_projects, @limit + # @forked_members = User.find_by_sql("SELECT u.* FROM `projects` p,`users` u where p.user_id = u.id and p.forked_from_project_id = #{@project.id} ;") end @@ -739,7 +764,7 @@ class ProjectsController < ApplicationController rescue Exception => e puts e end - # 删除Trustie班额本库记录 + # 删除Trustie版本库记录 repoisitory = Repository.where(:project_id => @project.id, :type => GITLABTYPE).first repoisitory.delete @project.update_column(:gpid, nil) @@ -799,6 +824,31 @@ class ProjectsController < ApplicationController @project = nil end + REP_TYPE = "Repository::Gitlab" + # Delete @project's repository + def destroy_repository + if is_project_manager?(User.current.id, @project.id) + @gitlab_repository = Repository.where(:project_id => @project, :type => REP_TYPE).first + @is_true = params[:is_true] + if @is_true + begin + g = Gitlab.client + g.delete_project(@project.gpid) + @gitlab_repository.destroy + @gitlab_repository = nil + scm = params[:repository_scm] || (Redmine::Scm::Base.all & Setting.enabled_scm).first + @repository = Repository.factory(scm) + @repository.is_default = @project.repository.nil? + @project.update_attribute(:gpid, nil) + rescue Exception => e + puts e + end + end + else + return render_403 + end + end + def show_projects_score respond_to do |format| format.html { render :layout => "base_projects"} @@ -939,16 +989,6 @@ class ProjectsController < ApplicationController true end - def watcherlist - unless @project.nil? - if !@project.is_public? && !User.current.member_of?(@project) && !User.current.admin? - render_403 - else - @users -= watched.watcher_users if @watched - end - end - end - #gcm def desc_sort_course_by_avtivity(activity_count,projects) return projects if activity_count.size<2 @@ -962,5 +1002,7 @@ class ProjectsController < ApplicationController end return projects end + #gcmend end + diff --git a/app/controllers/pull_requests_controller.rb b/app/controllers/pull_requests_controller.rb index ad60f2b70..e4a2dc9df 100644 --- a/app/controllers/pull_requests_controller.rb +++ b/app/controllers/pull_requests_controller.rb @@ -91,10 +91,11 @@ class PullRequestsController < ApplicationController # 如果分支有改动 if compare_pull_request(source_branch, target_project_id, target_branch) # 如果传送了目标项目ID即向fork源项目发送请求 - if params[:forked_project_id] && params[:source_project] == "forked_project_name" + # if params[:forked_project_id] && params[:source_project] == "forked_project_name" + if params[:target_project_id].to_i != @project.id target_project_id = params[:forked_project_id].to_i request = @g.create_merge_request(@project.gpid, title, User.current.gid, :description => description, :source_branch => source_branch, :target_branch => target_branch, :target_project_id => target_project_id) - @fork_project_name = Project.find(@project.forked_from_project_id).try(:name) + @fork_project_name = Project.find(params[:target_project_id]).try(:name) @fork_pr_message = true if @fork_project_name else request = @g.create_merge_request(@project.gpid, title, User.current.gid, :description => description, :source_branch => source_branch, :target_branch => target_branch) @@ -108,7 +109,7 @@ class PullRequestsController < ApplicationController format.js{redirect_to new_project_pull_request_path(:show_tip => tip)} end end - rescue Exception => e + rescue Gitlab::Error::Conflict => e @message = e.message end end @@ -226,7 +227,7 @@ class PullRequestsController < ApplicationController # Gets the comments on a merge request. # # @example - # Gitlab.merge_request_comments(5, 1) + # Gitlab.merge_request_comments(5, 1) def pull_request_comments begin @comments = @g.merge_request_comments(@project.gpid, params[:id]).reverse diff --git a/app/controllers/student_work_controller.rb b/app/controllers/student_work_controller.rb index fb99f6507..0c6b42ca5 100644 --- a/app/controllers/student_work_controller.rb +++ b/app/controllers/student_work_controller.rb @@ -982,33 +982,38 @@ class StudentWorkController < ApplicationController end end - if params[:absence_penalty] && homework_detail_manual.absence_penalty.to_s != params[:absence_penalty].to_s - homework_detail_manual.absence_penalty = params[:absence_penalty] + no_anon_penalty = params[:no_anon_penalty] ? 1 : 0 + if no_anon_penalty != homework_detail_manual.no_anon_penalty + homework_detail_manual.no_anon_penalty = no_anon_penalty if homework_detail_manual.comment_status == 3 #当前作业处于匿评结束状态,修改缺评扣分才会修改每个作品应扣分的值 work_ids = "(" + @homework.student_works.has_committed.map(&:id).join(",") + ")" - if @homework.homework_type != 3 - @homework.student_works.has_committed.each do |student_work| - absence_penalty_count = student_work.user.student_works_evaluation_distributions.where("student_work_id IN #{work_ids}").count - student_work.user.student_works_scores.where("student_work_id IN #{work_ids} and reviewer_role = 3").count - student_work.absence_penalty = absence_penalty_count > 0 ? absence_penalty_count * homework_detail_manual.absence_penalty : 0 - student_work.save - end - else - @homework.student_works.has_committed.each do |student_work| - absence_penalty_count = student_work.user.student_works_evaluation_distributions.where("student_work_id IN #{work_ids}").count - student_work.user.student_works_scores.where("student_work_id IN #{work_ids} and reviewer_role = 3").count - student_work.absence_penalty = absence_penalty_count > 0 ? absence_penalty_count * homework_detail_manual.absence_penalty : 0 - student_work.save - pros = student_work.student_work_projects.where("is_leader = 0") - user_ids = pros.empty? ? "(-1)" : "(" + pros.map{|stu|stu.user_id}.join(",") + ")" - student_works = @homework.student_works.where("user_id in #{user_ids}") - student_works.each do |st_work| - absence_penalty_count = st_work.user.student_works_evaluation_distributions.where("student_work_id IN #{work_ids}").count - st_work.user.student_works_scores.where("student_work_id IN #{work_ids} and reviewer_role = 3").count - st_work.absence_penalty = absence_penalty_count > 0 ? absence_penalty_count * homework_detail_manual.absence_penalty : 0 - st_work.save + all_dis_eva = StudentWorksEvaluationDistribution.where("student_work_id IN #{work_ids}") + has_sw_count = all_dis_eva.select("distinct user_id").count + anon_count = all_dis_eva.count / has_sw_count + @homework.student_works.where("work_status != 0").each do |student_work| + if student_work.user.student_works_evaluation_distributions.where("student_work_id IN #{work_ids}").count == 0 + if no_anon_penalty == 0 + student_work.absence_penalty = homework_detail_manual.absence_penalty * anon_count + else + student_work.absence_penalty = 0 end + student_work.save end end end + homework_detail_manual.save if homework_detail_manual + end + if (params[:absence_penalty] && homework_detail_manual.absence_penalty.to_s != params[:absence_penalty].to_s) + homework_detail_manual.absence_penalty = params[:absence_penalty] + if homework_detail_manual.comment_status == 3 #当前作业处于匿评结束状态,修改缺评扣分才会修改每个作品应扣分的值 + work_ids = "(" + @homework.student_works.has_committed.map(&:id).join(",") + ")" + @homework.student_works.where("work_status != 0").each do |student_work| + absence_penalty_count = student_work.user.student_works_evaluation_distributions.where("student_work_id IN #{work_ids}").count - student_work.user.student_works_scores.where("student_work_id IN #{work_ids} and reviewer_role = 3").count + student_work.absence_penalty = absence_penalty_count > 0 ? absence_penalty_count * homework_detail_manual.absence_penalty : 0 + student_work.save + end + end homework_detail_manual.save if homework_detail_manual end diff --git a/app/controllers/users_controller.rb b/app/controllers/users_controller.rb index 76a47b00d..aebc82b14 100644 --- a/app/controllers/users_controller.rb +++ b/app/controllers/users_controller.rb @@ -145,7 +145,7 @@ class UsersController < ApplicationController case params[:type] when 'JournalsForMessage' @comment = JournalsForMessage.find params[:comment].to_i - when 'Message' + when 'Message','is_project_message' @comment = Message.find params[:comment].to_i when 'BlogComment' @comment = BlogComment.find params[:comment].to_i @@ -153,9 +153,11 @@ class UsersController < ApplicationController @comment = OrgDocumentComment.find params[:comment].to_i when 'Comment' @comment = Comment.find params[:comment].to_i - when 'Journal' + when 'Journal','is_project_issue' @comment = Journal.find params[:comment].to_i end + @user_activity_id = params[:user_activity_id] + @parent_id = params[:parent_id] if params[:parent_id] end #二级回复 @@ -214,6 +216,7 @@ class UsersController < ApplicationController def reply_to_comment @type = params[:type] @reply = get_reply_by_type @type, params[:reply_id] + @parent_id = params[:parent_id] if params[:parent_id] @user_activity_id = params[:user_activity_id] @is_project = params[:is_project] if params[:is_project] respond_to do |format| @@ -225,8 +228,15 @@ class UsersController < ApplicationController def reply_detail @type = params[:type] reply = get_reply_by_type @type, params[:reply_id] + if @type == 'JournalsForMessage' + if reply.jour_type == "HomeworkCommon" + @type = "HomeworkCommon" + elsif reply.jour_type == "Syllabus" + @type = "Syllabus" + end + end @user_activity_id = params[:user_activity_id] - case params[:type] + case @type when 'HomeworkCommon' @root = HomeworkCommon.find reply.jour_id options = {:notes => params[:reply_message], :reply_id => reply.user_id,:user_id => User.current.id,:m_parent_id => params[:reply_id].to_i,:m_reply_id => params[:reply_id].to_i, :root_id => reply.root_id} @@ -273,11 +283,11 @@ class UsersController < ApplicationController comment.content = params[:reply_message] comment.root_id = reply.root_id reply.children << comment - when 'News' + when 'News','Comment' @root = News.find reply.commented_id comment = @root.comments.build(:author_id => User.current.id, :reply_id => params[:reply_id], :comments => params[:reply_message], :parent_id => reply.id) comment.save - when 'Issue' + when 'Issue', 'Journal' @root = reply.issue comment = @root.journals.build(:user_id => User.current.id, :reply_id => params[:reply_id], :notes => params[:reply_message], :parent_id => reply.id) comment.save @@ -515,13 +525,13 @@ class UsersController < ApplicationController member.course_group_id = 0 member.save - CourseMessage.create(:user_id => @msg.course_message_id, :course_id => @msg.course_id, :viewed => false,:content=> @msg.content,:course_message_id=>User.current.id,:content=>@msg.content,:course_message_type=>'CourseRequestDealResult',:status=>1) + CourseMessage.create(:user_id => @msg.course_message_id, :course_id => @msg.course_id, :viewed => false,:course_message_id=>User.current.id,:content=>@msg.content,:course_message_type=>'CourseRequestDealResult',:status=>1) @msg.update_attributes(:status=>1,:viewed=>1) else members = [] members << Member.new(:role_ids => integer_ids, :user_id => @msg.course_message_id) Course.find(@msg.course_id).members << members - CourseMessage.create(:user_id => @msg.course_message_id, :course_id => @msg.course_id, :viewed => false,:content=> @msg.content,:course_message_id=>User.current.id,:content=>@msg.content,:course_message_type=>'CourseRequestDealResult',:status=>1) + CourseMessage.create(:user_id => @msg.course_message_id, :course_id => @msg.course_id, :viewed => false,:course_message_id=>User.current.id,:content=>@msg.content,:course_message_type=>'CourseRequestDealResult',:status=>1) @msg.update_attributes(:status=>1,:viewed=>1) if integer_ids.include?(9) @@ -536,7 +546,7 @@ class UsersController < ApplicationController end when 'N' - CourseMessage.create(:user_id => @msg.course_message_id, :course_id => @msg.course_id, :viewed => false,:content=> @msg.content,:course_message_id=>User.current.id,:content=>@msg.content,:course_message_type=>'CourseRequestDealResult',:status=>2) + CourseMessage.create(:user_id => @msg.course_message_id, :course_id => @msg.course_id, :viewed => false,:course_message_id=>User.current.id,:content=>@msg.content,:course_message_type=>'CourseRequestDealResult',:status=>2) @msg.update_attributes(:status=>2,:viewed=>1) if integer_ids.include?(9) @@ -586,13 +596,13 @@ class UsersController < ApplicationController when 'Y' unless ah.empty? ah.first.update_column('status', 2) - CourseMessage.create(:user_id => @msg.apply_user_id, :course_id => @msg.course_id, :viewed => false,:content=> @msg.content,:course_message_id=>@msg.course_message_id,:content=>@msg.content,:course_message_type=>'HomeworkCommon',:status=>6,:apply_result=>1) + CourseMessage.create(:user_id => @msg.apply_user_id, :course_id => @msg.course_id, :viewed => false,:course_message_id=>@msg.course_message_id,:content=>@msg.content,:course_message_type=>'HomeworkCommon',:status=>6,:apply_result=>1) @msg.update_attributes(:apply_result=>1,:viewed=>1) end when 'N' unless ah.empty? ah.first.update_column('status', 3) - CourseMessage.create(:user_id => @msg.apply_user_id, :course_id => @msg.course_id, :viewed => false,:content=> @msg.content,:course_message_id=>@msg.course_message_id,:content=>@msg.content,:course_message_type=>'HomeworkCommon',:status=>6,:apply_result=>2) + CourseMessage.create(:user_id => @msg.apply_user_id, :course_id => @msg.course_id, :viewed => false,:course_message_id=>@msg.course_message_id,:content=>@msg.content,:course_message_type=>'HomeworkCommon',:status=>6,:apply_result=>2) @msg.update_attributes(:apply_result=>2,:viewed=>1) end end @@ -1454,9 +1464,10 @@ class UsersController < ApplicationController @jour = jours.limit(10).offset(@page * 10) @type = params[:type] if User.current == @user - jours.update_all(:is_readed => true, :status => false) - jours.each do |journal| - fetch_user_leaveWord_reply(journal).update_all(:is_readed => true, :status => false) + @jour.update_all(:is_readed => true, :status => false) + @jour.each do |journal| + # fetch_user_leaveWord_reply(journal).update_all(:is_readed => true, :status => false) + journal.delay.set_children_readed_delay end end @state = false @@ -3483,7 +3494,7 @@ class UsersController < ApplicationController @my_syllabuses = @user.syllabuses if @user == User.current - archive_ids = Course.where("tea_id = #{@user.id} and is_delete = 1").blank? ? "(-1)" : "(" + Course.where("tea_id = #{@user.id} and is_delete = 1").map{|course| course.syllabus_id}.join(",") + ")" + archive_ids = Course.where("tea_id = #{@user.id} and is_delete = 1 and syllabus_id is NOT NULL").blank? ? "(-1)" : "(" + Course.where("tea_id = #{@user.id} and is_delete = 1 and syllabus_id is NOT NULL").map{|course| course.syllabus_id}.join(",") + ")" @archive_syllabuses = Syllabus.where("id in #{archive_ids}") end @@ -3572,7 +3583,7 @@ class UsersController < ApplicationController @user = User.current sort_name = "updated_at" - archive_ids = Course.where("tea_id = #{@user.id} and is_delete = 1").blank? ? "(-1)" : "(" + Course.where("tea_id = #{@user.id} and is_delete = 1").map{|course| course.syllabus_id}.join(",") + ")" + archive_ids = Course.where("tea_id = #{@user.id} and is_delete = 1 and syllabus_id is NOT NULL").blank? ? "(-1)" : "(" + Course.where("tea_id = #{@user.id} and is_delete = 1 and syllabus_id is NOT NULL").map{|course| course.syllabus_id}.join(",") + ")" @archive_syllabuses = Syllabus.where("id in #{archive_ids}") if @order.to_i == 1 #根据 班级更新时间排序 diff --git a/app/controllers/versions_controller.rb b/app/controllers/versions_controller.rb index ed9c4638f..7b4695d3c 100644 --- a/app/controllers/versions_controller.rb +++ b/app/controllers/versions_controller.rb @@ -125,7 +125,8 @@ class VersionsController < ApplicationController @issue_pages = Paginator.new @issue_count, @limit, params['page'] || 1 # @offset ||= @issue_pages.offset @issues = paginateHelper @version_issues, @limit - @version_issue_assigned_name = @version_issues.group_by(&:assigned_to_id) + @version_issue_assigned_name = @version_issues.sort_by{ |i| Issue.where(:project_id => @project.id , + :assigned_to_id => i.assigned_to_id, :fixed_version_id => @version.id).count }.reverse.group_by(&:assigned_to_id) format.html { # @issues = @version.fixed_issues.visible. # includes(:status, :tracker, :priority). diff --git a/app/controllers/watchers_controller.rb b/app/controllers/watchers_controller.rb index da0c5733a..6f0d96dfa 100644 --- a/app/controllers/watchers_controller.rb +++ b/app/controllers/watchers_controller.rb @@ -37,7 +37,9 @@ class WatchersController < ApplicationController @list = query.order("#{Watcher.table_name}.id desc").limit(limit).offset(@obj_pages.offset).all(); @action = 'fans' else - + if params[:target_id] + @user = User.find(params[:target_id]) + end end if params[:object_type] == 'project' @@ -78,6 +80,9 @@ class WatchersController < ApplicationController @list = query.order("#{Watcher.table_name}.id desc").limit(limit).offset(@obj_pages.offset).all(); @action = 'fans' else + if params[:target_id] + @user = User.find(params[:target_id]) + end end if params[:object_type] == 'project' @project = Project.find(params[:object_id]) diff --git a/app/controllers/wechats_controller.rb b/app/controllers/wechats_controller.rb index a082d72ff..654f83855 100644 --- a/app/controllers/wechats_controller.rb +++ b/app/controllers/wechats_controller.rb @@ -137,7 +137,7 @@ class WechatsController < ActionController::Base on :fallback, respond: 'fallback message' on :click, with: 'FEEDBACK' do |request, key| - request.reply.text "如有问题反馈,请您:\n1、直接切换至输入框,发微信给我们。\n2、加入QQ群:373967360,直接互动。\n\n如您有合作事宜洽谈,请联系:\n王林春 老师\n手机:13467631747\nQQ:494496321" + request.reply.text "如有问题反馈,请您:\n1、直接切换至输入框,发微信给我们。\n2、加入QQ群:373967360,直接互动。\n3、登录网站:www.trustie.net,给我们留言。\n\n如您有合作事宜洽谈,请联系:\n王林春 老师\n手机:13467631747\nQQ:494496321" end on :click, with: 'MY_NEWS' do |request, key| diff --git a/app/helpers/application_helper.rb b/app/helpers/application_helper.rb index ad3d2c61d..8301407ae 100644 --- a/app/helpers/application_helper.rb +++ b/app/helpers/application_helper.rb @@ -2837,6 +2837,12 @@ module ApplicationHelper tag_list end + # 获取项目fork成员数 + def project_fork_count + @forked_projects = Project.where(:forked_from_project_id => @project.id) + @forked_count = @forked_projects.count + end + def get_org_subfield_tag_list org_subfield all_attachments = org_subfield.attachments.select{|attachment| attachment.is_public? || (attachment.container_type == "OrgSubfield" && User.current.member_of_org?(org_subfield.organization))|| @@ -3408,10 +3414,12 @@ def get_reply_by_type type, reply_id reply = BlogComment.find reply_id when 'OrgDocumentComment' reply = OrgDocumentComment.find reply_id - when 'News' + when 'News','Comment' reply = Comment.find reply_id when 'Issue' reply = Journal.find reply_id + when 'Journal' + reply = Journal.find reply_id when 'Syllabus' reply = JournalsForMessage.find reply_id end diff --git a/app/helpers/projects_helper.rb b/app/helpers/projects_helper.rb index 3dff9c414..653afef62 100644 --- a/app/helpers/projects_helper.rb +++ b/app/helpers/projects_helper.rb @@ -267,6 +267,16 @@ module ProjectsHelper project_name = versions.blank? ? "" : versions.first.project.name grouped = Hash.new {|h,k| h[k] = []} grouped[project_name] << ["请选择里程碑", 0] + +=begin + unless selected.nil? + if (params[:action] == "show" ) && Version.find(selected.id).status == "closed" + version_name = Version.find(selected.id).name + grouped[project_name] << [version_name, selected.id] + end + end +=end + versions.each do |version| grouped[version.project.name] << [version.name, version.id] end @@ -302,6 +312,16 @@ module ProjectsHelper type << option2 end + # 判断用户是否为项目管理员 + def is_project_manager?(user_id, project_id) + @result = false + mem = Member.where("user_id = ? and project_id = ?",user_id, project_id) + unless mem.blank? + @result = mem.first.roles.to_s.include?("Manager") ? true : false + end + return @result + end + # 用来判断用户是否是项目的管理员 # added by william def is_manager?(user_id,project_id) diff --git a/app/helpers/pull_requests_helper.rb b/app/helpers/pull_requests_helper.rb index c89a3be0f..983ab848c 100644 --- a/app/helpers/pull_requests_helper.rb +++ b/app/helpers/pull_requests_helper.rb @@ -2,12 +2,12 @@ module PullRequestsHelper # 获取diff内容行号 def diff_line_num content - content.scan(/@@ -(\d+),\d+ \+\d+,\d+ @@/).first.nil? ? "" : content.scan(/@@ -(\d+),\d+ \+\d+,\d+ @@/).first.join("").to_i + result = content.scan(/@@ -(\d+),\d+ \+\d+,\d+ @@/).first.nil? ? "" : content.scan(/@@ -(\d+),\d+ \+\d+,\d+ @@/).first.join("").to_i end # 处理内容 def diff_content content - content.gsub!(/.*@@ -\d+,\d+ \+\d+,\d+ @@\n/m,'') + result = content.gsub!(/.*@@.*@@\n/m,'') end def get_user_name user_id diff --git a/app/helpers/users_helper.rb b/app/helpers/users_helper.rb index 228e83080..4dd3399a3 100644 --- a/app/helpers/users_helper.rb +++ b/app/helpers/users_helper.rb @@ -100,7 +100,7 @@ module UsersHelper def applied_project_users applied_message # case applied_message.status # when 3,2,1,5,4,7,6 - user = User.find(applied_message.applied_user_id) + user = User.find(applied_message.applied_user_id).show_name # end end diff --git a/app/helpers/watchers_helper.rb b/app/helpers/watchers_helper.rb index acece2307..09d9115b4 100644 --- a/app/helpers/watchers_helper.rb +++ b/app/helpers/watchers_helper.rb @@ -333,6 +333,7 @@ module WatchersHelper return '' unless user && user.logged? objects = Array.wrap(objects) watched = objects.any? {|object| object.watched_by?(user)} + watched = true if user.id == @project.user_id @watch_flag = objects.first.instance_of?(Project) id = watcher_css(objects) text = @watch_flag ? @@ -340,8 +341,13 @@ module WatchersHelper url = watch_path(:object_type => objects.first.class.to_s.underscore, :object_id => (objects.size == 1 ? objects.first.id : objects.map(&:id).sort)) method = watched ? 'delete' : 'post' - link_to text, url, :remote => true, :method => method, - :class => "pro_new_topbtn_left fl" ,:id=>id + if user.id != @project.user_id + link_to text, url, :remote => true, :method => method, + :class => "pro_new_topbtn_left fl" ,:id => id + else + link_to "关注", "javascript:void(0)", :remote => true, :method => method, + :class => "pro_new_grey_topbtn_left fl" , :id => id + end end def store_project_link project_id, user_id diff --git a/app/models/homework_detail_manual.rb b/app/models/homework_detail_manual.rb index e0c4dcdcb..6faa84d40 100644 --- a/app/models/homework_detail_manual.rb +++ b/app/models/homework_detail_manual.rb @@ -1,7 +1,7 @@ #手动评分作业表 #comment_status: 1:未开启匿评,2:开启匿评,3:匿评结束 class HomeworkDetailManual < ActiveRecord::Base - attr_accessible :ta_proportion, :comment_status, :evaluation_start, :evaluation_end, :evaluation_num, :absence_penalty, :homework_common_id + attr_accessible :ta_proportion, :comment_status, :evaluation_start, :evaluation_end, :evaluation_num, :absence_penalty, :homework_common_id, :no_anon_penalty belongs_to :homework_common end diff --git a/app/models/issue.rb b/app/models/issue.rb index 1b47d80cc..46a42cb34 100644 --- a/app/models/issue.rb +++ b/app/models/issue.rb @@ -854,7 +854,8 @@ class Issue < ActiveRecord::Base return @assignable_versions if @assignable_versions # versions = project.shared_versions.open.all - versions = Version.where(:project_id => project.id, :status => "open").order("created_on desc") + # versions = Version.where(:project_id => project.id, :status => "open").order("created_on desc") + versions = Version.where(:project_id => project.id).order("created_on desc") if fixed_version if fixed_version_id_changed? # nothing to do diff --git a/app/models/journals_for_message.rb b/app/models/journals_for_message.rb index 4a9601d07..aa83c2210 100644 --- a/app/models/journals_for_message.rb +++ b/app/models/journals_for_message.rb @@ -344,4 +344,9 @@ class JournalsForMessage < ActiveRecord::Base def content_detail self.notes end + + def set_children_readed_delay + # fetch_user_leaveWord_reply(self).update_all(:is_readed => true, :status => false) + end + end diff --git a/app/models/organization.rb b/app/models/organization.rb index 50f62ea11..284754c03 100644 --- a/app/models/organization.rb +++ b/app/models/organization.rb @@ -9,6 +9,7 @@ class Organization < ActiveRecord::Base has_many :org_subfields, :dependent => :destroy has_many :users, :through => :org_members has_many :files + has_many :org_messages, :class_name => 'OrgMessage', :dependent => :destroy acts_as_attachable validates_uniqueness_of :name after_create :save_as_org_activity, :add_default_subfields diff --git a/app/views/attachments/_project_file_links.html.erb b/app/views/attachments/_project_file_links.html.erb index cccc8382c..a1a978a48 100644 --- a/app/views/attachments/_project_file_links.html.erb +++ b/app/views/attachments/_project_file_links.html.erb @@ -30,9 +30,9 @@ <% for attachment in attachments %>
- <%if is_float%> -
博客列表
diff --git a/app/views/courses/member.html.erb b/app/views/courses/member.html.erb index 2d2eecab1..606c0d67c 100644 --- a/app/views/courses/member.html.erb +++ b/app/views/courses/member.html.erb @@ -4,7 +4,7 @@
- <%= exercise.exercise_description.nil? ? "" :exercise.exercise_description.html_safe%> -+
<%= exercise.exercise_description.nil? ? "" :exercise.exercise_description.html_safe%>
请输入数值0-50
匿评开启后提交的作品,未能参加
匿评,按照全部缺评扣分
请输入数值0-50
匿评开启后提交的作品,未能参加
匿评,按照全部缺评扣分
1.长度必须在1到254个字符之间
+
+ 1.长度必须在1到254个字符之间
2.仅限使用小写字母(a-z)、数字、破折号(-)和下划线(_)
- 3.一旦保存,标识无法修改
<%= @project.name %>
+<%= @project.name %>
<% else %> -<%=h @project.description.html_safe %>
+<%=h @project.description.html_safe %>
<% end %><%= project.name %>
+<%= project.name %><%= project.status == 9 ? "(已删除)" : ""%>
创建者:<%= project.creater %>成员数量:<%= project.members.count %>
<% project_score = project.project_score %> -项目综合得分:<%= static_project_score(project_score).to_i %>
+项目综合得分:<%= project.status == 9 ? 0 : static_project_score(project_score).to_i %>
+ <% if project.status != 9 %>= 代码提交得分 + issue得分 + 资源得分 + 帖子得分
= <%= (project_score.changeset_num||0) * 4 %> + <%= project_score.issue_num * 4 + project_score.issue_journal_num %> + <%= project_score.attach_num * 5 %> + <%= project_score.board_num * 2 + project_score.board_message_num + project_score.news_num %>
+ <% end %>- 创建老师:<%=link_to course.teacher.show_name, user_path(course.teacher), :class => 'sy_cblue' %> +
创建老师:<%=link_to course.teacher.show_name, user_path(course.teacher), :class => 'sy_cblue', :title => "#{course.teacher.show_name}" %>
<% if User.current.admin? || User.current.allowed_to?(:as_teacher,course) %> <% homework_num = course.homework_commons.count %> <% else %> @@ -59,7 +59,7 @@ 学期:<%= current_time_and_term course %> 更新时间:<%= format_date(course.updated_on) %> - +讨论区列表
<%=render :partial =>"users/intro_content_ex", :locals=>{:user_activity_id =>activity.id, :content=>content, :maxheight=>54, :maxwordsnum=>75, :maxwidth=>563} %>
-通知列表
<%=render :partial =>"users/intro_content_ex", :locals=>{:user_activity_id =>activity.id, :content=>activity.description, :maxheight=>54, :maxwordsnum=>100, :maxwidth=>563} %>
+ <% u = User.where("id=?",activity.author_id).first%> +讨论区列表
<%=render :partial =>"users/intro_content_ex", :locals=>{:user_activity_id =>activity.id, :content=>content, :maxheight=>54, :maxwordsnum=>225, :maxwidth=>950} %>
-课程列表
个性签名:<%= item.user_extensions.brief_introduction %>
+ <% for item in list %> +个性签名:<%= item.user_extensions.brief_introduction %>
+ <% end %> +加入时间: | +<%= format_date(item.created_on) %> | + <% if (item.user_extensions.identity == 0 || item.user_extensions.identity == 1) && !item.user_extensions.school.nil? %> +工作单位: | +
+ |
+ <% elsif item.user_extensions.identity == 3 && !item.user_extensions.occupation.nil? && !item.user_extensions.occupation.empty? %>
+ 工作单位: | +
+ |
+ <% elsif item.user_extensions.identity == 2 %>
+ 工作单位: | +
+ |
+ <% end %>
+
加入时间: | -<%= format_date(item.created_on) %> | - <% if (item.user_extensions.identity == 0 || item.user_extensions.identity == 1) && !item.user_extensions.school.nil? %> -工作单位: | -
- |
- <% elsif item.user_extensions.identity == 3 && !item.user_extensions.occupation.nil? && !item.user_extensions.occupation.empty? %>
- 工作单位: | -
- |
- <% elsif item.user_extensions.identity == 2 %>
- 工作单位: | -
- |
- <% end %>
-
项目列表
<%= l(:label_no_data) %>
+ +<%= l(:label_no_data) %>
- -标题不能为空
+标题不能为空