Merge branch 'develop' of https://bdgit.trustie.net/hushasha/bigdata into develop

This commit is contained in:
XuCheng642 2017-08-23 09:25:00 +08:00
commit ce362108f5
35 changed files with 276 additions and 177 deletions

View File

@ -1,54 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="DataSourceManagerImpl" format="xml" hash="1691105180">
<data-source source="LOCAL" name="Rails bigdate: production" uuid="adee68b8-199d-47ec-bc4e-eaf7d580fa6c">
<driver-ref>mysql</driver-ref>
<jdbc-driver>com.mysql.jdbc.Driver</jdbc-driver>
<jdbc-url>jdbc:mysql://127.0.0.1/trustie</jdbc-url>
<user-name>root</user-name>
<user-password>df9bdf98df99df9e</user-password>
<libraries />
</data-source>
<data-source source="LOCAL" name="Rails bigdate: development" uuid="f43a223e-937a-457d-9c1a-d91100b6257b">
<driver-ref>mysql</driver-ref>
<jdbc-driver>com.mysql.jdbc.Driver</jdbc-driver>
<jdbc-url>jdbc:mysql://127.0.0.1/trustie</jdbc-url>
<user-name>root</user-name>
<user-password>dfc5dfd8dfcbdfc9dfc6dfcfdf9bdf9adfcd</user-password>
<libraries />
</data-source>
<data-source source="LOCAL" name="Rails bigdate: test" uuid="e85434eb-4b0f-4e83-a8a4-933a0fed85bc">
<driver-ref>mysql</driver-ref>
<jdbc-driver>com.mysql.jdbc.Driver</jdbc-driver>
<jdbc-url>jdbc:mysql://127.0.0.1/0623newblank</jdbc-url>
<user-name>root</user-name>
<user-password>dfc5dfd8dfcbdfc9dfc6dfcfdf9bdf9adfcd</user-password>
<libraries />
</data-source>
<data-source source="LOCAL" name="Rails bigdata: production" uuid="a2967bb5-941b-447d-ba0e-5e62ade5fb7d">
<driver-ref>mysql</driver-ref>
<jdbc-driver>com.mysql.jdbc.Driver</jdbc-driver>
<jdbc-url>jdbc:mysql://127.0.0.1/trustie</jdbc-url>
<user-name>root</user-name>
<user-password>dfcbdfc6dfcbdfc4dfc6dfc5dfc4dfcd</user-password>
<libraries />
</data-source>
<data-source source="LOCAL" name="Rails bigdata: development" uuid="ea7cc5a3-1ef5-4a23-93bb-2c9650c10d07">
<driver-ref>mysql</driver-ref>
<jdbc-driver>com.mysql.jdbc.Driver</jdbc-driver>
<jdbc-url>jdbc:mysql://127.0.0.1/trustie</jdbc-url>
<user-name>root</user-name>
<user-password>dfcbdfc6dfcbdfc4dfc6dfc5dfc4dfcd</user-password>
<libraries />
</data-source>
<data-source source="LOCAL" name="Rails bigdata: test" uuid="9f93a163-6133-42ac-a16d-9bd67f458fd6">
<driver-ref>mysql</driver-ref>
<jdbc-driver>com.mysql.jdbc.Driver</jdbc-driver>
<jdbc-url>jdbc:mysql://127.0.0.1/trustie</jdbc-url>
<user-name>root</user-name>
<user-password>dfcbdfc6dfcbdfc4dfc6dfc5dfc4dfcd</user-password>
<libraries />
</data-source>
</component>
</project>

View File

@ -581,7 +581,7 @@ class AccountController < ApplicationController
def apply_trail
apply_action = ApplyAction.where(:user_id => User.current.id, :container_type => "TrialAuthorization", :status => 0).first
if apply_action.blank?
ApplyAction.create(:user_id => User.current.id, :status => 0, :container_type => "TrialAuthorization")
ApplyAction.create(:user_id => User.current.id, :status => 0, :container_type => "TrialAuthorization", :apply_reason => params[:apply_reason])
end
respond_to do |format|
format.js

View File

@ -8,9 +8,17 @@ class ShixunsController < ApplicationController
before_filter :shixun_view_allow, :only => [:show]
before_filter :require_manager, :only => [ :settings, :add_script, :publish, :collaborators_delete, :shixun_members_added, :add_collaborators]
before_filter :validation_email, :only => [:new]
#skip_before_filter :verify_authenticity_token, :only => :update_propaedeutics
skip_before_filter :verify_authenticity_token, :only => [:gitlab_hook]
include ApplicationHelper
CODES = %W(2 3 4 5 6 7 8 9 A B C D E F G H J K L N M O P Q R S T U V W X Y Z)
DCODES = %W(2 3 4 5 6 7 8 9 a b c f e f g h i j k l m n o p q r s t u v w x y z)
# push代码的时候会触发gitlab hook
def ghook
shixun_modify_status_without_publish(@shixun, 1)
render :json => {status: "success"}
end
def shixun_migrate
unless User.current.admin?
@ -82,6 +90,7 @@ class ShixunsController < ApplicationController
@rev = params[:rev]
file_content = g.files(@shixun.gpid, @path, @rev).content
@content = tran_base64_decode64(file_content)
respond_to do |format|
format.js
end
@ -446,7 +455,6 @@ class ShixunsController < ApplicationController
end
end
CODES = %W(2 3 4 5 6 7 8 9 A B C D E F G H J K L N M O P Q R S T U V W X Y Z)
def create
identifier = generate_identifier
@shixun = Shixun.new(params[:shixun])
@ -476,6 +484,9 @@ class ShixunsController < ApplicationController
s = Trustie::Gitlab::Sync.new
gproject = s.create_shixun(@shixun, repository)
raise "版本库创建失败" if @shixun.gpid.blank? # 若和gitlab没同步成功则抛出异常
g = Gitlab.client
hook_url = Setting.protocol + "://" + Setting.host_name + "/shixuns/#{@shixun.identifier}" + "/ghook"
g.add_project_hook(@shixun.gpid, hook_url)
redirect_to shixun_path @shixun, notice: l(:notice_successful_create)
rescue Exception => e
respond_to do |format|
@ -493,14 +504,12 @@ class ShixunsController < ApplicationController
end
end
CODES = %W(2 3 4 5 6 7 8 9 A B C D E F G H J K L N M O P Q R S T U V W X Y Z)
def generate_identifier
code = CODES.sample(8).join
code = DCODES.sample(8).join
return generate_identifier if Shixun.where(identifier: code).present?
code
end
DCODES = %W(2 3 4 5 6 7 8 9 a b c f e f g h i j k l m n o p q r s t u v w x y z)
def down_generate_identifier type
if type == "game"
code = DCODES.sample(12).join

View File

@ -185,7 +185,7 @@ module ApplicationHelper
# 实训语言的种类
def shixun_language
["Java", "C", "C++", "Python2.7", "Python3.6", "MySQL/Java", "Html", "JFinal", "Docker", "Ethereum", "Dynamips"]
["Java", "C", "C++", "Python2.7", "Python3.6", "MySQL/Java", "Html", "JFinal", "Docker", "Ethereum", "Dynamips", "MachineLearning"]
end
# 实训试用专业

View File

@ -18,7 +18,7 @@ module ChallengesHelper
when 0
"<a title='待完成'><i class='fa fa-unlock-alt fr font-18 mt5 -text-danger w20_center'></i></a>".html_safe
when 1
"评测中"
"<a title='评测中'><i class='fa fa-unlock-alt fr font-18 mt5 -text-danger w20_center'></i></a>".html_safe
when 2
"<a title='已解决'><i class='fa fa-unlock fr font-18 mt5 color-light-green w20_center' ></i></a>".html_safe
when 3,nil

View File

@ -1,7 +1,7 @@
# status0 审核中 1 同意 2 拒绝 3 撤销
class ApplyAction < ActiveRecord::Base
default_scope :order => 'updated_at desc'
attr_accessible :container_id, :container_type, :dealer_id, :reason, :user_id, :status
attr_accessible :container_id, :container_type, :dealer_id, :reason, :user_id, :status, :apply_reason
belongs_to :user
end

View File

@ -1,5 +1,5 @@
<%= stylesheet_link_tag '/editormd/css/editormd','/editormd/css/editormd.min.css' %>
<%= javascript_include_tag '/editormd/editormd.min.js','/editormd/examples/js/jquery.min.js' %>
<%= javascript_include_tag '/editormd/editormd','/editormd/examples/js/jquery.min.js' %>
<style>
.CodeMirror-scroll{
overflow: auto !important;

View File

@ -1,11 +1,14 @@
<%= javascript_include_tag "/codemirror/lib/matchbrackets" %>
<style type="text/css">
.CodeMirror{line-height: 1.2; font-size: 14px}
.cm-s-railscasts span.cm-error{background:none;color: #d4cfc9;}
.CodeMirror-matchingbracket { color: #fff34d; }
</style>
<form action="<%= file_update_myshixun_game_path(@game, :myshixun_id => @myshixun, :path => @path) %>" method="post" id="file_update_id" data-remote="true">
<li class="clearfix" xmlns="http://www.w3.org/1999/html" id="edit_code_contents">
<textarea class="" id="challenge-answer-edit-small" name="content"><%= Redmine::CodesetUtil.replace_invalid_utf8(@content) %></textarea>
<textarea class="undis" id="challenge-answer-edit-small" name="content"><%= Redmine::CodesetUtil.replace_invalid_utf8(@content) %></textarea>
</li>
</form>

View File

@ -64,7 +64,7 @@
</div>
</div>
<div class="-layout-h -padding-h-16 -horizontal -footer-left">
<ul class="-task-ml80">
<ul class="-task-ml80" style="height:40px;">
<%= render :partial => "games/shixun_comment_block" %>
<li class="fl mt10 ml20"><a href="javascript:void(0);" onclick="send_dis_to_shixun()" class="course-bth-blue color_white">发送</a></li>
<li class="fl ml20 mt15">

View File

@ -19,7 +19,7 @@
<div class="cl"></div>
</ul>
<div class="cl"></div>
<div id="codetab_con_1">
<div id="codetab_con_1" style="background: #2b2b2b;">
<div class="panel-header clearfix" id="top_repository" style="border-bottom:0">
<h3 class="fl">
<%= render :partial => 'myshixun_breadcrumbs', :locals => {:path => @path, :kind => 'dir'} %>
@ -28,9 +28,9 @@
</div>
<div class="-flex -relative">
<div class="fit">
<div class="-layout-v -fit loading-center undis" id="coding_ajax_loading">
<embed src='/images/bigdata/loading2.svg' />
</div>
<!-- <div class="-layout-v -fit loading-center undis" id="coding_ajax_loading">
<embed src='/images/bigdata/loading2.svg' />
</div>-->
<div class="-layout-v -fit" id="coding_area">
<div class="-flex">
<div class="content-editor-inner">
@ -49,24 +49,21 @@
</div>
</div>
</div>
<div id="codetab_con_2" class="undis -relative">
</div>
<div id="codetab_con_2" class="undis -relative"></div>
<div id="current_repository_path" class="undis"><%= file_update_myshixun_game_path(@game, :myshixun_id => @myshixun, :path => @path) %></div>
<script>
$(function(){
LoadingWebssh();
});
var H = 2;
$(function(){
<% if @myshixun.shixun.try(:webssh) %>
LoadingWebssh();
<% end %>
});
var H = 2;
function g_l(o){return document.getElementById(o);}
function HoverLi_new(n){
console.log("n:" + n);
for(var i=1;i<=H;i++){
$('#codetab_nav_'+i).removeClass('blacktab_hover');
$('#codetab_nav_'+i).addClass('blacktab_nomal');
$('#codetab_con_'+i).hide();
}
if(n==1){
$("#games_repository_contents").removeClass("-bg-weightblack").addClass("-bg-black");
@ -85,9 +82,7 @@
HoverLi_new(2);
});
<% end %>
$('#codetab_nav_add').click(function(){
//console.log(1);
if($(".add-webssh").length < 5){
H += 1;
$(this).before("<li id=\"codetab_nav_"+H+"\" data-tab="+ H +" class=\"add-webssh\">"+
@ -95,34 +90,25 @@
"<span>×</span>" +
"</li>");
$("#games_repository_contents").append("<div id=\"codetab_con_"+H+"\" class=\"undis -relative\">"+
"</div>");
console.log("##################################"+$(".add-webssh").length);
"</div>");
if($(".add-webssh").length == 5){
$(this).hide();
}
LoadingWebssh();
$('#blacktab_nav').find("li").click(function(){
//console.log($(this).attr("class"));
if($(this).attr("id")==$("#codetab_nav_add").attr("id")){
return;
}
if($(this).attr("id")=="codetab_nav_"+H+""){
HoverLi_new(H);
}
});
$('.add-webssh').find("span").click(function(){
$(this).parent().hide();
$(this).parent().removeClass("add-webssh");
});
//当给span添加点击事件的时候每次打开一个webssh窗口添加一次会造成多次事件的绑定所以执行逻辑前需要解除之前绑定的事件。
$('.add-webssh').find("span").unbind("click").click(function(e){
$("#codetab_con_"+$(this).parent().attr("data-tab")).hide();
$('#codetab_nav_add').show();
HoverLi_new($(this).parent().prevAll().first(".add-webssh").attr("data-tab"));
var index = $($(this).parent().prevAll()[0]).attr("data-tab");
$(this).parent().remove();
HoverLi_new(index);
});
HoverLi_new(H);
}
});
@ -134,19 +120,17 @@
if(data.error){
return;
}else{
var h = $("#games_repository_contents").height() - $("#top_repository").height() - 10;
var h = $("#games_repository_contents").height() - 50;
var rows = parseInt(h / 18);
// 测试版
var html = "<iframe src='<%= Redmine::Configuration['webssh'] %>/?Host=" + data.host + "&Port=" + data.port + "&Username=" + data.username + "&Password=" + data.password + "&Gameid=" + data.game_id + "&rows=" + rows + "'" + " style='width:100%;border:0;' scrolling='no' class='game_webssh'></iframe><div class='-brother undis'></div>";
var html = "<iframe src='<%= Redmine::Configuration['webssh'] %>?Host=" + data.host + "&Port=" + data.port + "&Username=" + data.username + "&Password=" + data.password + "&Gameid=" + data.game_id + "&Rows=" + rows + "'" + " style='width:100%;border:0;' scrolling='no' class='game_webssh'></iframe><div class='-brother undis'></div>";
// 本地版
var html_local ="<iframe src='http://127.0.0.1:9527?Host=106.75.96.108&Port=40054&Username=root&Password=123123&Gameid=" +data.game_id + "&rows=" + rows + "'" + " style='width:100%;border:0;' scrolling='no' class='game_webssh'></iframe><div class='-brother undis'></div>";
// $("#LazyLoading").remove();
var html_local ="<iframe src='http://127.0.0.1:9527?Host=106.75.96.108&Port=40054&Username=root&Password=123123&Gameid=" +data.game_id + "&Rows=" + rows + "'" + " style='width:100%;border:0;' scrolling='no' class='game_webssh'></iframe><div class='-brother undis'></div>";
// $("#LazyLoading").remove();
console.log(html);
$("#codetab_con_"+H).html(html);
$(".game_webssh").css("min-height", h);
// HoverLi_new(2);
// HoverLi_new(2);
}
}

View File

@ -3,5 +3,5 @@
<% else %>
$("#games_repository_contents").html('<%= escape_javascript(render :partial => 'games/repository') %>');
<% end %>
$("#coding_area").show();
//$("#coding_area").show();
$("#coding_ajax_loading").css("display", "none");

View File

@ -30,7 +30,7 @@
});
</script>
</head>
<body onload="prettyPrint();">
<body onload="prettyPrint();" style="height: 100%">
<div class="newContainer"> <!-- 页面全部内容 -->
<div class="newHeader"> <!-- 头部 -->
<%= render :partial => User.current.logged? ? 'layouts/logined_header' : 'layouts/unlogin_header' %>

View File

@ -16,7 +16,7 @@
<%= yield :header_tags -%>
</head>
<!--add by huang-->
<body onload="setupAjaxIndicator();">
<body onload="setupAjaxIndicator();" style="height: 100%">
<div class="cl"></div>
<div class="page -layout-v -fit ">

View File

@ -15,7 +15,7 @@
<%= yield :header_tags -%>
</head>
<!--add by huang-->
<body onload="prettyPrint();">
<body onload="prettyPrint();" style="height: 100%">
<div class="newContainer"> <!-- 页面全部内容 -->
<div class="newHeader"> <!-- 头部 -->
<%= render :partial => User.current.logged? ? 'layouts/logined_header' : 'layouts/unlogin_header' %>

View File

@ -18,7 +18,7 @@
<%= yield :header_tags -%>
</head>
<!--add by huang-->
<body onload="prettyPrint();">
<body onload="prettyPrint();" style="height: 100%;">
<div class="newContainer edu-bg"> <!-- 页面全部内容 -->
<div class="newHeader"> <!-- 头部 -->
<%= render :partial => User.current.logged? ? 'layouts/logined_header' : 'layouts/unlogin_header' %>

View File

@ -13,7 +13,7 @@
<a href="javascript:void(0);" class="fr color-orange" onclick="reject_authentication_reason(this);" >拒绝</a>
<a href="javascript:void(0);" class="fr mr15 color-orange" data-remote="true" onclick="trial_authorization_gree('<%= authorization.id %>');">同意</a>
</li>
<li class="clearfix mb10">
<li class="clearfix mb5">
<% if !user.try(:user_extensions).school_id.blank? && user.try(:user_extensions).try(:school) %>
<span><%= user.try(:user_extensions).school.name %><%= user.try(:user_extensions).department ? ' - '+user.try(:user_extensions).department.name.to_s : '' %></span>
<% end %>
@ -26,6 +26,9 @@
<span class="ml30 color-yellow"><%= user_certification_status(user) %></span>
<span class="ml30 color-yellow"><%= pro_certification_status(user) %></span>
</li>
<li class="clearfix mb5">
<span>申请理由:<%= authorization.apply_reason %></span>
</li>
<div class="undis">
<li class="clearfix edu-form-border mb10">
<label class="edu-form-label fl">原因:</label>

View File

@ -12,7 +12,7 @@
<span class="fl ml30 font-12 color-grey"><%= time_from_now(authorization.updated_at) %></span>
<a class=" task-btn <%= authorization.status == 1 ? 'task-btn-green' : '' %> fr "><%= authorization.status == 1 ? "已同意" : "已拒绝" %></a>
</li>
<li class="clearfix mb10">
<li class="clearfix mb5">
<% if !user.try(:user_extensions).school_id.blank? && user.try(:user_extensions).try(:school) %>
<span><%= user.try(:user_extensions).school.name %><%= user.try(:user_extensions).department ? ' - '+user.try(:user_extensions).department.name.to_s : '' %></span>
<% end %>
@ -25,6 +25,9 @@
<span class="ml30 color-yellow"><%= user_certification_status(user) %></span>
<span class="ml30 color-yellow"><%= pro_certification_status(user) %></span>
</li>
<li class="clearfix mb5">
<span>申请理由:<%= authorization.apply_reason %></span>
</li>
<% if authorization.status == 2 %>
<li>原因:<span class="color-orange"><%= authorization.reason.blank? ? "空" : authorization.reason %></span></li>
<% end %>

View File

@ -7,7 +7,7 @@
</style>
<form action="<%= entry_update_shixun_path(@shixun, :rev => @rev, :path => @path) %>" method="post" id="shixun_entry_update_id" data-remote="true">
<li class="clearfix" xmlns="http://www.w3.org/1999/html" id="edit_code_contents">
<textarea class="" id="content_shixun_entry" name="content"><%= Redmine::CodesetUtil.replace_invalid_utf8(@content) %></textarea>
<textarea class="undis" id="content_shixun_entry" name="content"><%= Redmine::CodesetUtil.replace_invalid_utf8(@content) %></textarea>
</li>
</form>

View File

@ -1,5 +1,5 @@
<%= stylesheet_link_tag '/editormd/css/editormd','/editormd/css/editormd.min.css' %>
<%= javascript_include_tag '/editormd/editormd.min.js' %>
<%= stylesheet_link_tag '/editormd/css/editormd' %>
<%= javascript_include_tag '/editormd/editormd' %>
<div class="edu-con-bg01 user_bg_shadow mb20" style="padding:30px 0;">
<div class="ml30 mr30">
<div>

View File

@ -8,7 +8,7 @@
url2左侧按钮的链接
按钮如果不要跳转 传javascript:void(0), 如果按钮使用js效果使用其id进行绑定不要写在公共的js里面
-->
<div class="task-popup-warp" style="background-color: rgba(0,0,0,0.7);;position: fixed;left: 0;top: 0;">
<div class="task-popup-warp" style="background-color: rgba(0,0,0,0.7);;position: fixed;left: 0;top: 0;">
<div class="task-popup" style="width:500px;position: fixed;left: 40%;top: 30%">
<div class=" task-popup-title clearfix task-popup-bggrey">
<h3 class="fl">提示</h3>
@ -30,10 +30,22 @@
</div>
<% else %>
<div class="clearfix task-popup-submit" style="width:180px;">
<a href="<%= url1 %>" class="task-btn task-btn-blue fr" id="mask-left-btn" onclick="$('.task-popup-warp').remove();" data-remote="true"><%= btn1 %></a>
<a href="<%= url2 %>" class="task-btn task-btn-blue fr mr10" id="mask-right-btn" onclick="$('.task-popup-warp').remove();"><%= btn2 %></a>
<a href="javascript:void(0);" class="task-btn task-btn-blue fr" id="mask-left-btn"><%= btn1 %></a>
<a href="<%= url2 %>" class="task-btn task-btn-blue fr mr10" id="mask-right-btn" onclick="$('.task-popup-warp').remove();"><%= btn2 %></a>
</div>
<% end %>
<div class="cl"></div>
<div class="mt10 undis" id="apply_reason_form">
<%= form_tag(url1, :remote => true,:name=>"apply_trail_form",:id=>'apply_trail_form') do %>
<textarea class="reUploadDetail" id="apply_reason" name="apply_reason" placeholder="请在此填写推荐人信息或申请理由(必填)"></textarea>
<div class="cl"></div>
<div class="mt10">
<p id="hint_message" class="color-orange fl undis">请填写推荐人信息或申请理由</p>
<a href="javascript:void(0);" id="apply_trail_submit_btn" class="task-btn task-btn-blue fr sure">确定</a>
<div class="cl"></div>
</div>
<% end %>
</div>
</div>
</div>
</div>

View File

@ -1 +1 @@
Rails.application.config.session_store ActionDispatch::Session::CacheStore, :expire_after => 90.minutes, :key => '_educoder_session', :domain => :all
Rails.application.config.session_store ActionDispatch::Session::CacheStore, :expire_after => 8.hours, :key => '_educoder_session', :domain => :all

View File

@ -101,6 +101,7 @@ RedmineApp::Application.routes.draw do
get 'entry_edit'
match 'entry_update'
get 'shixun_discuss'
match 'ghook'
end
collection do
get 'shixun_courses'
@ -762,7 +763,7 @@ RedmineApp::Application.routes.draw do
match 'account/avatar', :to => 'account#avatar', :via => :get, :as => "avatar_account"
match 'account/authentication', :to => 'account#authentication', :via => :get, :as => "authentication_account"
match 'account/professional_certification', :to => 'account#professional_certification', :via => :get, :as => "professional_certification_account"
match 'account/apply_trail', :to => 'account#apply_trail', :via => :get, :as => "apply_trail_account"
match 'account/apply_trail', :to => 'account#apply_trail', :via => :post, :as => "apply_trail_account"
match 'account/user_auth', :to => 'account#user_auth', :via => :get, :as => "user_auth_account"
match 'account/security_settings', :to => 'account#security_settings', :via => :get, :as => "security_settings"
match 'account/change_psd', :to => 'account#change_psd', :via => :get, :as => "change_psd"

View File

@ -0,0 +1,5 @@
class AddApplyReasonToApplyAction < ActiveRecord::Migration
def change
add_column :apply_actions, :apply_reason, :text
end
end

140
public/codemirror/lib/matchbrackets.js vendored Normal file
View File

@ -0,0 +1,140 @@
// CodeMirror, copyright (c) by Marijn Haverbeke and others
// Distributed under an MIT license: http://codemirror.net/LICENSE
(function(mod) {
if (typeof exports == "object" && typeof module == "object") // CommonJS
mod(require("/lib/codemirror"));
else if (typeof define == "function" && define.amd) // AMD
define(["/lib/codemirror"], mod);
else // Plain browser env
mod(CodeMirror);
})(function(CodeMirror) {
var ie_lt8 = /MSIE \d/.test(navigator.userAgent) &&
(document.documentMode == null || document.documentMode < 8);
var Pos = CodeMirror.Pos;
var matching = {"(": ")>", ")": "(<", "[": "]>", "]": "[<", "{": "}>", "}": "{<"};
function findMatchingBracket(cm, where, config) {
var line = cm.getLineHandle(where.line), pos = where.ch - 1;
var afterCursor = config && config.afterCursor
if (afterCursor == null)
afterCursor = /(^| )cm-fat-cursor($| )/.test(cm.getWrapperElement().className)
// A cursor is defined as between two characters, but in in vim command mode
// (i.e. not insert mode), the cursor is visually represented as a
// highlighted box on top of the 2nd character. Otherwise, we allow matches
// from before or after the cursor.
var match = (!afterCursor && pos >= 0 && matching[line.text.charAt(pos)]) ||
matching[line.text.charAt(++pos)];
if (!match) return null;
var dir = match.charAt(1) == ">" ? 1 : -1;
if (config && config.strict && (dir > 0) != (pos == where.ch)) return null;
var style = cm.getTokenTypeAt(Pos(where.line, pos + 1));
var found = scanForBracket(cm, Pos(where.line, pos + (dir > 0 ? 1 : 0)), dir, style || null, config);
if (found == null) return null;
return {from: Pos(where.line, pos), to: found && found.pos,
match: found && found.ch == match.charAt(0), forward: dir > 0};
}
// bracketRegex is used to specify which type of bracket to scan
// should be a regexp, e.g. /[[\]]/
//
// Note: If "where" is on an open bracket, then this bracket is ignored.
//
// Returns false when no bracket was found, null when it reached
// maxScanLines and gave up
function scanForBracket(cm, where, dir, style, config) {
var maxScanLen = (config && config.maxScanLineLength) || 10000;
var maxScanLines = (config && config.maxScanLines) || 1000;
var stack = [];
var re = config && config.bracketRegex ? config.bracketRegex : /[(){}[\]]/;
var lineEnd = dir > 0 ? Math.min(where.line + maxScanLines, cm.lastLine() + 1)
: Math.max(cm.firstLine() - 1, where.line - maxScanLines);
for (var lineNo = where.line; lineNo != lineEnd; lineNo += dir) {
var line = cm.getLine(lineNo);
if (!line) continue;
var pos = dir > 0 ? 0 : line.length - 1, end = dir > 0 ? line.length : -1;
if (line.length > maxScanLen) continue;
if (lineNo == where.line) pos = where.ch - (dir < 0 ? 1 : 0);
for (; pos != end; pos += dir) {
var ch = line.charAt(pos);
if (re.test(ch) && (style === undefined || cm.getTokenTypeAt(Pos(lineNo, pos + 1)) == style)) {
var match = matching[ch];
if ((match.charAt(1) == ">") == (dir > 0)) stack.push(ch);
else if (!stack.length) return {pos: Pos(lineNo, pos), ch: ch};
else stack.pop();
}
}
}
return lineNo - dir == (dir > 0 ? cm.lastLine() : cm.firstLine()) ? false : null;
}
function matchBrackets(cm, autoclear, config) {
// Disable brace matching in long lines, since it'll cause hugely slow updates
var maxHighlightLen = cm.state.matchBrackets.maxHighlightLineLength || 1000;
var marks = [], ranges = cm.listSelections();
for (var i = 0; i < ranges.length; i++) {
var match = ranges[i].empty() && findMatchingBracket(cm, ranges[i].head, config);
if (match && cm.getLine(match.from.line).length <= maxHighlightLen) {
var style = match.match ? "CodeMirror-matchingbracket" : "CodeMirror-nonmatchingbracket";
marks.push(cm.markText(match.from, Pos(match.from.line, match.from.ch + 1), {className: style}));
if (match.to && cm.getLine(match.to.line).length <= maxHighlightLen)
marks.push(cm.markText(match.to, Pos(match.to.line, match.to.ch + 1), {className: style}));
}
}
if (marks.length) {
// Kludge to work around the IE bug from issue #1193, where text
// input stops going to the textare whever this fires.
if (ie_lt8 && cm.state.focused) cm.focus();
var clear = function() {
cm.operation(function() {
for (var i = 0; i < marks.length; i++) marks[i].clear();
});
};
if (autoclear) setTimeout(clear, 800);
else return clear;
}
}
var currentlyHighlighted = null;
function doMatchBrackets(cm) {
cm.operation(function() {
if (currentlyHighlighted) {currentlyHighlighted(); currentlyHighlighted = null;}
currentlyHighlighted = matchBrackets(cm, false, cm.state.matchBrackets);
});
}
CodeMirror.defineOption("matchBrackets", false, function(cm, val, old) {
if (old && old != CodeMirror.Init) {
cm.off("cursorActivity", doMatchBrackets);
if (currentlyHighlighted) {currentlyHighlighted(); currentlyHighlighted = null;}
}
if (val) {
cm.state.matchBrackets = typeof val == "object" ? val : {};
cm.on("cursorActivity", doMatchBrackets);
}
});
CodeMirror.defineExtension("matchBrackets", function() {matchBrackets(this, true);});
CodeMirror.defineExtension("findMatchingBracket", function(pos, config, oldConfig){
// Backwards-compatibility kludge
if (oldConfig || typeof config == "boolean") {
if (!oldConfig) {
config = config ? {strict: true} : null
} else {
oldConfig.strict = config
config = oldConfig
}
}
return findMatchingBracket(this, pos, config)
});
CodeMirror.defineExtension("scanForBracket", function(pos, dir, style, config){
return scanForBracket(this, pos, dir, style, config);
});
});

View File

@ -55,6 +55,7 @@
-moz-appearance: none;
-ms-appearance: none;
appearance: none;
line-height: normal;
}
.editormd ::-webkit-scrollbar {
height: 10px;

View File

@ -4451,7 +4451,7 @@
}
editormd.dialogZindex += 2;
$("body").removeAttr("style");
return dialog;
};

View File

@ -69,6 +69,20 @@ $(function(){
$("#user_auth_submit_a").on('click',function(){
submit_user_auth();
});
$("#mask-left-btn").on('click', function(){
$("#apply_reason_form").show();
});
$("#apply_trail_submit_btn").on('click', function(){
if($("#apply_reason").val().trim() == ""){
$("#hint_message").show();
} else{
$("#hint_message").hide();
$("#apply_trail_form").submit();
$('.task-popup-warp').remove();
}
});
});
function cancel_edit_account(status) {

View File

@ -88,12 +88,24 @@ $(function(){
// opacity:0
// }).hide();
// });
var $desc = $("<div class=\"-task-title\">"+
var $desc = $("<div class=\"-task-title\">"+
"<div class=\"data-tip-down\"></div>"+
"<div class=\"data-tip-left\"></div>"+
"<div class=\"data-tip-right\"></div>"+
"</div>").appendTo("body");
$("[data-tip-down]").hover(function(){
//Dom绑定事件的节点对象ChangeDOM操作的相关节点
function LeaveTitle(Dom,ChangeDom){
Dom.live("mouseleave",function(){
ChangeDom.html("").hide();
$desc.css({
opacity:0
}).hide();
})
}
LeaveTitle($("[data-tip-down]"),$(".data-tip-down"));
LeaveTitle($("[data-tip-right]"),$(".data-tip-left"));
LeaveTitle($("[data-tip-left]"),$(".data-tip-right"));
$("[data-tip-down]").live("mouseenter",function(){
var $tool = $(this).attr("data-tip-down");
$(".data-tip-down").show().html($tool);
$desc.show().css({
@ -101,13 +113,8 @@ $(function(){
opacity:0.7,
top:$(this).offset().top+30
});
},function(){
$(".data-tip-down").html("").hide();
$desc.css({
opacity:0
}).hide();
});
$("[data-tip-right]").hover(function(){
$("[data-tip-right]").live("mouseenter",function(){
var $tool = $(this).attr("data-tip-right");
$(".data-tip-left").show().html($tool);
$desc.show().css({
@ -115,13 +122,8 @@ $(function(){
opacity:0.7,
top:$(this).offset().top-$desc.height()/4
});
},function(){
$(".data-tip-left").html("").hide();
$desc.css({
opacity:0
}).hide();
});
$("[data-tip-left]").hover(function(){
$("[data-tip-left]").live("mouseenter",function(){
var $tool = $(this).attr("data-tip-left");
$(".data-tip-right").show().html($tool);
$desc.show().css({
@ -129,12 +131,8 @@ $(function(){
opacity:0.7,
top:$(this).offset().top-$desc.height()/4
});
},function(){
$(".data-tip-right").html("").hide();
$desc.css({
opacity:0
}).hide();
});
//下拉框
$("[select-for]").append("<i class='fa fa-sort-desc lesson_img'></i>");
$("[select-for]").hover(function(){

View File

@ -43,13 +43,15 @@ $(function(){
}
if(flag){
clickY = e.pageY;
if(clickY > topOffset+100) {
if(clickY > topOffset+150) {
cen.css('top', clickY - 7 - topOffset + 'px');
cen.prev().height( clickY-topOffset + 'px');
nextW1 = clickY-topOffset;
cen.next().height( wrapHeight - nextW1 + 'px');
var h = $("#games_repository_contents").height() - $("#top_repository").height() - 50;
$("#game_webssh").css("min-height", h);
var m = $("#games_repository_contents").height() - 50;
$(".game_webssh").css("min-height", m);
var rows = parseInt(m / 18);
$("#file_entry_content").find(".CodeMirror-scroll").css("min-height", h);
$("#file_entry_content").find(".CodeMirror-scroll").css("max-height", h);
} else {
@ -309,11 +311,7 @@ function game_tread(obj_id){
}
// end
function setupAjaxIndicatorBase() {
console.log(1);
console.log($('#ajax-indicator-base').length);
$('#ajax-indicator-base').bind('ajaxSend', function(event, xhr, settings) {
console.log($('.ajax-loading'));
if(settings && settings.url

View File

@ -1,5 +1,5 @@
$(function() {
$("#search_not_collaborators").live('input', function (e) {
$("#search_not_collaborators").on('input', function (e) {
throttle(search_not_teacher_f, window, e);
});
});

View File

@ -1,5 +1,6 @@
@charset "utf-8";
html,body{ font-size:14px; line-height:2.0; height:100%;}
body{font-size:14px; line-height:2.0;}
html{height:100%;}
.newContainer{ min-height:100%; height: auto !important; height: 100%; /*IE6不识别min-height*/position: relative;}
.newMain{ margin: 0 auto; padding-bottom: 155px; }
.newFooter{ position: absolute; bottom: 0; width: 100%; height: 155px;background: #323232; clear:both; min-width: 1200px}
@ -404,9 +405,9 @@ input::-ms-clear{display:none;}
/*.tip-right{right:-4px;top:50%;margin-top:-14px;}*/
.-task-title{opacity:0;position:absolute;left:0;top:0;display:none;}
.-task-title{opacity:0;position:absolute;left:0;top:0;display:none;z-index:9999;}
.data-tip-down,.data-tip-left,.data-tip-right{ position:relative; box-shadow:0px 0px 8px rgba(142,142,142,.1); background:#fff; color:#000; max-width:300px;
word-wrap: break-word; text-align:center; border-radius:10px; padding:1px 10px; border:1px solid #ccc; display:none; }
word-wrap: break-word; text-align:center; border-radius:4px; padding:1px 10px; border:1px solid #ccc; display:none; }
.data-tip-down:after,.data-tip-down:before,.data-tip-left:before,.data-tip-right:before,.data-tip-left:after,.data-tip-right:after{
position: absolute;content:''; width:0; height:0;}
.data-tip-down:after,.data-tip-down:before{left: 45%;top:-10px;
@ -428,4 +429,4 @@ input::-ms-clear{display:none;}
/*-------------------------旋转-------------------------*/
.transform90{transform: rotate(90deg);}
/*---------------------编辑器边框------------------------*/
.kindeditor{background: #F0F0EE;height:22px;border:1px solid #CCCCCC;border-bottom: none}
.kindeditor{background: #F0F0EE;height:22px;border:1px solid #CCCCCC;border-bottom: none}

View File

@ -239,3 +239,5 @@ input.new_loggin_input_test{ -webkit-box-shadow: 0 0 0px 1000px white inset; ou
.panel-cer-content .edu-table tr td{padding: 0px;border: none;border: 1px solid #ccc;padding: 6px 10px;}
.panel-cer-content .edu-table tr td:nth-child(1){text-align:right;width: 25%;color: #666666}
.panel-cer-content .edu-table tr td:nth-child(2){text-align:left;color: #333333;}
.reUploadDetail{border:1px solid #dddddd; padding: 0 5px; float:left; resize:none; width:418px; height:80px; overflow-y:auto;outline: none;}

View File

@ -96,11 +96,6 @@ a.opnionButton:hover{background: #297fb8; }
.hiddent{ overflow:hidden; white-space: nowrap; text-overflow:ellipsis;}
.font_bold{font-weight: bold;}
/***** Ajax indicator ******/
#ajax-indicator { position: absolute; /* fixed not supported by IE */ background-color:#eee;border: 1px solid #bbb; top:35%; left:40%; width:50%; font-weight:bold; text-align:center;
padding:0.6em; z-index:100000; opacity: 0.5;}
html>body #ajax-indicator { position: fixed; }
/*#ajax-indicator span { background-position: 0% 40%; vertical-align: bottom;}*/
div.modal { border-radius: 5px; background: #fff; z-index: 50; padding: 4px;}
.ui-widget-content { border: 1px solid #ddd; color: #333;}
.ui-widget { font-family: Verdana, sans-serif; font-size: 1.1em;}
.ui-dialog .ui-dialog-content { position: relative; border: 0; padding: .5em 1em; background: none; overflow: auto; zoom: 1;}

View File

@ -1,5 +1,6 @@
/************新版公共****************/
html,body{ font-size:14px; line-height:2.0; height:100%;}
body{font-size:14px; line-height:2.0;}
html{height:100%;}
/*.newContainer{ min-height:100%; height: auto !important; height: 100%; position: relative;}
.newMain{ margin: 0 auto; padding-bottom: 155px; }
.newFooter{ position: absolute; bottom: 0; width: 100%; height: 155px;background: #323232; clear:both; min-width: 1200px}

View File

@ -795,23 +795,6 @@ a.opnionButton:hover{background: #297fb8; }
.font_bold{font-weight: bold;}
/***** Ajax indicator ******/
#ajax-indicator {
position: absolute; /* fixed not supported by IE */
background-color:#eee;
border: 1px solid #bbb;
top:35%;
left:40%;
width:20%;
font-weight:bold;
text-align:center;
padding:0.6em;
z-index:100000;
opacity: 0.5;
}
html>body #ajax-indicator { position: fixed; }
/*#ajax-indicator span {*/
/*background-position: 0% 40%;*/
/*background-repeat: no-repeat;*/