diff --git a/app/controllers/myshixuns_controller.rb b/app/controllers/myshixuns_controller.rb index fe64be14f..4002d54da 100644 --- a/app/controllers/myshixuns_controller.rb +++ b/app/controllers/myshixuns_controller.rb @@ -3,7 +3,20 @@ class MyshixunsController < ApplicationController layout 'base_myshixun' skip_before_filter :verify_authenticity_token, :only => [:training_task_status] before_filter :require_login, :except => [:training_task_status] - before_filter :find_myshixun, :only => [:show] + before_filter :find_myshixun, :only => [:show, :myshixun_reset] + + def myshixun_reset + ActiveRecord::Base.transaction do + shixun = @myshixun.shixun + @myshixun.destroy + myshixun_member = @myshixun + repository = @myshixun.repository + repository.destroy + git_rep = Gitlab.client.delete_project(@myshixun.gpid) + + redirect_to shixun_exec_shixun_path(shixun) + end + end # taskId 即返回的game id # 返回结果:params [:stauts] 0 表示成功,其它则失败 diff --git a/app/controllers/shixuns_controller.rb b/app/controllers/shixuns_controller.rb index c30c91cef..4a09e0d48 100644 --- a/app/controllers/shixuns_controller.rb +++ b/app/controllers/shixuns_controller.rb @@ -83,7 +83,7 @@ class ShixunsController < ApplicationController else logger.error("res['code'] is #{res['code']}, res['msg'] is #{res['code']}") @jenkin_error = true - raise("服务器异常,请联系系统管理员") + raise("当前系统繁忙,请稍后再试") end rescue respond_to do |format| @@ -162,6 +162,7 @@ class ShixunsController < ApplicationController generate_identifier m = ShixunMember.new(:user_id => User.current.id, :role => 1) @shixun.shixun_members << m + # 自动构建版本库 format.html { redirect_to shixun_path @shixun, notice: l(:notice_successful_create) } format.js else diff --git a/app/models/game.rb b/app/models/game.rb index 79f4426fe..eb59c825c 100644 --- a/app/models/game.rb +++ b/app/models/game.rb @@ -6,8 +6,8 @@ class Game < ActiveRecord::Base belongs_to :user belongs_to :challenge has_many :outputs, :dependent => :destroy - has_many :test_sets, :dependent => :destroy - has_many :challenge_samples, :dependent => :destroy + has_many :test_sets + has_many :challenge_samples # id 转换成 challenge'position def to_param diff --git a/app/models/myshixun.rb b/app/models/myshixun.rb index 1bf963530..1d062e607 100644 --- a/app/models/myshixun.rb +++ b/app/models/myshixun.rb @@ -1,8 +1,8 @@ # status 1:完成实训 class Myshixun < ActiveRecord::Base attr_accessible :description, :name, :parent_id, :user_id, :gpid, :forked_from, :visits, :is_public, :identifier - has_many :users, :through => :myshixun_members - has_many :myshixun_members + # has_many :users, :through => :myshixun_members + has_many :myshixun_members, :dependent => :destroy has_one :repository has_many :games, :dependent => :destroy, :order => "games.id ASC" belongs_to :shixun diff --git a/app/views/layouts/base_myshixun.html.erb b/app/views/layouts/base_myshixun.html.erb index 3ea92ba82..2ad9e7ebd 100644 --- a/app/views/layouts/base_myshixun.html.erb +++ b/app/views/layouts/base_myshixun.html.erb @@ -41,6 +41,7 @@
+ <%= link_to "重置", myshixun_reset_myshixun_path(@myshixun), :class => "leftnav-box-reset-inner font-12" %>
退出任务
diff --git a/app/views/shixuns/publish.js.erb b/app/views/shixuns/publish.js.erb index ba4fed6fc..c32de7a77 100644 --- a/app/views/shixuns/publish.js.erb +++ b/app/views/shixuns/publish.js.erb @@ -1,5 +1,5 @@ <% if @jenkin_error %> - var htmlvalue = "<%= escape_javascript(render :partial => 'shixuns/monitor_tip') %>"; + var htmlvalue = "<%= escape_javascript(render :partial => 'shixuns/monitor_tip', :locals => {:result => false} )%>"; pop_box_new(htmlvalue,460,406); <% else %> var htmlvalue = "<%= escape_javascript(render :partial => 'shixuns/monitor_tip', :locals => {:result => true}) %>"; diff --git a/config/routes.rb b/config/routes.rb index cd2602aee..7f32b6081 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -66,7 +66,7 @@ RedmineApp::Application.routes.draw do resources :myshixuns do member do - + match 'myshixun_reset', :via => [:get, :post] end collection do match 'training_task_status', :via => [:get, :post] diff --git a/public/stylesheets/css/taskstyle.css b/public/stylesheets/css/taskstyle.css index 8cfb41e1a..00a336a64 100644 --- a/public/stylesheets/css/taskstyle.css +++ b/public/stylesheets/css/taskstyle.css @@ -12,6 +12,8 @@ a.user-info-name{ display: block; font-size: 16px; color: #fff; max-width:100px; .leftnav-box{ width: 80px; height: 60px; background:#292b3a; padding:10px 0; margin-bottom:2px;} a.leftnav-box-inner{ display: block; width:77px; border-left:3px solid #292b3a; background:#292b3a; text-align: center; padding:10px 0; color:#575f6c;} a:hover.leftnav-box-inner,a.leftnav-active{border-left:3px solid #3498db;color: #fff!important;} +a.leftnav-box-reset-inner{ display: block; width:77px; border-left:3px solid #292b3a; background:#292b3a; text-align: center; color:#575f6c;} +a:hover.leftnav-box-reset-inner{border-left:3px solid #3498db;color: #fff!important;} .btn-cir{ background:#575f6c; color:#292b3a;display: inline-block; padding:0px 5px; border-radius:25px; border-radius:15px; line-height:20px; height: 20px; font-size:12px;} .btn-cir:hover{background:#fff;} .btn-cir-grey{background: #e1e1e1;color: #333;}