diff --git a/app/controllers/projects_controller.rb b/app/controllers/projects_controller.rb
index cf1a71424..0230e562a 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)
@@ -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)
# 如果已经执行成功过,则不重复执行
@@ -943,22 +943,25 @@ 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
+ if position < original_tasks_count
# 继续发布下一个任务
+ position = position + 1
publish_training_tasks original_project_id, @training_task.project_id, position
- @training_task.update_attribute(:status, 1)
end
+ @training_task.update_attribute(:status, 1)
# 创建一条回复提醒
- 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)
+ # 失败的时候可以继续提交
+ @training_task.update_attribute(:status, 0)
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/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 @@
-
+
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)) %>
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'%>
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/_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/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 %>
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/_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 @@
-
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 %>