diff --git a/app/controllers/games_controller.rb b/app/controllers/games_controller.rb index 6f2f62143..b9faa41e9 100644 --- a/app/controllers/games_controller.rb +++ b/app/controllers/games_controller.rb @@ -17,10 +17,21 @@ class GamesController < ApplicationController end # mushixun的版本库必须创建时就创建 + # 首次进入版本库自动打开文件 + # path:"" && path: @game.path def show + game_path = (@game.path.blank? ? @game.path : @game.path.strip) @rev = @rev.nil? ? "master" : @rev @git_url = git_repository_url(@myshixun, "Myshixun") - @entries = @repository.entries(@path, @rev) + @type = params[:type] + # 默认打开文件 + if @path == "" && !game_path.nil? && !@repository.cat(game_path, @rev).blank? && @type != "root" + @path = game_path + @file_open = true + @content = @repository.cat(@path, @rev) + else + @entries = @repository.entries(@path, @rev) + end @latest_output = @game.latest_output.try(:out_put) outputs = @game.outputs @had_done = 1 if (@myshixun.games.count == @game.stage && @game.status ==2) @@ -33,6 +44,8 @@ class GamesController < ApplicationController format.html format.js end + rescue Exception => e + flash[:error] = e.message end # 代码预览 @@ -47,9 +60,9 @@ class GamesController < ApplicationController def file_edit entry_and_raw(false) @content = @repository.cat(@path, @rev).rstrip - respond_to do |format| - format.js - end + # respond_to do |format| + # format.js + # end end def file_update diff --git a/app/views/games/_exec_results.html.erb b/app/views/games/_exec_results.html.erb index 733caeb04..1a9005426 100644 --- a/app/views/games/_exec_results.html.erb +++ b/app/views/games/_exec_results.html.erb @@ -95,34 +95,33 @@ var html = bt('t:exec_results',{status: <%= @game.status %>, output:"<%= @latest_output %>", results: <%= @results %>, had_done: "<%= @had_done %>"}); $("#code_results").html(html); }); - function training_task_submmit(){ + $("#ajax-indicator").show(); $("#game_commit").html("评测中.."); $.ajax({ url: '<%= game_build_myshixun_game_path(@game, :myshixun_id => @myshixun) %>', success: function (){ - - //循环等1分钟 + //移除载入 + var temp = $("#ajax-indicator"); + $("#ajax-indicator").remove(); var intId = setInterval(function(){ $.ajax({ url: '<%= game_status_myshixun_game_path(@game, :myshixun_id => @myshixun) %>', data:'test', success:function(data){ //如果查到了,就退出 - console.log(html); if(data.status == 2 || data.status == 0){ - alert("进来了"); clearInterval(intId); + $("#ajax-position").html(temp); + $("#ajax-indicator").hide(); var html = bt('t:exec_results',{status: data.status, output: data.output, results: data.results, had_done: data.had_done}); - console.log(html); $("#code_results").html(html); } } }); }, 2000); } - }) - + }); } function extend_window(){ var web_h = window.innerHeight; diff --git a/app/views/games/_myshixun_breadcrumbs.html.erb b/app/views/games/_myshixun_breadcrumbs.html.erb index 5e9e01b87..a41bb3947 100644 --- a/app/views/games/_myshixun_breadcrumbs.html.erb +++ b/app/views/games/_myshixun_breadcrumbs.html.erb @@ -2,7 +2,7 @@ <% if @path.blank? %> <%= @repository.identifier %> <% else %> - <%= link_to "#{@repository.identifier.present? ? h(@repository.identifier) : 'root'}", myshixun_game_path(@game, :myshixun_id => @myshixun) %> + <%= link_to "#{@repository.identifier.present? ? h(@repository.identifier) : 'root'}", myshixun_game_path(@game, :myshixun_id => @myshixun, :type => "root"), :remote => true %> <% dirs = path.split('/') if 'file' == kind diff --git a/app/views/games/_myshixun_extend_repository.html.erb b/app/views/games/_myshixun_extend_repository.html.erb index 84a876b94..bc936059a 100644 --- a/app/views/games/_myshixun_extend_repository.html.erb +++ b/app/views/games/_myshixun_extend_repository.html.erb @@ -1,7 +1,7 @@

<%= render :partial => 'myshixun_breadcrumbs', :locals => {:path => @path, :kind => 'dir', :revision => @rev} %>

- <% if params[:action] == "entry" %> + <% if params[:action] == "entry" || @file_open %> <% end %> @@ -9,7 +9,7 @@
- <% if params[:action] == "entry" %> + <% if params[:action] == "entry" || @file_open %>
<%= render :partial => 'common/extend_file', :locals => {:filename => @path, :content => @content, :extend => true} %>
diff --git a/app/views/games/_myshixun_repository.html.erb b/app/views/games/_myshixun_repository.html.erb index b2de9c953..05ca3098a 100644 --- a/app/views/games/_myshixun_repository.html.erb +++ b/app/views/games/_myshixun_repository.html.erb @@ -3,7 +3,7 @@ <%= render :partial => 'myshixun_breadcrumbs', :locals => {:path => @path, :kind => 'dir', :revision => @rev} %>
- <% if params[:action] == "entry" %> + <% if params[:action] == "entry" || @file_open %> @@ -12,7 +12,7 @@
- <% if params[:action] == "entry" %> + <% if params[:action] == "entry" || @file_open %>
<%= render :partial => 'common/file', :locals => {:filename => @path, :content => @content} %>
diff --git a/app/views/games/file_edit.html.erb b/app/views/games/file_edit.html.erb deleted file mode 100644 index 6d3edb6b2..000000000 --- a/app/views/games/file_edit.html.erb +++ /dev/null @@ -1,33 +0,0 @@ -<%= javascript_include_tag 'baiduTemplate', 'jquery.datetimepicker.js' %> -<%= javascript_include_tag "/assets/codemirror/codemirror_python_ruby_c" %> -<%= stylesheet_link_tag "/assets/codemirror/codemirror" %> -<%= form_tag(:controller => 'games', :action => 'file_update', :id => @game, :myshixun_id => @myshixun) do%> -
  • - - - -
  • -<% end %> - - \ No newline at end of file diff --git a/app/views/layouts/base_myshixun.html.erb b/app/views/layouts/base_myshixun.html.erb index 9a59751f7..3f943dc32 100644 --- a/app/views/layouts/base_myshixun.html.erb +++ b/app/views/layouts/base_myshixun.html.erb @@ -48,9 +48,11 @@ <%= yield %>
    +
    +
    diff --git a/db/migrate/20170324054735_add_path_to_games.rb b/db/migrate/20170324054735_add_path_to_games.rb new file mode 100644 index 000000000..70fe56803 --- /dev/null +++ b/db/migrate/20170324054735_add_path_to_games.rb @@ -0,0 +1,5 @@ +class AddPathToGames < ActiveRecord::Migration + def change + add_column :games, :path, :string + end +end diff --git a/db/schema.rb b/db/schema.rb index c86dc9d73..6593ee4db 100644 --- a/db/schema.rb +++ b/db/schema.rb @@ -11,7 +11,7 @@ # # It's strongly recommended to check this file into your version control system. -ActiveRecord::Schema.define(:version => 20170323081518) do +ActiveRecord::Schema.define(:version => 20170324054735) do create_table "activities", :force => true do |t| t.integer "act_id", :null => false @@ -1091,6 +1091,7 @@ ActiveRecord::Schema.define(:version => 20170323081518) do t.text "answer" t.integer "score" t.integer "final_score", :default => 0 + t.string "path" end create_table "groups_users", :id => false, :force => true do |t| diff --git a/lib/gitlab-cli/lib/gitlab/request.rb b/lib/gitlab-cli/lib/gitlab/request.rb index e1bb1094f..f8e18e415 100644 --- a/lib/gitlab-cli/lib/gitlab/request.rb +++ b/lib/gitlab-cli/lib/gitlab/request.rb @@ -62,18 +62,18 @@ module Gitlab # Checks the response code for common errors. # Returns parsed response for successful requests. def validate(response) - case response.code - when 400; raise Error::BadRequest.new error_message(response) - when 401; raise Error::Unauthorized.new error_message(response) - when 403; raise Error::Forbidden.new error_message(response) - when 404; raise Error::NotFound.new error_message(response) - when 405; raise Error::MethodNotAllowed.new error_message(response) - when 406; raise Error::DataNotAccepted.new error_message(response) - when 409; raise Error::Conflict.new error_message(response) - when 500; raise Error::InternalServerError.new error_message(response) - when 502; raise Error::BadGateway.new error_message(response) - when 503; raise Error::ServiceUnavailable.new error_message(response) - end + # case response.code + # when 400; raise Error::BadRequest.new error_message(response) + # when 401; raise Error::Unauthorized.new error_message(response) + # when 403; raise Error::Forbidden.new error_message(response) + # when 404; raise Error::NotFound.new error_message(response) + # when 405; raise Error::MethodNotAllowed.new error_message(response) + # when 406; raise Error::DataNotAccepted.new error_message(response) + # when 409; raise Error::Conflict.new error_message(response) + # when 500; raise Error::InternalServerError.new error_message(response) + # when 502; raise Error::BadGateway.new error_message(response) + # when 503; raise Error::ServiceUnavailable.new error_message(response) + # end response.parsed_response end diff --git a/lib/redmine/scm/adapters/gitlab_adapter.rb b/lib/redmine/scm/adapters/gitlab_adapter.rb index 5d3a0fc01..9d8c773ef 100644 --- a/lib/redmine/scm/adapters/gitlab_adapter.rb +++ b/lib/redmine/scm/adapters/gitlab_adapter.rb @@ -261,7 +261,7 @@ module Redmine elsif @myshixun file = @g.files(@myshixun, path, identifier) end - cat = Base64.decode64 file.content + cat = Base64.decode64 file.content unless file.content.blank? rescue ScmCommandAborted nil end