From bd0bd020840992e5c79c352a50c1584847509b84 Mon Sep 17 00:00:00 2001 From: huang Date: Fri, 24 Feb 2017 15:33:15 +0800 Subject: [PATCH 1/6] =?UTF-8?q?=E6=9D=83=E9=99=90=E6=8E=A7=E5=88=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/controllers/projects_controller.rb | 6 +++--- app/controllers/training_tasks_controller.rb | 15 +++++++++++++-- app/views/layouts/_base_project_top.html.erb | 2 +- app/views/projects/_project_activities.html.erb | 2 +- app/views/training_tasks/_content_list.html.erb | 9 +-------- app/views/training_tasks/index.html.erb | 3 --- 6 files changed, 19 insertions(+), 18 deletions(-) diff --git a/app/controllers/projects_controller.rb b/app/controllers/projects_controller.rb index cf1a71424..4eb7bddac 100644 --- a/app/controllers/projects_controller.rb +++ b/app/controllers/projects_controller.rb @@ -932,7 +932,7 @@ class ProjectsController < ApplicationController def training_task_status status = params[:status].to_i task_id = params[:taskId] - message = params[:msg].to_i + message = params[:msg] begin @training_task = TrainingTask.find(task_id) # 如果已经执行成功过,则不重复执行 @@ -953,11 +953,11 @@ class ProjectsController < ApplicationController @training_task.update_attribute(:status, 1) end # 创建一条回复提醒 - content = "恭喜您通过测评" + content = position == original_tasks_count ? "恭喜您,您已经完成了实训项目的所有任务" : "恭喜您,您已经完成了本任务" add_training_task_journal(content, original_project.user_id) end else - content = "很遗憾,您没有通过该步" + content = "很抱歉,您的任务未通过,请继续加油,错误信息如下:#{message}" add_training_task_journal(content, original_project.user_id) end end diff --git a/app/controllers/training_tasks_controller.rb b/app/controllers/training_tasks_controller.rb index 115754ff2..5ec9ae841 100644 --- a/app/controllers/training_tasks_controller.rb +++ b/app/controllers/training_tasks_controller.rb @@ -2,11 +2,12 @@ class TrainingTasksController < ApplicationController layout 'base_projects' + before_filter :find_training_task, :only => [:show, :edit, :update, :add_journal, :complete_training_task] before_filter :find_project, :only => [:index, :new, :create, :update_form, :issue_commits, :commit_for_issue, :issue_commit_delete, :destroy] before_filter :allow_manager, :only => [:index, :show] before_filter :allow_members, :only => [:new, :create] before_filter :build_new_task_from_params, :only => [:new, :create, :update_form] - before_filter :find_training_task, :only => [:show, :edit, :update, :add_journal, :complete_training_task] + # before_filter :find_issues, :only => [:bulk_edit, :bulk_update, :destroy] @@ -95,6 +96,9 @@ class TrainingTasksController < ApplicationController # Add a new issue # The new issue will be created from an existing one if copy_from parameter is given def new + if @project.is_child_training_project? + return render_404 + end # 顶部导航 @project_menu_type = 11 respond_to do |format| @@ -104,6 +108,9 @@ class TrainingTasksController < ApplicationController # 用户发布新任务 def create + if @project.is_child_training_project? + return render_404 + end @training_task.save_attachments(params[:attachments] || (params[:training_task] && params[:training_task][:uploads])) @training_task.subject = params[:training_task][:subject] @training_task.description = params[:training_task][:description] @@ -312,6 +319,10 @@ class TrainingTasksController < ApplicationController render_404 end + def find_training_task + + end + def allow_members if !(User.current.member_of?(@project) || User.current.admin?) render_403 @@ -319,7 +330,7 @@ class TrainingTasksController < ApplicationController end def allow_manager - if !(User.current.admin? || is_project_member?(User.current.id, @project.id)) + if !(User.current.admin? || is_project_manager?(User.current.id, @project.id) || is_project_manager?(User.current, @project.try(:forked_from_project_id)) ) return render_403 end end diff --git a/app/views/layouts/_base_project_top.html.erb b/app/views/layouts/_base_project_top.html.erb index 5fa7417ba..18733a326 100644 --- a/app/views/layouts/_base_project_top.html.erb +++ b/app/views/layouts/_base_project_top.html.erb @@ -43,7 +43,7 @@ <% end %> <% if !@project.enabled_modules.where("name = 'training_tasks'").empty? %> - <% if User.current.admin? || is_project_member?(User.current.id, @project.id) %> + <% if User.current.admin? || is_project_manager?(User.current.id, @project.id) || is_project_manager?(User.current, @project.try(:forked_from_project_id)) %>
  • <%= link_to training_tasks_count > 0 ? "#{l(:project_module_training_tasks)}#{switch_integer_into_k training_tasks_count}".html_safe : "#{l(:project_module_training_tasks)}", project_training_tasks_url(@project), :class => "pro_new_proname", :title => "#{training_tasks_count}" %>
  • diff --git a/app/views/projects/_project_activities.html.erb b/app/views/projects/_project_activities.html.erb index fe504145a..7a2689759 100644 --- a/app/views/projects/_project_activities.html.erb +++ b/app/views/projects/_project_activities.html.erb @@ -41,7 +41,7 @@ <% when "Issue" %> <%= render :partial => 'projects/act_issues', :locals => {:activity => activity.forge_act, :user_activity_id => activity.id, :project_id => activity.project_id} %> <% when "TrainingTask" %> - <% if User.current.admin? || is_project_member?(User.current.id, @project.id) %> + <% if User.current.admin? || is_project_manager?(User.current.id, @project.id) || is_project_manager?(User.current, @project.try(:forked_from_project_id)) %> <%= render :partial => 'projects/act_training_tasks', :locals => {:activity => activity.forge_act, :user_activity_id => activity.id, :project_id => activity.project_id} %> <% end %> diff --git a/app/views/training_tasks/_content_list.html.erb b/app/views/training_tasks/_content_list.html.erb index b98e44afe..feecafb5a 100644 --- a/app/views/training_tasks/_content_list.html.erb +++ b/app/views/training_tasks/_content_list.html.erb @@ -8,7 +8,7 @@ <% end %>
    - + step<%= activity.position %> <%= activity.subject.to_s %> @@ -31,13 +31,6 @@ <%= activity.journals.count %> <% end %> - <% if @project.is_child_training_project? %> - -
    - <%= render :partial => 'action_status', :locals => {:activity => activity} %> -
    - - <% end %> <% end %> diff --git a/app/views/training_tasks/index.html.erb b/app/views/training_tasks/index.html.erb index 7cf63aea5..caec8ec9a 100644 --- a/app/views/training_tasks/index.html.erb +++ b/app/views/training_tasks/index.html.erb @@ -222,9 +222,6 @@

    所有<%= @training_tasks_count %>

      - <% if @project.is_child_training_project? %> -   - <% end %> From d05b3419d74466f40841ff134664ca0238d5353d Mon Sep 17 00:00:00 2001 From: daiao <358551898@qq.com> Date: Fri, 24 Feb 2017 16:20:12 +0800 Subject: [PATCH 2/6] =?UTF-8?q?=E9=A1=B9=E7=9B=AE=E5=88=97=E8=A1=A8?= =?UTF-8?q?=E6=A0=B7=E5=BC=8F=E8=B0=83=E6=95=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/views/layouts/base_project_community.html.erb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/views/layouts/base_project_community.html.erb b/app/views/layouts/base_project_community.html.erb index 6161e424b..1df368b8d 100644 --- a/app/views/layouts/base_project_community.html.erb +++ b/app/views/layouts/base_project_community.html.erb @@ -7,7 +7,7 @@ <%= csrf_meta_tag %> <%= favicon %> - <%= stylesheet_link_tag 'jquery/jquery-ui-1.9.2','css/common', 'css/structure','css/public', 'prettify','css/project','css/courses','css/popup','csws/syllabus','css/moduel', 'css/user', :media => 'all' %> + <%= stylesheet_link_tag 'jquery/jquery-ui-1.9.2','css/common', 'css/structure','css/public', 'prettify','css/project','css/courses','css/popup','css/syllabus','css/moduel', 'css/user', :media => 'all' %> <%= stylesheet_link_tag 'rtl', :media => 'all' if l(:direction) == 'rtl' %> <%= javascript_heads %> <%= javascript_include_tag "bootstrap","avatars","new_user",'attachments','prettify'%> From e3d0551e518be6f4dbecfcf92cab8472cf5c7d9e Mon Sep 17 00:00:00 2001 From: daiao <358551898@qq.com> Date: Fri, 24 Feb 2017 16:35:48 +0800 Subject: [PATCH 3/6] =?UTF-8?q?=E5=90=88=E4=BD=9C=E4=BC=99=E4=BC=B4?= =?UTF-8?q?=E7=9A=84=E5=BC=80=E6=BA=90=E8=BD=AF=E4=BB=B6=E9=93=BE=E6=8E=A5?= =?UTF-8?q?=E6=9B=B4=E4=B8=BA=E4=B8=8D=E5=8F=AF=E7=82=B9=E5=87=BB=E8=B7=B3?= =?UTF-8?q?=E8=BD=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/views/cooperation/index.html.erb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/views/cooperation/index.html.erb b/app/views/cooperation/index.html.erb index 9ab74ec3d..2d917ecd6 100644 --- a/app/views/cooperation/index.html.erb +++ b/app/views/cooperation/index.html.erb @@ -41,7 +41,7 @@ 湘潭大学
  • - 中国开源软件推进联盟 + 中国开源软件推进联盟
  • From 374323eb32694ca364370d4c36cb2eac3fe96e11 Mon Sep 17 00:00:00 2001 From: huang Date: Fri, 24 Feb 2017 17:43:43 +0800 Subject: [PATCH 4/6] =?UTF-8?q?=E5=B7=B2=E7=BB=8F=E5=AE=9E=E8=AE=AD?= =?UTF-8?q?=E8=BF=87=E7=9A=84=E8=B7=B3=E8=BD=AC=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/controllers/projects_controller.rb | 10 ++++---- .../projects/_act_training_tasks.html.erb | 2 +- .../_training_child_project_exec.html.erb | 23 ++++++++++++------- 3 files changed, 22 insertions(+), 13 deletions(-) diff --git a/app/controllers/projects_controller.rb b/app/controllers/projects_controller.rb index 4eb7bddac..0f42be28e 100644 --- a/app/controllers/projects_controller.rb +++ b/app/controllers/projects_controller.rb @@ -870,7 +870,7 @@ class ProjectsController < ApplicationController end end - # TrainintTask.status 0:评测中 1:评测成功 2:评测惊醒中 + # TrainintTask.status 0:评测中 1:评测成功 2:评测进行中 # 非项目成员、非实训子项目不允许执行该方法 def task_execute if !@project.is_child_training_project? || !User.current.member_of?(@project) @@ -943,22 +943,24 @@ class ProjectsController < ApplicationController return end original_tasks_count = original_project.training_tasks.count - position = @training_task.try(:position) + 1 + position = @training_task.try(:position) # 测试,默认成功 if status == 0 ActiveRecord::Base.transaction do if position <= original_tasks_count # 继续发布下一个任务 - publish_training_tasks original_project_id, @training_task.project_id, position + publish_training_tasks original_project_id, @training_task.project_id, position+1 if position < original_tasks_count @training_task.update_attribute(:status, 1) end # 创建一条回复提醒 - content = position == original_tasks_count ? "恭喜您,您已经完成了实训项目的所有任务" : "恭喜您,您已经完成了本任务" + content = (position == original_tasks_count) ? "恭喜您,您已经完成了实训项目的所有任务" : "恭喜您,您已经完成了本任务" add_training_task_journal(content, original_project.user_id) end else content = "很抱歉,您的任务未通过,请继续加油,错误信息如下:#{message}" add_training_task_journal(content, original_project.user_id) + # 失败的时候可以继续提交 + @training_task.update_attribute(:status, 0) end end diff --git a/app/views/projects/_act_training_tasks.html.erb b/app/views/projects/_act_training_tasks.html.erb index cc89984e2..a0251c144 100644 --- a/app/views/projects/_act_training_tasks.html.erb +++ b/app/views/projects/_act_training_tasks.html.erb @@ -11,7 +11,7 @@ TO <%= link_to activity.project.name.to_s+" | 实训任务", project_training_tasks_path(activity.project), :class => "newsBlue ml15"%>
    - <% if User.current.logged? && is_project_manager?(User.current.id, project_id) || activity.author_id == User.current.id %> + <% if !@project.is_child_training_project? && User.current.logged? && (is_project_manager?(User.current.id, project_id) || activity.author_id == User.current.id) %>
    • diff --git a/app/views/projects/_training_child_project_exec.html.erb b/app/views/projects/_training_child_project_exec.html.erb index e8747a384..ff6e7cff3 100644 --- a/app/views/projects/_training_child_project_exec.html.erb +++ b/app/views/projects/_training_child_project_exec.html.erb @@ -17,21 +17,28 @@ 该项目还没有创建版本库,暂时不支持实训
    • <% else %> + <% if has_forked_cur_project(@project) %>
    • - <% if has_forked_cur_project(@project) %> - 您已经实训过该项目,点击“确定”将会跳转到您的实训项目主页,请问您是否继续? - <% elsif @project.training_tasks.count == 0 %> - 该项目还没有创建实训任务,暂时不支持开启实训 - <% else %> - 实训将在后台为您创建一个新的同名项目,并为您推送第一个任务,请问您是否继续? - <% end %> + 您已经实训过该项目,点击“确定”将会跳转到您的实训项目主页,请问您是否继续?
    • 取  消 - <%= link_to "确 定", {:controller => 'projects', :action => 'training_project_extend'}, :class => "sy_btn_blue fl ml20", :onclick => "hideModal();", :target => "_blank" %> + <% project = Project.where(:forked_from_project_id => @project.id, :user_id => User.current.id).first %> + <%= link_to "确 定", project_path(project), :class => "sy_btn_blue fl ml20", :onclick => "hideModal();", :target => "_blank" %>
    • + <% else %> +
    • + 实训将在后台为您创建一个新的同名项目,并为您推送第一个任务,请问您是否继续? +
    • +
    • + + 取  消 + <%= link_to "确 定", {:controller => 'projects', :action => 'training_project_extend'}, :class => "sy_btn_blue fl ml20", :onclick => "hideModal();", :target => "_blank" %> +
      +
    • + <% end %> <% end %> <% end %>
    From c33ab7735fcb366c2ed15a4d90243fdd79b3875c Mon Sep 17 00:00:00 2001 From: huang Date: Fri, 24 Feb 2017 19:16:43 +0800 Subject: [PATCH 5/6] =?UTF-8?q?=E4=BB=BB=E5=8A=A1=E5=8F=91=E9=80=81?= =?UTF-8?q?=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/controllers/projects_controller.rb | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/app/controllers/projects_controller.rb b/app/controllers/projects_controller.rb index 0f42be28e..0230e562a 100644 --- a/app/controllers/projects_controller.rb +++ b/app/controllers/projects_controller.rb @@ -947,11 +947,12 @@ class ProjectsController < ApplicationController # 测试,默认成功 if status == 0 ActiveRecord::Base.transaction do - if position <= original_tasks_count + if position < original_tasks_count # 继续发布下一个任务 - publish_training_tasks original_project_id, @training_task.project_id, position+1 if position < original_tasks_count - @training_task.update_attribute(:status, 1) + position = position + 1 + publish_training_tasks original_project_id, @training_task.project_id, position end + @training_task.update_attribute(:status, 1) # 创建一条回复提醒 content = (position == original_tasks_count) ? "恭喜您,您已经完成了实训项目的所有任务" : "恭喜您,您已经完成了本任务" add_training_task_journal(content, original_project.user_id) From 2aabaca9b699162659b1c53f785d88c74d226272 Mon Sep 17 00:00:00 2001 From: daiao <358551898@qq.com> Date: Fri, 24 Feb 2017 20:14:20 +0800 Subject: [PATCH 6/6] =?UTF-8?q?=E5=AE=9E=E8=AE=AD=E9=A1=B9=E7=9B=AE?= =?UTF-8?q?=E5=BA=8F=E5=8F=B7=E5=8F=AA=E8=83=BD=E8=BE=93=E5=85=A5=E6=95=B0?= =?UTF-8?q?=E5=AD=97=E6=88=96=E5=A4=8D=E5=88=B6=E6=95=B0=E5=AD=97?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/views/training_tasks/_form.html.erb | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/app/views/training_tasks/_form.html.erb b/app/views/training_tasks/_form.html.erb index a7dcee893..a7903c5da 100644 --- a/app/views/training_tasks/_form.html.erb +++ b/app/views/training_tasks/_form.html.erb @@ -1,7 +1,7 @@
    • - <%= f.text_field :position, :no_label => true, :placeholder => "请输入序号(整数)", :onkeyup => "this.value=this.value.replace(/\D/g,'')", :onafterpaste => "this.value=this.value.replace(/\D/g,'')" %> + <%= f.text_field :position, :no_label => true, :placeholder => "请输入序号(整数)" %>
    • @@ -41,9 +41,17 @@
    -