Date: Mon, 1 Jul 2019 09:12:54 +0800
Subject: [PATCH 03/25] =?UTF-8?q?=E8=B0=83=E6=95=B4?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../javascripts/educoder/edu_application.js | 2576 ++++++++---------
public/react/config/webpack.config.dev.js | 30 +-
public/react/src/modules/home/shixunsHome.js | 8 +-
public/react/src/modules/tpm/NewFooter.js | 98 +-
public/react/src/modules/tpm/SiderBar.js | 2 +-
public/react/src/modules/tpm/TPMIndexHOC.js | 45 +-
6 files changed, 1385 insertions(+), 1374 deletions(-)
diff --git a/public/javascripts/educoder/edu_application.js b/public/javascripts/educoder/edu_application.js
index 91e04ce80..feacff0dd 100644
--- a/public/javascripts/educoder/edu_application.js
+++ b/public/javascripts/educoder/edu_application.js
@@ -1,1288 +1,1288 @@
-document.write("
");
-
-/*!
- * JavaScript Cookie v2.2.0
- * https://github.com/js-cookie/js-cookie
- *
- * Copyright 2006, 2015 Klaus Hartl & Fagner Brack
- * Released under the MIT license
- */
-!function(e) {
- var n;
- if ("function" == typeof define && define.amd && (define(e),
- n = !0),
- "object" == typeof exports && (module.exports = e(),
- n = !0),
- !n) {
- var t = window.Cookies
- , o = window.Cookies = e();
- o.noConflict = function() {
- return window.Cookies = t,
- o
- }
- }
-}(function() {
- function e() {
- for (var e = 0, n = {}; e < arguments.length; e++) {
- var t = arguments[e];
- for (var o in t)
- n[o] = t[o]
- }
- return n
- }
- function n(e) {
- return e.replace(/(%[0-9A-Z]{2})+/g, decodeURIComponent)
- }
- return function t(o) {
- function r() {}
- function i(n, t, i) {
- if ("undefined" != typeof document) {
- "number" == typeof (i = e({
- path: "/"
- }, r.defaults, i)).expires && (i.expires = new Date(1 * new Date + 864e5 * i.expires)),
- i.expires = i.expires ? i.expires.toUTCString() : "";
- try {
- var c = JSON.stringify(t);
- /^[\{\[]/.test(c) && (t = c)
- } catch (e) {}
- t = o.write ? o.write(t, n) : encodeURIComponent(String(t)).replace(/%(23|24|26|2B|3A|3C|3E|3D|2F|3F|40|5B|5D|5E|60|7B|7D|7C)/g, decodeURIComponent),
- n = encodeURIComponent(String(n)).replace(/%(23|24|26|2B|5E|60|7C)/g, decodeURIComponent).replace(/[\(\)]/g, escape);
- var f = "";
- for (var u in i)
- i[u] && (f += "; " + u,
- !0 !== i[u] && (f += "=" + i[u].split(";")[0]));
- return document.cookie = n + "=" + t + f
- }
- }
- function c(e, t) {
- if ("undefined" != typeof document) {
- for (var r = {}, i = document.cookie ? document.cookie.split("; ") : [], c = 0; c < i.length; c++) {
- var f = i[c].split("=")
- , u = f.slice(1).join("=");
- t || '"' !== u.charAt(0) || (u = u.slice(1, -1));
- try {
- var a = n(f[0]);
- if (u = (o.read || o)(u, a) || n(u),
- t)
- try {
- u = JSON.parse(u)
- } catch (e) {}
- if (r[a] = u,
- e === a)
- break
- } catch (e) {}
- }
- return e ? r[e] : r
- }
- }
- return r.set = i,
- r.get = function(e) {
- return c(e, !1)
- }
- ,
- r.getJSON = function(e) {
- return c(e, !0)
- }
- ,
- r.remove = function(n, t) {
- i(n, "", e(t, {
- expires: -1
- }))
- }
- ,
- r.defaults = {},
- r.withConverter = t,
- r
- }(function() {})
-});
-
-$(function() {
- var result = location.search.match(/\?search=(\w*)&?/i)
- if (result && result[1]) {
- var searchText = result[1]
- $('#search-input').val(searchText)
- }
- // 未报名用户登录时弹框
- // console.log(Cookies.get('enroll_status'));
- // if(Cookies.get('enroll_status') == 0){
- // Cookies.remove('enroll_status');
- // var html='
'+
- // '
'+
- // '
![](/images/educoder/competition/boxEnroll.png)
'+
- // '
'+
- // '
立即报名'+
- // '
';
- // $(".newContainer").append(html);
- // }
-});
-
-function CloseBox() {
- $(".CompetitionEnrollBox").remove();
-}
-
-//根据页面大小决定侧边栏的位置
-$(window).resize(function() {
- rightSlider();
-});
-function rightSlider() {
- var poi = parseInt((parseInt($(window).width()) - 1200) / 2) - 60;
- // console.log(parseInt($(window).width())+" "+poi);
- if (poi > 0) {
- $(".-task-sidebar").css("right", poi);
- } else {
- $(".-task-sidebar").css("right", "0px");
- }
- $(".-task-sidebar").show();
-}
-function open_course(id, allowVisit) {
- if (allowVisit) {
- window.open("/courses/" + id);
- }
-}
-function open_project(id, allowVisit) {
- if (allowVisit) {
- window.open("/projects/" + id);
- }
-}
-
-function conver_size(limit) {
- var size = "";
- if (limit < 1024) {
- //如果小于1KB转化成B
- size = limit.toFixed(2) + "B";
- } else if (limit < 1024 * 1024) {
- //如果小于1MB转化成KB
- size = (limit / 1024).toFixed(2) + "KB";
- } else if (limit < 1024 * 1024 * 1024) {
- //如果小于1GB转化成MB
- size = (limit / (1024 * 1024)).toFixed(2) + "MB";
- } else {
- //其他转化成GB
- size = (limit / (1024 * 1024 * 1024)).toFixed(2) + "GB";
- }
-
- var sizestr = size + "";
- var len = sizestr.indexOf("\.");
- var dec = sizestr.substr(len + 1, 2);
- if (dec == "00") {
- //当小数点后为00时 去掉小数部分
- return sizestr.substring(0, len) + sizestr.substr(len + 3, 2);
- }
- return sizestr;
-}
-
-function _initSider() {
- var $descSide = $("
").appendTo("body");
- $(".-task-sidebar>div").hover(function() {
- //移入显示二维码
- if ($(this).hasClass("scan")) {
- $(".scan_ewm").show().css({
- right: "75px",
- opacity: 0
- }).stop().animate({
- right: "45px",
- opacity: 1
- })
- return;
- }
- var $tool = $(this).attr("tooltips");
- $descSide.html($tool + "
![](/images/edu_user/jt.png)
");
- $descSide.data('_dom', this)
- $descSide.show().css({
- left: $(this).offset().left - $descSide.width() - 30,
- opacity: 0,
- top: $(this).offset().top
- }).stop().animate({
- left: $(this).offset().left - $descSide.width() - 5,
- opacity: 1
- }, 400);
- }, function() {
- if ($(this).hasClass("scan")) {
- $(".scan_ewm").stop().animate({
- right: "75px",
- opacity: 0
- }, 200).hide();
- }
- $descSide.stop().animate({
- left: $(this).offset().left - $descSide.width() - 30,
- opacity: 0
- }, 200).hide();
- });
- rightSlider();
-
- $(window).scroll(function() {
- if ($descSide.height()) {
- var hoverIcon = $descSide.data('_dom')
- $descSide.css('top', $(hoverIcon).offset().top)
- }
- })
-}
-$(function() {
- loadHeader();
- _initSider();
-
- $(window).scroll(function() {
- if ($(".gotop").length > 0) {
- if ($(document).scrollTop() > 0) {
- $(".-task-sidebar .gotop").show();
- $(".gotop").click(function() {
- $("html,body").scrollTop(0);
- });
- }
- if ($(document).scrollTop() == 0) {
- $(".-task-sidebar .gotop").hide();
- }
- }
- });
-
- // 翻页的GO
- $(".page_GO").live("keydown", function(event) {
- var code;
- if (!event) {
- event = window.event;
- //针对ie浏览器
- code = event.keyCode;
- } else {
- code = event.keyCode;
- }
- if (code == 13) {
- var prev = $(this).prev().find("a").html().trim();
- var page = $(this).val().trim();
- if (parseInt(prev) >= parseInt(page)) {
- if (typeof ($(this).prev().children("a").attr("href")) == "undefined") {
- var href = $(this).parent().find("li:first-child").children("a").attr("href");
- } else {
- var href = $(this).prev().children("a").attr("href");
- }
- var new_href = href.replace(/page=(\d*)/, 'page=' + page);
- console.log(new_href);
- $.get(new_href);
- return false;
- }
- }
- });
-
- // 试用申请弹框
- $("#apply_trail_submit_btn").live('click', function() {
- if ($("#apply_reason").val().trim() == "") {
- $("#hint_message").show();
- } else {
- $("#hint_message").hide();
- $("#apply_trail_form").submit();
- hideModal();
- }
- });
-
-});
-
-// editor 存在了jquery对象上,应用不需要自己写md_rec_data方法了
-function md_rec_data(k, mdu, id) {
- if (window.sessionStorage.getItem(k + mdu) !== null) {
- editor = $("#e_tips_" + id).data('editor');
- editor.setValue(window.sessionStorage.getItem(k + mdu));
-
- md_clear_data(k, mdu, id);
- }
-}
-// markdown的自动保存
-function md_elocalStorage(editor, mdu, id) {
- if (window.sessionStorage) {
- var oc = window.sessionStorage.getItem('content' + mdu);
- if (oc !== null) {
- $("#e_tips_" + id).data('editor', editor);
- var h = '您上次有已保存的数据,是否
恢复 ? /
不恢复';
- $("#e_tips_" + id).html(h);
- }
- setInterval(function() {
- d = new Date();
- var h = d.getHours();
- var m = d.getMinutes();
- var s = d.getSeconds();
- h = h < 10 ? '0' + h : h;
- m = m < 10 ? '0' + m : m;
- s = s < 10 ? '0' + s : s;
- if (editor.getValue().trim() != "") {
- md_add_data("content", mdu, editor.getValue());
- var id1 = "#e_tip_" + id;
- var id2 = "#e_tips_" + id;
- $(id1).html(" 数据已于 " + h + ':' + m + ':' + s + " 保存 ");
- $(id2).html("");
- }
- }, 10000);
-
- } else {
- $("#e_tip_" + id).after('您的浏览器不支持localStorage.无法开启自动保存草稿服务,请升级浏览器!');
- }
-}
-// 保存数据
-function md_add_data(k, mdu, d) {
- window.sessionStorage.setItem(k + mdu, d);
-}
-// 恢复数据
-//function md_rec_data(k,mdu,id, editor){
-// if(window.sessionStorage.getItem(k+mdu) !== null){
-// editor.setValue(window.sessionStorage.getItem(k+mdu));
-// md_clear_data(k,mdu,id);
-// }
-//}
-// 清空保存的数据
-function md_clear_data(k, mdu, id) {
- window.sessionStorage.removeItem(k + mdu);
- var id1 = "#e_tip_" + id;
- var id2 = "#e_tips_" + id;
- if (k == 'content') {
- $(id2).html("");
- } else {
- $(id1).html("");
- }
-}
-
-// editorMD to create
-/**
- *
- * @param id 渲染DOM的id
- * @param width 宽度
- * @param high 高度
- * @param placeholder
- * @param imageUrl 上传图片的url
- * @returns {*} 返回一个editorMD实例
- */
-function create_editorMD(id, width, high, placeholder, imageUrl, readonly) {
- var readonly = readonly == undefined ? false : readonly;
- var editorName = editormd(id, {
- width: width,
- height: high,
- syncScrolling: "single",
- //你的lib目录的路径,我这边用JSP做测试的
- path: "/editormd/lib/",
- tex: true,
- tocm: true,
- emoji: true,
- taskList: true,
- codeFold: true,
- searchReplace: true,
- htmlDecode: "style,script,iframe",
- sequenceDiagram: true,
- autoFocus: false,
- readonly: readonly,
- toolbarIcons: function() {
- // Or return editormd.toolbarModes[name]; // full, simple, mini
- // Using "||" set icons align right.
- return ["bold", "italic", "|", "list-ul", "list-ol", "|", "code", "code-block", "|", "testIcon", "testIcon1", '|', "image", "table", '|', "watch", "clear"]
- },
- toolbarCustomIcons: {
- testIcon: "
",
- testIcon1: "
"
- },
- //这个配置在simple.html中并没有,但是为了能够提交表单,使用这个配置可以让构造出来的HTML代码直接在第二个隐藏的textarea域中,方便post提交表单。
- saveHTMLToTextarea: true,
- // 用于增加自定义工具栏的功能,可以直接插入HTML标签,不使用默认的元素创建图标
- dialogMaskOpacity: 0.6,
- placeholder: placeholder,
- imageUpload: true,
- imageFormats: ["jpg", "jpeg", "gif", "png", "bmp", "webp", "JPG", "JPEG", "GIF", "PNG", "BMP", "WEBP"],
- imageUploadURL: imageUrl,
- //url
- onload: function(cMirror) {
- $("#" + id + " [type=\"latex\"]").bind("click", function() {
- editorName.cm.replaceSelection("```latex");
- editorName.cm.replaceSelection("\n");
- editorName.cm.replaceSelection("\n");
- editorName.cm.replaceSelection("```");
- var __Cursor = editorName.cm.getDoc().getCursor();
- editorName.cm.setCursor(__Cursor.line - 1, 0);
- });
-
- $("#" + id + " [type=\"inline\"]").bind("click", function() {
- editorName.cm.replaceSelection("$$$$");
- var __Cursor = editorName.cm.getDoc().getCursor();
- editorName.cm.setCursor(__Cursor.line, __Cursor.ch - 2);
- editorName.cm.focus();
- });
- $("[type=\"inline\"]").attr("title", "行内公式");
- $("[type=\"latex\"]").attr("title", "多行公式");
- setTimeout(function() {
- editorName.resize();
- editorName.cm.refresh();
- window.new_md = editorName;
- }, 300);
- }
- });
- return editorName;
-}
-
-// editormd to html
-/**
- *
- * @param id 渲染的id
- * @param callback onload回調 暫時未用
- */
-function editormd_to_html(id, callback) {
- editormd.loadKaTeX(function() {
- editormd.markdownToHTML(id, {
- htmlDecode: "style,script,iframe",
- // you can filter tags decode
- onload: function() {
- callback && callback()
- },
- taskList: true,
- tex: true,
- // 默认不解析
- flowChart: true,
- // 默认不解析
- sequenceDiagram: true// 默认不解析
- });
- });
-}
-
-function loadHeader() {
- //头部导航条的----------显示搜索框
- $("#search-open").on("click", function(e) {
- $(this).hide();
- // $("#header-nav").animate({opacity:"0"},1000);
- $(".posi-search").show()
- // .animate({opacity:"1"},1000);
- $("#header-nav").css("z-index", "2");
- $(".posi-search").css("z-index", "3");
- // $(".search-input").val(""); // 不清空
- $(".search-input").focus();
- $(".search-all .search-content").hide();
- e.stopPropagation();
- //阻止冒泡
- });
- $(".search-input").on("click", function(e) {
- e.stopPropagation();
- //阻止冒泡
- });
- //搜索框输入内容
- $(".search-input").on("input", function(e) {
- if ($(".search-input").val() == "") {
- $(".search-all .search-content").hide();
- } else {
- $(".search-all .search-content").show();
- }
- e.stopPropagation();
- //阻止冒泡
- });
- //搜索
- $("#header_keyword_search").on("click", header_search);
- $("input[name='search_keyword']").on("keydown", function(event) {
- var code;
- if (!event) {
- event = window.event;
- //针对ie浏览器
- code = event.keyCode;
- } else {
- code = event.keyCode;
- }
- if (code == 13) {
- header_search();
- return false;
- }
- });
- $(".search-clear").click(function(e) {
- e.stopPropagation();
- });
- //切换搜索条件
- $("#searchkey li").click(function(e) {
- var key = $($(this).children("a")[0]).html();
- switch (key) {
- case '实训':
- $("#search_type").val('1');
- break;
- case '课堂':
- $("#search_type").val('2');
- break;
- case '用户':
- $("#search_type").val('3');
- break;
- }
- $("#searchkey").siblings(".searchkey").html(key);
- // $("#searchkey").hide();
- e.stopPropagation();
- //阻止冒泡
- });
- //切换选择导航条
- $("#header-nav li").click(function() {
- $("#header-nav li").removeClass("active");
- $(this).addClass("active");
- });
- //点击页面其它(与搜索框无关的地方)都会将搜索框隐藏,所以与搜索框有关的地方需要阻止冒泡
- $("body").on("click", function() {
- closeSearch();
- });
-
- $(".search_history").on("click", function() {
- $("input[name='search_keyword']").val($(this).html());
- header_search();
- });
-}
-
-function header_search() {
- var keyword = $("input[name='search_keyword']").val();
- // 搜索关键字
- var index = $("#search_type").val();
- // 搜索课程/项目
- keyword = encodeURIComponent(keyword);
- // $.get('/users/search_shixuns_or_course',
- // { search: keyword,
- // index: index});
- window.location.href = "/users/search_shixuns_or_courses" + "?search=" + keyword + "&index=" + index;
- //e.stopPropagation();//阻止冒泡
-}
-
-//头部导航条的隐藏
-function closeSearch() {
- $('#posi-search').hide();
- $("#search-open").show();
- // $(".posi-search").animate({opacity:"0"},800);
- $("#header-nav").animate({
- opacity: "1"
- }, 1000);
- $(".posi-search").css("z-index", "2");
- $("#header-nav").css("z-index", "3");
-}
-(function($) {
- $.fn.drag = function(options) {
- var x, drag = this, isMove = false, defaults = {};
- var options = $.extend(defaults, options);
- //添加背景,文字,滑块
- var html = '
' + '
请拖住滑块,拖动到最右边
' + '
';
- this.append(html);
-
- var handler = drag.find('.handler');
- var drag_bg = drag.find('.drag_bg');
- var text = drag.find('.drag_text');
- var maxWidth = text.width() - handler.width();
- //能滑动的最大间距
- //鼠标按下时候的x轴的位置
- handler.mousedown(function(e) {
- isMove = true;
- x = e.pageX - parseInt(handler.css('left'), 10);
- });
-
- //鼠标指针在上下文移动时,移动距离大于0小于最大间距,滑块x轴位置等于鼠标移动距离
- $(document).mousemove(function(e) {
- var _x = e.pageX - x;
- var handler_offset = handler.offset();
- var lastX = e.clientX - x;
- lastX = Math.max(0, Math.min(maxWidth, lastX));
- if (isMove) {
- if (_x > 0 && _x <= maxWidth) {
- handler.css({
- 'left': lastX
- });
- drag_bg.css({
- 'width': lastX
- });
- } else if (lastX > maxWidth - 5 && lastX < maxWidth + 5) {
- //鼠标指针移动距离达到最大时清空事件
- dragOk();
- }
- }
- });
- handler.mouseup(function(e) {
- isMove = false;
- var _x = e.pageX - x;
- if (_x < maxWidth) {
- //鼠标松开时,如果没有达到最大距离位置,滑块就返回初始位置
- handler.css({
- 'left': 0
- });
- drag_bg.css({
- 'width': 0
- });
- }
- });
-
- //清空事件
- function dragOk() {
- var kuaiwidth = drag.width() - handler.width();
- handler.removeClass('handler_bg').addClass('handler_ok_bg');
- handler.css({
- 'left': kuaiwidth + 'px'
- })
- text.css({
- 'width': kuaiwidth + 'px'
- });
- text.text('验证通过');
- drag.css({
- 'color': '#fff'
- });
- drag_bg.css({
- 'width': kuaiwidth + 'px'
- })
- handler.unbind('mousedown');
- $(document).unbind('mousemove');
- $(document).unbind('mouseup');
- handler.parent().next().find("p").html("").hide();
- }
- }
- ;
-}
-)(jQuery);
-
-//判断是手机端还是电脑端
-function IsPC() {
- var userAgentInfo = navigator.userAgent;
- var Agents = ["Android", "iPhone", "SymbianOS", "Windows Phone", "iPad", "iPod"];
- var flag = true;
- for (var v = 0; v < Agents.length; v++) {
- if (userAgentInfo.indexOf(Agents[v]) > 0) {
- flag = false;
- break;
- }
- }
- return flag;
-}
-
-//Dom:绑定事件的节点对象,ChangeDOM:操作的相关节点,
-function LeaveTitle(Dom, ChangeDom) {
- ChangeDom.html("").hide();
- ChangeDom.parent().css({
- opacity: 0,
- left: 0,
- top: 0
- }).hide();
-}
-
-$(function() {
- //平台tip的样式优化js
- var $desc = $("
" + "
" + "
" + "
" + "
" + "
").appendTo("body");
- //Dom:绑定事件的节点对象,ChangeDOM:操作的相关节点,
- function LeaveTitle(Dom, ChangeDom) {
- Dom.live("mouseleave", function() {
- ChangeDom.html("").hide();
- $desc.css({
- opacity: 0,
- left: 0,
- top: 0
- }).hide();
- })
- }
- LeaveTitle($("[data-tip-top]"), $(".data-tip-top"));
- LeaveTitle($("[data-tip-down]"), $(".data-tip-down"));
- LeaveTitle($("[data-tip-right]"), $(".data-tip-left"));
- LeaveTitle($("[data-tip-left]"), $(".data-tip-right"));
- $("[data-tip-top]").live("mouseenter", function() {
- var $tool = $(this).attr("data-tip-top");
- if ($tool != "") {
- $(".data-tip-top").show().html($tool);
- $desc.show().css({
- left: $(this).offset().left - ($desc.width() - $(this).outerWidth()) / 2,
- opacity: 1,
- top: $(this).offset().top - 30
- });
- }
- });
- $("[data-tip-down]").live("mouseenter", function() {
- var $tool = $(this).attr("data-tip-down");
- if ($tool != "") {
- $(".data-tip-down").show().html($tool);
- $desc.show().css({
- left: $(this).offset().left - ($desc.width() - $(this).outerWidth()) / 2,
- opacity: 1,
- top: $(this).offset().top + $(this).height() + 6
- });
- }
- });
- $("[data-tip-right]").live("mouseenter", function() {
- var $tool = $(this).attr("data-tip-right");
- if ($tool != "") {
- console.log($(this).offset().left + " " + $(this).width());
- $(".data-tip-left").show().html($tool);
- $desc.show().css({
- left: $(this).offset().left + $(this).outerWidth() + 6,
- opacity: 1,
- top: $(this).offset().top - ($desc.height() - $(this).height()) / 2
- });
- }
- });
- $("[data-tip-left]").live("mouseenter", function() {
- var $tool = $(this).attr("data-tip-left");
- if ($tool != "") {
- $(".data-tip-right").show().html($tool);
- $desc.show().css({
- left: $(this).offset().left - $desc.width() - 6,
- opacity: 1,
- top: $(this).offset().top - ($desc.height() - $(this).height()) / 2
- });
- }
- });
- unitDownOption();
-});
-
-function unitDownOption() {
- //下拉框
- $("[select-for]").append("
");
- $("[select-for]").hover(function() {
- $(this).find(".down-select").show();
- }, function() {
- $(this).find(".down-select").hide();
- })
- $("[select-for] .down-select p").bind("click", function() {
- //alert($(this).attr("data-shixun-value"));
- if ($(this).attr("id") == "diy_script") {
- return;
- // 实训新建-选择自定义脚本diy
- }
- $(this).parents(".down-select").siblings("input[type=hidden]").attr("value", $(this).attr("data-shixun-value"));
-
- $(this).parents(".down-select").siblings("input[type=text]").val($(this).html().trim());
- $(this).parents(".down-select").hide();
- })
-}
-
-//初始化省份
-function showprovince(id) {
- var arrary = ["北京", "上海", "广东", "江苏", "浙江", "重庆", "安徽", "福建", "甘肃", "广西", "贵州", "海南", "河北", "黑龙江", "河南", "湖北", "湖南", "江西", "吉林", "辽宁", "内蒙古", "宁夏", "青海", "山东", "山西", "陕西", "四川", "天津", "新疆", "西藏", "云南", "香港特别行政区", "澳门特别行政区", "台湾", "海外"];
- var html = "
"
- for (var i = 0; i < arrary.length; i++) {
- var item = arrary[i];
- html += "
";
- }
- $("#" + id).html(html);
-}
-
-//省市下拉框
-function showcity(province, cityField) {
- switch (province) {
- case "北京":
- var cityOptions = new Array("东城","西城","朝阳","丰台","石景山","海淀","门头沟","房山","通州","顺义","昌平","大兴","平谷","怀柔","密云","延庆");
- break;
- case "上海":
- var cityOptions = new Array("崇明","黄浦","卢湾","徐汇","长宁","静安","普陀","闸北","虹口","杨浦","闵行","宝山","嘉定","浦东","金山","松江","青浦","南汇","奉贤");
- break;
- case "广东":
- var cityOptions = new Array("广州","深圳","珠海","东莞","中山","佛山","惠州","河源","潮州","江门","揭阳","茂名","梅州","清远","汕头","汕尾","韶关","顺德","阳江","云浮","湛江","肇庆");
- break;
- case "江苏":
- var cityOptions = new Array("南京","常熟","常州","海门","淮安","江都","江阴","昆山","连云港","南通","启东","沭阳","宿迁","苏州","太仓","泰州","同里","无锡","徐州","盐城","扬州","宜兴","仪征","张家港","镇江","周庄");
- break;
- case "重庆":
- var cityOptions = new Array("万州","涪陵","渝中","大渡口","江北","沙坪坝","九龙坡","南岸","北碚","万盛","双挢","渝北","巴南","黔江","长寿","綦江","潼南","铜梁","大足","荣昌","壁山","梁平","城口","丰都","垫江","武隆","忠县","开县","云阳","奉节","巫山","巫溪","石柱","秀山","酉阳","彭水","江津","合川","永川","南川");
- break;
- case "安徽":
- var cityOptions = new Array("合肥","安庆","蚌埠","亳州","巢湖","滁州","阜阳","贵池","淮北","淮化","淮南","黄山","九华山","六安","马鞍山","宿州","铜陵","屯溪","芜湖","宣城");
- break;
- case "福建":
- var cityOptions = new Array("福州","厦门","泉州","漳州","龙岩","南平","宁德","莆田","三明");
- break;
- case "甘肃":
- var cityOptions = new Array("兰州","白银","定西","敦煌","甘南","金昌","酒泉","临夏","平凉","天水","武都","武威","西峰","张掖");
- break;
- case "广西":
- var cityOptions = new Array("南宁","百色","北海","桂林","防城港","贵港","河池","贺州","柳州","钦州","梧州","玉林");
- break;
- case "贵州":
- var cityOptions = new Array("贵阳","安顺","毕节","都匀","凯里","六盘水","铜仁","兴义","玉屏","遵义");
- break;
- case "海南":
- var cityOptions = new Array("海口","儋县","陵水","琼海","三亚","通什","万宁");
- break;
- case "河北":
- var cityOptions = new Array("石家庄","保定","北戴河","沧州","承德","丰润","邯郸","衡水","廊坊","南戴河","秦皇岛","唐山","新城","邢台","张家口");
- break;
- case "黑龙江":
- var cityOptions = new Array("哈尔滨","北安","大庆","大兴安岭","鹤岗","黑河","佳木斯","鸡西","牡丹江","齐齐哈尔","七台河","双鸭山","绥化","伊春");
- break;
- case "河南":
- var cityOptions = new Array("郑州","安阳","鹤壁","潢川","焦作","济源","开封","漯河","洛阳","南阳","平顶山","濮阳","三门峡","商丘","新乡","信阳","许昌","周口","驻马店");
- break;
- case "香港":
- var cityOptions = new Array("香港","九龙","新界");
- break;
- case "湖北":
- var cityOptions = new Array("武汉","恩施","鄂州","黄冈","黄石","荆门","荆州","潜江","十堰","随州","武穴","仙桃","咸宁","襄阳","襄樊","孝感","宜昌");
- break;
- case "湖南":
- var cityOptions = new Array("长沙","常德","郴州","衡阳","怀化","吉首","娄底","邵阳","湘潭","益阳","岳阳","永州","张家界","株洲");
- break;
- case "江西":
- var cityOptions = new Array("南昌","抚州","赣州","吉安","景德镇","井冈山","九江","庐山","萍乡","上饶","新余","宜春","鹰潭");
- break;
- case "吉林":
- var cityOptions = new Array("长春","吉林","白城","白山","珲春","辽源","梅河","四平","松原","通化","延吉");
- break;
- case "辽宁":
- var cityOptions = new Array("沈阳","鞍山","本溪","朝阳","大连","丹东","抚顺","阜新","葫芦岛","锦州","辽阳","盘锦","铁岭","营口");
- break;
- case "澳门":
- var cityOptions = new Array("澳门");
- break;
- case "内蒙古":
- var cityOptions = new Array("呼和浩特","阿拉善盟","包头","赤峰","东胜","海拉尔","集宁","临河","通辽","乌海","乌兰浩特","锡林浩特");
- break;
- case "宁夏":
- var cityOptions = new Array("银川","固源","石嘴山","吴忠");
- break;
- case "青海":
- var cityOptions = new Array("西宁","德令哈","格尔木","共和","海东","海晏","玛沁","同仁","玉树");
- break;
- case "山东":
- var cityOptions = new Array("济南","滨州","兖州","德州","东营","菏泽","济宁","莱芜","聊城","临沂","蓬莱","青岛","曲阜","日照","泰安","潍坊","威海","烟台","枣庄","淄博");
- break;
- case "山西":
- var cityOptions = new Array("太原","长治","大同","候马","晋城","离石","临汾","宁武","朔州","忻州","阳泉","榆次","运城");
- break;
- case "陕西":
- var cityOptions = new Array("西安","安康","宝鸡","汉中","渭南","商州","绥德","铜川","咸阳","延安","榆林");
- break;
- case "四川":
- var cityOptions = new Array("成都","巴中","达川","德阳","都江堰","峨眉山","涪陵","广安","广元","九寨沟","康定","乐山","泸州","马尔康","绵阳","眉山","南充","内江","攀枝花","遂宁","汶川","西昌","雅安","宜宾","自贡","资阳");
- break;
- case "台湾":
- var cityOptions = new Array("台北","基隆","台南","台中","高雄","屏东","南投","云林","新竹","彰化","苗栗","嘉义","花莲","桃园","宜兰","台东","金门","马祖","澎湖");
- break;
- case "天津":
- var cityOptions = new Array("天津","和平","东丽","河东","西青","河西","津南","南开","北辰","河北","武清","红挢","塘沽","汉沽","大港","宁河","静海","宝坻","蓟县");
- break;
- case "新疆":
- var cityOptions = new Array("乌鲁木齐","阿克苏","阿勒泰","阿图什","博乐","昌吉","东山","哈密","和田","喀什","克拉玛依","库车","库尔勒","奎屯","石河子","塔城","吐鲁番","伊宁");
- break;
- case "西藏":
- var cityOptions = new Array("拉萨","阿里","昌都","林芝","那曲","日喀则","山南");
- break;
- case "云南":
- var cityOptions = new Array("昆明","大理","保山","楚雄","大理","东川","个旧","景洪","开远","临沧","丽江","六库","潞西","曲靖","思茅","文山","西双版纳","玉溪","中甸","昭通");
- break;
- case "浙江":
- var cityOptions = new Array("杭州","安吉","慈溪","定海","奉化","海盐","黄岩","湖州","嘉兴","金华","临安","临海","丽水","宁波","瓯海","平湖","千岛湖","衢州","江山","瑞安","绍兴","嵊州","台州","温岭","温州","余姚","舟山");
- break;
- case "海外":
- var cityOptions = new Array("美国","日本","英国","法国","德国","其他");
- break;
- default:
- var cityOptions = new Array("请选择所在城市");
- break;
- }
-
- cityField.options.length = 0;
- for (var i = 0; i < cityOptions.length; i++) {
- cityField.options[i] = new Option(cityOptions[i],cityOptions[i]);
- /*
- if (cityField.options[i].value==city)
- {
- //alert("here put City ok!");
- document.oblogform["city"].selectedIndex = i;
- }*/
- }
-}
-
-/*弹框*/
-// 公共弹框样式
-// 建议左右栏的:Width:460,Height:190
-// 建议宽屏对应值:Width:760,Height:500
-function pop_box_new(value, Width, Height, close) {
-
- if ($("#popupAll").length > 0) {
- $("#popupAll").remove();
- }
- w = ($(window).width() - Width) / 2;
- h = ($(window).height() - Height) / 2;
- var html = "";
- if (close) {
- value = "
" + value;
- }
- $(document.body).append(html);
- $("#popupWrap").html(value);
- $('#popupWrap').css({
- "top": h + "px",
- "left": w + "px",
- "padding": "0",
- "border": "none",
- "position": "fixed",
- "z-index": "99999",
- "background-color": "#fff",
- "border-radius": "10px"
- });
- if (close) {
- $('#closeIcon').css({
- "top": "-26px",
- "left": Width + "px",
- "z-index": "100000"
- });
- }
-
- $("#popupWrap").parent().parent().show();
- $('#popupAll').find("#closeIcon").click(function() {
- $("#popupAll").hide();
- });
- $('#popupAll').find("a[class*='pop_close']").click(function() {
- $("#popupAll").hide();
- });
- // w = ($(window).width() - Width)/2;
- // h = ($(window).height() - Height)/2;
- // $("#ajax-modal").html(value);
- // showModal('ajax-modal', Width + 'px');
- // $('#ajax-modal').siblings().remove();
- // $('#ajax-modal').parent().css({"top": h+"px","left": w+"px","padding":"0","border":"none","position":"fixed"});
- // $('#ajax-modal').parent().removeClass("resourceUploadPopup popbox_polls popbox");
- // $('#ajax-modal').css({"padding":"0","overflow":"hidden"});
- // $('#ajax-modal').parent().attr("id","popupWrap");
-
- //拖拽
- function Drag(id) {
- this.div = document.getElementById(id);
- if (this.div) {
- this.div.style.cursor = "move";
- this.div.style.position = "fixed";
- }
- this.disX = 0;
- this.disY = 0;
- var _this = this;
- this.div.onmousedown = function(evt) {
- _this.getDistance(evt);
- document.onmousemove = function(evt) {
- _this.setPosition(evt);
- }
- ;
- _this.div.onmouseup = function() {
- _this.clearEvent();
- }
- }
- }
- Drag.prototype.getDistance = function(evt) {
- var oEvent = evt || event;
- this.disX = oEvent.clientX - this.div.offsetLeft;
- this.disY = oEvent.clientY - this.div.offsetTop;
- }
- ;
- Drag.prototype.setPosition = function(evt) {
- var oEvent = evt || event;
- var l = oEvent.clientX - this.disX;
- var t = oEvent.clientY - this.disY;
- if (l <= 0) {
- l = 0;
- } else if (l >= document.documentElement.clientWidth - this.div.offsetWidth) {
- l = document.documentElement.clientWidth - this.div.offsetWidth;
- }
- if (t <= 0) {
- t = 0;
- } else if (t >= document.documentElement.clientHeight - this.div.offsetHeight) {
- t = document.documentElement.clientHeight - this.div.offsetHeight;
- }
- this.div.style.left = l + "px";
- this.div.style.top = t + "px";
- }
- ;
- Drag.prototype.clearEvent = function() {
- this.div.onmouseup = null;
- document.onmousemove = null;
- }
- ;
-
- new Drag("popupWrap");
-
- $("#popupAll input, #popupAll textarea, #popupAll select, #popupAll ul, #popupAll a,#shixun_search_form_div").mousedown(function(event) {
- event.stopPropagation();
- new Drag("popupWrap");
- });
-
-}
-
-function hideModal(el) {
- if ($("#popupAll").length > 0) {
- $("#popupAll").remove();
- } else {
- var modal;
- if (el) {
- modal = $(el).parents('.ui-dialog-content');
- } else {
- modal = $('#ajax-modal');
- }
- modal.dialog("close");
- }
-}
-
-//提示框:只有一个确定按钮,点击跳转
-//
-function notice_box_redirect(url, str) {
- var htmlvalue = '';
- pop_box_new(htmlvalue, 480, 160);
-}
-//按钮内容自定义(自定义按钮需要remote=true,且有取消按钮)
-function notice_operation_box(url, str, btnstr) {
- var htmlvalue = '';
- pop_box_new(htmlvalue, 480, 160);
-}
-//点击删除时的确认弹框: 不走destroy方法
-function delete_confirm_box(url, str) {
- var htmlvalue = '';
- pop_box_new(htmlvalue, 480, 160);
-}
-//点击删除时的确认弹框: 走destroy方法,remote为true
-function delete_confirm_box_2(url, str) {
- var htmlvalue = '';
- pop_box_new(htmlvalue, 480, 160);
-}
-
-// 点击确定的时候ajax请求,两个按钮 点击确认跳转, 提示信息可以多行
-function op_confirm_box_remote(url, str) {
- var htmlvalue = '';
- pop_box_new(htmlvalue, 578, 205);
-}
-
-//点击删除时的确认弹框: post,remote为true
-function post_confirm_box(url, str) {
- var htmlvalue = '';
- pop_box_new(htmlvalue, 480, 160);
-}
-
-//提示框:只有一个确定按钮,点击关闭弹框
-//
-function notice_box(str) {
- var htmlvalue = '';
- pop_box_new(htmlvalue, 480, 160);
-}
-
-//点击删除时的确认弹框: 走destroy方法
-function delete_confirm_box_3(url, str) {
- var htmlvalue = '';
- pop_box_new(htmlvalue, 480, 160);
-}
-
-//取消和确定,确定会调用自定义方法
-function op_confirm_tip(str, func) {
- var htmlvalue = '';
- pop_box_new(htmlvalue, 500, 205);
-}
-
-//取消和确定,确定会调用自定义方法(带参数)
-function op_confirm_tip_1(str, func) {
- var htmlvalue = '';
- pop_box_new(htmlvalue, 500, 205);
-}
-
-function op_confirm_box_loading(url, str) {
- var htmlvalue = '';
- pop_box_new(htmlvalue, 578, 205);
-}
-
-// 两个按钮 点击确认跳转, 提示信息有两行
-function s_op_confirm_box(url, str) {
- var htmlvalue = '';
- pop_box_new(htmlvalue, 480, 205);
-}
-
-function suofang() {
- var html = '
可能会影响某些功能的正常使用
' + '- 1.请尝试调整浏览器缩放比例为100%(快捷键ctrl+0)
' + '- 2.请尝试调整系统显示比例为100%(控制面板/显示 设置)
' + '
';
- sure_confirm_box("页面缩放比例不正确", 600, 310, html);
-}
-
-//一个“知道了”按钮,title和宽度都作为参数
-function sure_confirm_box(title, width, height, str) {
- var htmlvalue = '';
- pop_box_new(htmlvalue, width, height);
-}
-
-function throttle(method, context, e) {
- clearTimeout(method.tId);
- method.tId = setTimeout(function() {
- method.call(context, e);
- }, 500);
-}
-
-function apply_publish_shixun(url) {
- if ($("#apply_publish_shixun").attr("data-option") == '1') {
- $("#apply_publish_shixun").attr("data-option", 0);
- $("#apply_publish_shixun").addClass("disabled-grey-bg");
- $.ajax({
- url: url,
- type: 'get'
- });
- }
-}
-
-var autoTextarea = function(elem, extra, maxHeight) {
- extra = extra || 0;
- var isFirefox = !!document.getBoxObjectFor || 'mozInnerScreenX'in window
- , isOpera = !!window.opera && !!window.opera.toString().indexOf('Opera')
- , addEvent = function(type, callback) {
- elem.addEventListener ? elem.addEventListener(type, callback, false) : elem.attachEvent('on' + type, callback);
- }
- , getStyle = elem.currentStyle ? function(name) {
- var val = elem.currentStyle[name];
-
- if (name === 'height' && val.search(/px/i) !== 1) {
- var rect = elem.getBoundingClientRect();
- return rect.bottom - rect.top - parseFloat(getStyle('paddingTop')) - parseFloat(getStyle('paddingBottom')) + 'px';
- }
- ;
- return val;
- }
- : function(name) {
- return getComputedStyle(elem, null)[name];
- }
- , minHeight = parseFloat(getStyle('height'));
-
- elem.style.resize = 'none';
-
- var change = function() {
- var scrollTop, height, padding = 0, style = elem.style;
-
- if (elem._length === elem.value.length)
- return;
- elem._length = elem.value.length;
-
- if (!isFirefox && !isOpera) {
- padding = parseInt(getStyle('paddingTop')) + parseInt(getStyle('paddingBottom'));
- }
- ;scrollTop = document.body.scrollTop || document.documentElement.scrollTop;
-
- elem.style.height = minHeight + 'px';
- if (elem.scrollHeight > minHeight) {
- if (maxHeight && elem.scrollHeight > maxHeight) {
- height = maxHeight - padding;
- style.overflowY = 'auto';
- } else {
- height = elem.scrollHeight - padding + 10;
- style.overflowY = 'hidden';
- }
- ;style.height = height + extra + 'px';
- scrollTop += parseInt(style.height) - elem.currHeight;
- //document.body.scrollTop = scrollTop;
- //document.documentElement.scrollTop = scrollTop;
- elem.currHeight = parseInt(style.height);
- }
- ;
- };
-
- addEvent('propertychange', change);
- addEvent('input', change);
- addEvent('focus', change);
- change();
-};
-
-// 点击按钮复制功能
-function jsCopy() {
- var e = document.getElementById("copy_rep_content");
- e.select();
- document.execCommand("Copy");
-}
-
-// 使用resize事件监听窗口的zoom,如果zoom变化了,弹框提示;初始化时也检查zoom是否是100%。
-function _initZoomCheck() {
- if (!IsPC()) {
- // 手机端不需要提示
- return;
- }
- var isNormalZoom = Math.round(window.devicePixelRatio * 100) === 100
- if (!isNormalZoom) {
- suofang();
- }
-
- $(window).resize(function() {
- var isNormalZoom = Math.round(window.devicePixelRatio * 100) === 100
- if (!isNormalZoom) {
- suofang();
- } else {
- $('.task-btn.task-btn-orange:visible').click()
- }
- })
-
-}
-
-var win_resize = function() {
- var _w = $(window).width() - 1200;
- if (_w < 0) {
- $('.newHeader>.educontent').width('auto')
- } else {
- $('.newHeader>.educontent').width('1200px')
- }
-};
-
-function initWindowResize() {
- if (location.pathname === '/login') {
- // 登录页不需要
- return;
- }
-
- $(function() {
- setTimeout(function() {
- win_resize();
- }, 1000)
- })
-
- $(window).resize(function() {
- win_resize()
- })
-}
-initWindowResize();
-
-// 登录刷新 https://stackoverflow.com/questions/28230845/communication-between-tabs-or-windows
-if (window['BroadcastChannel']) {
- var bc = new BroadcastChannel('ec_reload');
- bc.onmessage = function(ev) {
- if (window['ec_reload_msg_send_window']) {
- window['ec_reload_msg_send_window'] = false;
- } else {
- location.reload();
- }
- }
-}
-function _sendReloadMsg() {
- var bc = new BroadcastChannel('ec_reload');
- window['ec_reload_msg_send_window'] = true;
- // 消息发出的窗口,不需要处理该消息
- bc.postMessage('ec_reload');
- /* send */
-}
-// IE11 没有 startsWith
-if (!String.prototype.startsWith) {
- String.prototype.startsWith = function(searchString, position) {
- position = position || 0;
- return this.substr(position, searchString.length) === searchString;
- }
- ;
- String.prototype.endsWith = function(search, this_len) {
- if (this_len === undefined || this_len > this.length) {
- this_len = this.length;
- }
- return this.substring(this_len - search.length, this_len) === search;
- }
- ;
-}
-
-function clickNewsubscript() {
- $(".newsubscript").hide();
- $(".newedbox").addClass("newminheight");
- $(".newedbox").removeClass("newedboxheight");
-}
-
-/** tpm实训开启按钮,不允许多次点击 START */
-//点击模拟实战或者开启实战等,按钮变灰内容变成“开启中”
-var operationItem = null;
-var operationButtonOldValue = null;
-function opClickString(item) {
- var value = $(item).html();
- $(item).css({
- 'background': 'gray',
- 'border': '1px solid grey',
- 'pointer-events': 'none'
- });
- $(item).html('开启中');
-
- operationButtonOldValue = value
- operationItem = item
- // setTimeout(function(){ $(item).css('background', '#4CACFF');$(item).html(value); }, 4000)
-}
-//
-// var isOperationSending = false;
-$(document).bind('ajaxStop', function(event, xhr, settings) {
- if (settings && settings.url && (settings.url.match(/operation\?/))) {
- if (operationItem) {
- $(operationItem).css('background', '#4CACFF').css('pointer-events', 'inherit');
- $(operationItem).html(operationButtonOldValue);
- }
- }
-});
-$(document).bind('ajaxError', function(event, xhr, settings) {
- if (settings && settings.url && (settings.url.match(/operation\?/))) {
- if (operationItem) {
- $(operationItem).css('background', '#4CACFF').css('pointer-events', 'inherit');
- $(operationItem).html(operationButtonOldValue);
- }
- }
-});
-/** tpm实训开启按钮,不允许多次点击 END */
+document.write("
");
+
+/*!
+ * JavaScript Cookie v2.2.0
+ * https://github.com/js-cookie/js-cookie
+ *
+ * Copyright 2006, 2015 Klaus Hartl & Fagner Brack
+ * Released under the MIT license
+ */
+!function(e) {
+ var n;
+ if ("function" == typeof define && define.amd && (define(e),
+ n = !0),
+ "object" == typeof exports && (module.exports = e(),
+ n = !0),
+ !n) {
+ var t = window.Cookies
+ , o = window.Cookies = e();
+ o.noConflict = function() {
+ return window.Cookies = t,
+ o
+ }
+ }
+}(function() {
+ function e() {
+ for (var e = 0, n = {}; e < arguments.length; e++) {
+ var t = arguments[e];
+ for (var o in t)
+ n[o] = t[o]
+ }
+ return n
+ }
+ function n(e) {
+ return e.replace(/(%[0-9A-Z]{2})+/g, decodeURIComponent)
+ }
+ return function t(o) {
+ function r() {}
+ function i(n, t, i) {
+ if ("undefined" != typeof document) {
+ "number" == typeof (i = e({
+ path: "/"
+ }, r.defaults, i)).expires && (i.expires = new Date(1 * new Date + 864e5 * i.expires)),
+ i.expires = i.expires ? i.expires.toUTCString() : "";
+ try {
+ var c = JSON.stringify(t);
+ /^[\{\[]/.test(c) && (t = c)
+ } catch (e) {}
+ t = o.write ? o.write(t, n) : encodeURIComponent(String(t)).replace(/%(23|24|26|2B|3A|3C|3E|3D|2F|3F|40|5B|5D|5E|60|7B|7D|7C)/g, decodeURIComponent),
+ n = encodeURIComponent(String(n)).replace(/%(23|24|26|2B|5E|60|7C)/g, decodeURIComponent).replace(/[\(\)]/g, escape);
+ var f = "";
+ for (var u in i)
+ i[u] && (f += "; " + u,
+ !0 !== i[u] && (f += "=" + i[u].split(";")[0]));
+ return document.cookie = n + "=" + t + f
+ }
+ }
+ function c(e, t) {
+ if ("undefined" != typeof document) {
+ for (var r = {}, i = document.cookie ? document.cookie.split("; ") : [], c = 0; c < i.length; c++) {
+ var f = i[c].split("=")
+ , u = f.slice(1).join("=");
+ t || '"' !== u.charAt(0) || (u = u.slice(1, -1));
+ try {
+ var a = n(f[0]);
+ if (u = (o.read || o)(u, a) || n(u),
+ t)
+ try {
+ u = JSON.parse(u)
+ } catch (e) {}
+ if (r[a] = u,
+ e === a)
+ break
+ } catch (e) {}
+ }
+ return e ? r[e] : r
+ }
+ }
+ return r.set = i,
+ r.get = function(e) {
+ return c(e, !1)
+ }
+ ,
+ r.getJSON = function(e) {
+ return c(e, !0)
+ }
+ ,
+ r.remove = function(n, t) {
+ i(n, "", e(t, {
+ expires: -1
+ }))
+ }
+ ,
+ r.defaults = {},
+ r.withConverter = t,
+ r
+ }(function() {})
+});
+
+$(function() {
+ var result = location.search.match(/\?search=(\w*)&?/i)
+ if (result && result[1]) {
+ var searchText = result[1]
+ $('#search-input').val(searchText)
+ }
+ // 未报名用户登录时弹框
+ // console.log(Cookies.get('enroll_status'));
+ // if(Cookies.get('enroll_status') == 0){
+ // Cookies.remove('enroll_status');
+ // var html='
'+
+ // '
'+
+ // '
![](/images/educoder/competition/boxEnroll.png)
'+
+ // '
'+
+ // '
立即报名'+
+ // '
';
+ // $(".newContainer").append(html);
+ // }
+});
+
+function CloseBox() {
+ $(".CompetitionEnrollBox").remove();
+}
+
+//根据页面大小决定侧边栏的位置
+$(window).resize(function() {
+ rightSlider();
+});
+function rightSlider() {
+ var poi = parseInt((parseInt($(window).width()) - 1200) / 2) - 34;
+ // console.log(parseInt($(window).width())+" "+poi);
+ if (poi > 0) {
+ $(".-task-sidebar").css("right", poi);
+ } else {
+ $(".-task-sidebar").css("right", "0px");
+ }
+ $(".-task-sidebar").show();
+}
+function open_course(id, allowVisit) {
+ if (allowVisit) {
+ window.open("/courses/" + id);
+ }
+}
+function open_project(id, allowVisit) {
+ if (allowVisit) {
+ window.open("/projects/" + id);
+ }
+}
+
+function conver_size(limit) {
+ var size = "";
+ if (limit < 1024) {
+ //如果小于1KB转化成B
+ size = limit.toFixed(2) + "B";
+ } else if (limit < 1024 * 1024) {
+ //如果小于1MB转化成KB
+ size = (limit / 1024).toFixed(2) + "KB";
+ } else if (limit < 1024 * 1024 * 1024) {
+ //如果小于1GB转化成MB
+ size = (limit / (1024 * 1024)).toFixed(2) + "MB";
+ } else {
+ //其他转化成GB
+ size = (limit / (1024 * 1024 * 1024)).toFixed(2) + "GB";
+ }
+
+ var sizestr = size + "";
+ var len = sizestr.indexOf("\.");
+ var dec = sizestr.substr(len + 1, 2);
+ if (dec == "00") {
+ //当小数点后为00时 去掉小数部分
+ return sizestr.substring(0, len) + sizestr.substr(len + 3, 2);
+ }
+ return sizestr;
+}
+
+function _initSider() {
+ var $descSide = $("
").appendTo("body");
+ $(".-task-sidebar>div").hover(function() {
+ //移入显示二维码
+ if ($(this).hasClass("scan")) {
+ $(".scan_ewm").show().css({
+ right: "75px",
+ opacity: 0
+ }).stop().animate({
+ right: "45px",
+ opacity: 1
+ })
+ return;
+ }
+ var $tool = $(this).attr("tooltips");
+ $descSide.html($tool + "
![](/images/edu_user/jt.png)
");
+ $descSide.data('_dom', this)
+ $descSide.show().css({
+ left: $(this).offset().left - $descSide.width() - 30,
+ opacity: 0,
+ top: $(this).offset().top
+ }).stop().animate({
+ left: $(this).offset().left - $descSide.width() - 5,
+ opacity: 1
+ }, 400);
+ }, function() {
+ if ($(this).hasClass("scan")) {
+ $(".scan_ewm").stop().animate({
+ right: "75px",
+ opacity: 0
+ }, 200).hide();
+ }
+ $descSide.stop().animate({
+ left: $(this).offset().left - $descSide.width() - 30,
+ opacity: 0
+ }, 200).hide();
+ });
+ rightSlider();
+
+ $(window).scroll(function() {
+ if ($descSide.height()) {
+ var hoverIcon = $descSide.data('_dom')
+ $descSide.css('top', $(hoverIcon).offset().top)
+ }
+ })
+}
+$(function() {
+ loadHeader();
+ _initSider();
+
+ $(window).scroll(function() {
+ if ($(".gotop").length > 0) {
+ if ($(document).scrollTop() > 0) {
+ $(".-task-sidebar .gotop").show();
+ $(".gotop").click(function() {
+ $("html,body").scrollTop(0);
+ });
+ }
+ if ($(document).scrollTop() == 0) {
+ $(".-task-sidebar .gotop").hide();
+ }
+ }
+ });
+
+ // 翻页的GO
+ $(".page_GO").live("keydown", function(event) {
+ var code;
+ if (!event) {
+ event = window.event;
+ //针对ie浏览器
+ code = event.keyCode;
+ } else {
+ code = event.keyCode;
+ }
+ if (code == 13) {
+ var prev = $(this).prev().find("a").html().trim();
+ var page = $(this).val().trim();
+ if (parseInt(prev) >= parseInt(page)) {
+ if (typeof ($(this).prev().children("a").attr("href")) == "undefined") {
+ var href = $(this).parent().find("li:first-child").children("a").attr("href");
+ } else {
+ var href = $(this).prev().children("a").attr("href");
+ }
+ var new_href = href.replace(/page=(\d*)/, 'page=' + page);
+ console.log(new_href);
+ $.get(new_href);
+ return false;
+ }
+ }
+ });
+
+ // 试用申请弹框
+ $("#apply_trail_submit_btn").live('click', function() {
+ if ($("#apply_reason").val().trim() == "") {
+ $("#hint_message").show();
+ } else {
+ $("#hint_message").hide();
+ $("#apply_trail_form").submit();
+ hideModal();
+ }
+ });
+
+});
+
+// editor 存在了jquery对象上,应用不需要自己写md_rec_data方法了
+function md_rec_data(k, mdu, id) {
+ if (window.sessionStorage.getItem(k + mdu) !== null) {
+ editor = $("#e_tips_" + id).data('editor');
+ editor.setValue(window.sessionStorage.getItem(k + mdu));
+
+ md_clear_data(k, mdu, id);
+ }
+}
+// markdown的自动保存
+function md_elocalStorage(editor, mdu, id) {
+ if (window.sessionStorage) {
+ var oc = window.sessionStorage.getItem('content' + mdu);
+ if (oc !== null) {
+ $("#e_tips_" + id).data('editor', editor);
+ var h = '您上次有已保存的数据,是否
恢复 ? /
不恢复';
+ $("#e_tips_" + id).html(h);
+ }
+ setInterval(function() {
+ d = new Date();
+ var h = d.getHours();
+ var m = d.getMinutes();
+ var s = d.getSeconds();
+ h = h < 10 ? '0' + h : h;
+ m = m < 10 ? '0' + m : m;
+ s = s < 10 ? '0' + s : s;
+ if (editor.getValue().trim() != "") {
+ md_add_data("content", mdu, editor.getValue());
+ var id1 = "#e_tip_" + id;
+ var id2 = "#e_tips_" + id;
+ $(id1).html(" 数据已于 " + h + ':' + m + ':' + s + " 保存 ");
+ $(id2).html("");
+ }
+ }, 10000);
+
+ } else {
+ $("#e_tip_" + id).after('您的浏览器不支持localStorage.无法开启自动保存草稿服务,请升级浏览器!');
+ }
+}
+// 保存数据
+function md_add_data(k, mdu, d) {
+ window.sessionStorage.setItem(k + mdu, d);
+}
+// 恢复数据
+//function md_rec_data(k,mdu,id, editor){
+// if(window.sessionStorage.getItem(k+mdu) !== null){
+// editor.setValue(window.sessionStorage.getItem(k+mdu));
+// md_clear_data(k,mdu,id);
+// }
+//}
+// 清空保存的数据
+function md_clear_data(k, mdu, id) {
+ window.sessionStorage.removeItem(k + mdu);
+ var id1 = "#e_tip_" + id;
+ var id2 = "#e_tips_" + id;
+ if (k == 'content') {
+ $(id2).html("");
+ } else {
+ $(id1).html("");
+ }
+}
+
+// editorMD to create
+/**
+ *
+ * @param id 渲染DOM的id
+ * @param width 宽度
+ * @param high 高度
+ * @param placeholder
+ * @param imageUrl 上传图片的url
+ * @returns {*} 返回一个editorMD实例
+ */
+function create_editorMD(id, width, high, placeholder, imageUrl, readonly) {
+ var readonly = readonly == undefined ? false : readonly;
+ var editorName = editormd(id, {
+ width: width,
+ height: high,
+ syncScrolling: "single",
+ //你的lib目录的路径,我这边用JSP做测试的
+ path: "/editormd/lib/",
+ tex: true,
+ tocm: true,
+ emoji: true,
+ taskList: true,
+ codeFold: true,
+ searchReplace: true,
+ htmlDecode: "style,script,iframe",
+ sequenceDiagram: true,
+ autoFocus: false,
+ readonly: readonly,
+ toolbarIcons: function() {
+ // Or return editormd.toolbarModes[name]; // full, simple, mini
+ // Using "||" set icons align right.
+ return ["bold", "italic", "|", "list-ul", "list-ol", "|", "code", "code-block", "|", "testIcon", "testIcon1", '|', "image", "table", '|', "watch", "clear"]
+ },
+ toolbarCustomIcons: {
+ testIcon: "
",
+ testIcon1: "
"
+ },
+ //这个配置在simple.html中并没有,但是为了能够提交表单,使用这个配置可以让构造出来的HTML代码直接在第二个隐藏的textarea域中,方便post提交表单。
+ saveHTMLToTextarea: true,
+ // 用于增加自定义工具栏的功能,可以直接插入HTML标签,不使用默认的元素创建图标
+ dialogMaskOpacity: 0.6,
+ placeholder: placeholder,
+ imageUpload: true,
+ imageFormats: ["jpg", "jpeg", "gif", "png", "bmp", "webp", "JPG", "JPEG", "GIF", "PNG", "BMP", "WEBP"],
+ imageUploadURL: imageUrl,
+ //url
+ onload: function(cMirror) {
+ $("#" + id + " [type=\"latex\"]").bind("click", function() {
+ editorName.cm.replaceSelection("```latex");
+ editorName.cm.replaceSelection("\n");
+ editorName.cm.replaceSelection("\n");
+ editorName.cm.replaceSelection("```");
+ var __Cursor = editorName.cm.getDoc().getCursor();
+ editorName.cm.setCursor(__Cursor.line - 1, 0);
+ });
+
+ $("#" + id + " [type=\"inline\"]").bind("click", function() {
+ editorName.cm.replaceSelection("$$$$");
+ var __Cursor = editorName.cm.getDoc().getCursor();
+ editorName.cm.setCursor(__Cursor.line, __Cursor.ch - 2);
+ editorName.cm.focus();
+ });
+ $("[type=\"inline\"]").attr("title", "行内公式");
+ $("[type=\"latex\"]").attr("title", "多行公式");
+ setTimeout(function() {
+ editorName.resize();
+ editorName.cm.refresh();
+ window.new_md = editorName;
+ }, 300);
+ }
+ });
+ return editorName;
+}
+
+// editormd to html
+/**
+ *
+ * @param id 渲染的id
+ * @param callback onload回調 暫時未用
+ */
+function editormd_to_html(id, callback) {
+ editormd.loadKaTeX(function() {
+ editormd.markdownToHTML(id, {
+ htmlDecode: "style,script,iframe",
+ // you can filter tags decode
+ onload: function() {
+ callback && callback()
+ },
+ taskList: true,
+ tex: true,
+ // 默认不解析
+ flowChart: true,
+ // 默认不解析
+ sequenceDiagram: true// 默认不解析
+ });
+ });
+}
+
+function loadHeader() {
+ //头部导航条的----------显示搜索框
+ $("#search-open").on("click", function(e) {
+ $(this).hide();
+ // $("#header-nav").animate({opacity:"0"},1000);
+ $(".posi-search").show()
+ // .animate({opacity:"1"},1000);
+ $("#header-nav").css("z-index", "2");
+ $(".posi-search").css("z-index", "3");
+ // $(".search-input").val(""); // 不清空
+ $(".search-input").focus();
+ $(".search-all .search-content").hide();
+ e.stopPropagation();
+ //阻止冒泡
+ });
+ $(".search-input").on("click", function(e) {
+ e.stopPropagation();
+ //阻止冒泡
+ });
+ //搜索框输入内容
+ $(".search-input").on("input", function(e) {
+ if ($(".search-input").val() == "") {
+ $(".search-all .search-content").hide();
+ } else {
+ $(".search-all .search-content").show();
+ }
+ e.stopPropagation();
+ //阻止冒泡
+ });
+ //搜索
+ $("#header_keyword_search").on("click", header_search);
+ $("input[name='search_keyword']").on("keydown", function(event) {
+ var code;
+ if (!event) {
+ event = window.event;
+ //针对ie浏览器
+ code = event.keyCode;
+ } else {
+ code = event.keyCode;
+ }
+ if (code == 13) {
+ header_search();
+ return false;
+ }
+ });
+ $(".search-clear").click(function(e) {
+ e.stopPropagation();
+ });
+ //切换搜索条件
+ $("#searchkey li").click(function(e) {
+ var key = $($(this).children("a")[0]).html();
+ switch (key) {
+ case '实训':
+ $("#search_type").val('1');
+ break;
+ case '课堂':
+ $("#search_type").val('2');
+ break;
+ case '用户':
+ $("#search_type").val('3');
+ break;
+ }
+ $("#searchkey").siblings(".searchkey").html(key);
+ // $("#searchkey").hide();
+ e.stopPropagation();
+ //阻止冒泡
+ });
+ //切换选择导航条
+ $("#header-nav li").click(function() {
+ $("#header-nav li").removeClass("active");
+ $(this).addClass("active");
+ });
+ //点击页面其它(与搜索框无关的地方)都会将搜索框隐藏,所以与搜索框有关的地方需要阻止冒泡
+ $("body").on("click", function() {
+ closeSearch();
+ });
+
+ $(".search_history").on("click", function() {
+ $("input[name='search_keyword']").val($(this).html());
+ header_search();
+ });
+}
+
+function header_search() {
+ var keyword = $("input[name='search_keyword']").val();
+ // 搜索关键字
+ var index = $("#search_type").val();
+ // 搜索课程/项目
+ keyword = encodeURIComponent(keyword);
+ // $.get('/users/search_shixuns_or_course',
+ // { search: keyword,
+ // index: index});
+ window.location.href = "/users/search_shixuns_or_courses" + "?search=" + keyword + "&index=" + index;
+ //e.stopPropagation();//阻止冒泡
+}
+
+//头部导航条的隐藏
+function closeSearch() {
+ $('#posi-search').hide();
+ $("#search-open").show();
+ // $(".posi-search").animate({opacity:"0"},800);
+ $("#header-nav").animate({
+ opacity: "1"
+ }, 1000);
+ $(".posi-search").css("z-index", "2");
+ $("#header-nav").css("z-index", "3");
+}
+(function($) {
+ $.fn.drag = function(options) {
+ var x, drag = this, isMove = false, defaults = {};
+ var options = $.extend(defaults, options);
+ //添加背景,文字,滑块
+ var html = '
' + '
请拖住滑块,拖动到最右边
' + '
';
+ this.append(html);
+
+ var handler = drag.find('.handler');
+ var drag_bg = drag.find('.drag_bg');
+ var text = drag.find('.drag_text');
+ var maxWidth = text.width() - handler.width();
+ //能滑动的最大间距
+ //鼠标按下时候的x轴的位置
+ handler.mousedown(function(e) {
+ isMove = true;
+ x = e.pageX - parseInt(handler.css('left'), 10);
+ });
+
+ //鼠标指针在上下文移动时,移动距离大于0小于最大间距,滑块x轴位置等于鼠标移动距离
+ $(document).mousemove(function(e) {
+ var _x = e.pageX - x;
+ var handler_offset = handler.offset();
+ var lastX = e.clientX - x;
+ lastX = Math.max(0, Math.min(maxWidth, lastX));
+ if (isMove) {
+ if (_x > 0 && _x <= maxWidth) {
+ handler.css({
+ 'left': lastX
+ });
+ drag_bg.css({
+ 'width': lastX
+ });
+ } else if (lastX > maxWidth - 5 && lastX < maxWidth + 5) {
+ //鼠标指针移动距离达到最大时清空事件
+ dragOk();
+ }
+ }
+ });
+ handler.mouseup(function(e) {
+ isMove = false;
+ var _x = e.pageX - x;
+ if (_x < maxWidth) {
+ //鼠标松开时,如果没有达到最大距离位置,滑块就返回初始位置
+ handler.css({
+ 'left': 0
+ });
+ drag_bg.css({
+ 'width': 0
+ });
+ }
+ });
+
+ //清空事件
+ function dragOk() {
+ var kuaiwidth = drag.width() - handler.width();
+ handler.removeClass('handler_bg').addClass('handler_ok_bg');
+ handler.css({
+ 'left': kuaiwidth + 'px'
+ })
+ text.css({
+ 'width': kuaiwidth + 'px'
+ });
+ text.text('验证通过');
+ drag.css({
+ 'color': '#fff'
+ });
+ drag_bg.css({
+ 'width': kuaiwidth + 'px'
+ })
+ handler.unbind('mousedown');
+ $(document).unbind('mousemove');
+ $(document).unbind('mouseup');
+ handler.parent().next().find("p").html("").hide();
+ }
+ }
+ ;
+}
+)(jQuery);
+
+//判断是手机端还是电脑端
+function IsPC() {
+ var userAgentInfo = navigator.userAgent;
+ var Agents = ["Android", "iPhone", "SymbianOS", "Windows Phone", "iPad", "iPod"];
+ var flag = true;
+ for (var v = 0; v < Agents.length; v++) {
+ if (userAgentInfo.indexOf(Agents[v]) > 0) {
+ flag = false;
+ break;
+ }
+ }
+ return flag;
+}
+
+//Dom:绑定事件的节点对象,ChangeDOM:操作的相关节点,
+function LeaveTitle(Dom, ChangeDom) {
+ ChangeDom.html("").hide();
+ ChangeDom.parent().css({
+ opacity: 0,
+ left: 0,
+ top: 0
+ }).hide();
+}
+
+$(function() {
+ //平台tip的样式优化js
+ var $desc = $("
" + "
" + "
" + "
" + "
" + "
").appendTo("body");
+ //Dom:绑定事件的节点对象,ChangeDOM:操作的相关节点,
+ function LeaveTitle(Dom, ChangeDom) {
+ Dom.live("mouseleave", function() {
+ ChangeDom.html("").hide();
+ $desc.css({
+ opacity: 0,
+ left: 0,
+ top: 0
+ }).hide();
+ })
+ }
+ LeaveTitle($("[data-tip-top]"), $(".data-tip-top"));
+ LeaveTitle($("[data-tip-down]"), $(".data-tip-down"));
+ LeaveTitle($("[data-tip-right]"), $(".data-tip-left"));
+ LeaveTitle($("[data-tip-left]"), $(".data-tip-right"));
+ $("[data-tip-top]").live("mouseenter", function() {
+ var $tool = $(this).attr("data-tip-top");
+ if ($tool != "") {
+ $(".data-tip-top").show().html($tool);
+ $desc.show().css({
+ left: $(this).offset().left - ($desc.width() - $(this).outerWidth()) / 2,
+ opacity: 1,
+ top: $(this).offset().top - 30
+ });
+ }
+ });
+ $("[data-tip-down]").live("mouseenter", function() {
+ var $tool = $(this).attr("data-tip-down");
+ if ($tool != "") {
+ $(".data-tip-down").show().html($tool);
+ $desc.show().css({
+ left: $(this).offset().left - ($desc.width() - $(this).outerWidth()) / 2,
+ opacity: 1,
+ top: $(this).offset().top + $(this).height() + 6
+ });
+ }
+ });
+ $("[data-tip-right]").live("mouseenter", function() {
+ var $tool = $(this).attr("data-tip-right");
+ if ($tool != "") {
+ console.log($(this).offset().left + " " + $(this).width());
+ $(".data-tip-left").show().html($tool);
+ $desc.show().css({
+ left: $(this).offset().left + $(this).outerWidth() + 6,
+ opacity: 1,
+ top: $(this).offset().top - ($desc.height() - $(this).height()) / 2
+ });
+ }
+ });
+ $("[data-tip-left]").live("mouseenter", function() {
+ var $tool = $(this).attr("data-tip-left");
+ if ($tool != "") {
+ $(".data-tip-right").show().html($tool);
+ $desc.show().css({
+ left: $(this).offset().left - $desc.width() - 6,
+ opacity: 1,
+ top: $(this).offset().top - ($desc.height() - $(this).height()) / 2
+ });
+ }
+ });
+ unitDownOption();
+});
+
+function unitDownOption() {
+ //下拉框
+ $("[select-for]").append("
");
+ $("[select-for]").hover(function() {
+ $(this).find(".down-select").show();
+ }, function() {
+ $(this).find(".down-select").hide();
+ })
+ $("[select-for] .down-select p").bind("click", function() {
+ //alert($(this).attr("data-shixun-value"));
+ if ($(this).attr("id") == "diy_script") {
+ return;
+ // 实训新建-选择自定义脚本diy
+ }
+ $(this).parents(".down-select").siblings("input[type=hidden]").attr("value", $(this).attr("data-shixun-value"));
+
+ $(this).parents(".down-select").siblings("input[type=text]").val($(this).html().trim());
+ $(this).parents(".down-select").hide();
+ })
+}
+
+//初始化省份
+function showprovince(id) {
+ var arrary = ["北京", "上海", "广东", "江苏", "浙江", "重庆", "安徽", "福建", "甘肃", "广西", "贵州", "海南", "河北", "黑龙江", "河南", "湖北", "湖南", "江西", "吉林", "辽宁", "内蒙古", "宁夏", "青海", "山东", "山西", "陕西", "四川", "天津", "新疆", "西藏", "云南", "香港特别行政区", "澳门特别行政区", "台湾", "海外"];
+ var html = "
"
+ for (var i = 0; i < arrary.length; i++) {
+ var item = arrary[i];
+ html += "
";
+ }
+ $("#" + id).html(html);
+}
+
+//省市下拉框
+function showcity(province, cityField) {
+ switch (province) {
+ case "北京":
+ var cityOptions = new Array("东城","西城","朝阳","丰台","石景山","海淀","门头沟","房山","通州","顺义","昌平","大兴","平谷","怀柔","密云","延庆");
+ break;
+ case "上海":
+ var cityOptions = new Array("崇明","黄浦","卢湾","徐汇","长宁","静安","普陀","闸北","虹口","杨浦","闵行","宝山","嘉定","浦东","金山","松江","青浦","南汇","奉贤");
+ break;
+ case "广东":
+ var cityOptions = new Array("广州","深圳","珠海","东莞","中山","佛山","惠州","河源","潮州","江门","揭阳","茂名","梅州","清远","汕头","汕尾","韶关","顺德","阳江","云浮","湛江","肇庆");
+ break;
+ case "江苏":
+ var cityOptions = new Array("南京","常熟","常州","海门","淮安","江都","江阴","昆山","连云港","南通","启东","沭阳","宿迁","苏州","太仓","泰州","同里","无锡","徐州","盐城","扬州","宜兴","仪征","张家港","镇江","周庄");
+ break;
+ case "重庆":
+ var cityOptions = new Array("万州","涪陵","渝中","大渡口","江北","沙坪坝","九龙坡","南岸","北碚","万盛","双挢","渝北","巴南","黔江","长寿","綦江","潼南","铜梁","大足","荣昌","壁山","梁平","城口","丰都","垫江","武隆","忠县","开县","云阳","奉节","巫山","巫溪","石柱","秀山","酉阳","彭水","江津","合川","永川","南川");
+ break;
+ case "安徽":
+ var cityOptions = new Array("合肥","安庆","蚌埠","亳州","巢湖","滁州","阜阳","贵池","淮北","淮化","淮南","黄山","九华山","六安","马鞍山","宿州","铜陵","屯溪","芜湖","宣城");
+ break;
+ case "福建":
+ var cityOptions = new Array("福州","厦门","泉州","漳州","龙岩","南平","宁德","莆田","三明");
+ break;
+ case "甘肃":
+ var cityOptions = new Array("兰州","白银","定西","敦煌","甘南","金昌","酒泉","临夏","平凉","天水","武都","武威","西峰","张掖");
+ break;
+ case "广西":
+ var cityOptions = new Array("南宁","百色","北海","桂林","防城港","贵港","河池","贺州","柳州","钦州","梧州","玉林");
+ break;
+ case "贵州":
+ var cityOptions = new Array("贵阳","安顺","毕节","都匀","凯里","六盘水","铜仁","兴义","玉屏","遵义");
+ break;
+ case "海南":
+ var cityOptions = new Array("海口","儋县","陵水","琼海","三亚","通什","万宁");
+ break;
+ case "河北":
+ var cityOptions = new Array("石家庄","保定","北戴河","沧州","承德","丰润","邯郸","衡水","廊坊","南戴河","秦皇岛","唐山","新城","邢台","张家口");
+ break;
+ case "黑龙江":
+ var cityOptions = new Array("哈尔滨","北安","大庆","大兴安岭","鹤岗","黑河","佳木斯","鸡西","牡丹江","齐齐哈尔","七台河","双鸭山","绥化","伊春");
+ break;
+ case "河南":
+ var cityOptions = new Array("郑州","安阳","鹤壁","潢川","焦作","济源","开封","漯河","洛阳","南阳","平顶山","濮阳","三门峡","商丘","新乡","信阳","许昌","周口","驻马店");
+ break;
+ case "香港":
+ var cityOptions = new Array("香港","九龙","新界");
+ break;
+ case "湖北":
+ var cityOptions = new Array("武汉","恩施","鄂州","黄冈","黄石","荆门","荆州","潜江","十堰","随州","武穴","仙桃","咸宁","襄阳","襄樊","孝感","宜昌");
+ break;
+ case "湖南":
+ var cityOptions = new Array("长沙","常德","郴州","衡阳","怀化","吉首","娄底","邵阳","湘潭","益阳","岳阳","永州","张家界","株洲");
+ break;
+ case "江西":
+ var cityOptions = new Array("南昌","抚州","赣州","吉安","景德镇","井冈山","九江","庐山","萍乡","上饶","新余","宜春","鹰潭");
+ break;
+ case "吉林":
+ var cityOptions = new Array("长春","吉林","白城","白山","珲春","辽源","梅河","四平","松原","通化","延吉");
+ break;
+ case "辽宁":
+ var cityOptions = new Array("沈阳","鞍山","本溪","朝阳","大连","丹东","抚顺","阜新","葫芦岛","锦州","辽阳","盘锦","铁岭","营口");
+ break;
+ case "澳门":
+ var cityOptions = new Array("澳门");
+ break;
+ case "内蒙古":
+ var cityOptions = new Array("呼和浩特","阿拉善盟","包头","赤峰","东胜","海拉尔","集宁","临河","通辽","乌海","乌兰浩特","锡林浩特");
+ break;
+ case "宁夏":
+ var cityOptions = new Array("银川","固源","石嘴山","吴忠");
+ break;
+ case "青海":
+ var cityOptions = new Array("西宁","德令哈","格尔木","共和","海东","海晏","玛沁","同仁","玉树");
+ break;
+ case "山东":
+ var cityOptions = new Array("济南","滨州","兖州","德州","东营","菏泽","济宁","莱芜","聊城","临沂","蓬莱","青岛","曲阜","日照","泰安","潍坊","威海","烟台","枣庄","淄博");
+ break;
+ case "山西":
+ var cityOptions = new Array("太原","长治","大同","候马","晋城","离石","临汾","宁武","朔州","忻州","阳泉","榆次","运城");
+ break;
+ case "陕西":
+ var cityOptions = new Array("西安","安康","宝鸡","汉中","渭南","商州","绥德","铜川","咸阳","延安","榆林");
+ break;
+ case "四川":
+ var cityOptions = new Array("成都","巴中","达川","德阳","都江堰","峨眉山","涪陵","广安","广元","九寨沟","康定","乐山","泸州","马尔康","绵阳","眉山","南充","内江","攀枝花","遂宁","汶川","西昌","雅安","宜宾","自贡","资阳");
+ break;
+ case "台湾":
+ var cityOptions = new Array("台北","基隆","台南","台中","高雄","屏东","南投","云林","新竹","彰化","苗栗","嘉义","花莲","桃园","宜兰","台东","金门","马祖","澎湖");
+ break;
+ case "天津":
+ var cityOptions = new Array("天津","和平","东丽","河东","西青","河西","津南","南开","北辰","河北","武清","红挢","塘沽","汉沽","大港","宁河","静海","宝坻","蓟县");
+ break;
+ case "新疆":
+ var cityOptions = new Array("乌鲁木齐","阿克苏","阿勒泰","阿图什","博乐","昌吉","东山","哈密","和田","喀什","克拉玛依","库车","库尔勒","奎屯","石河子","塔城","吐鲁番","伊宁");
+ break;
+ case "西藏":
+ var cityOptions = new Array("拉萨","阿里","昌都","林芝","那曲","日喀则","山南");
+ break;
+ case "云南":
+ var cityOptions = new Array("昆明","大理","保山","楚雄","大理","东川","个旧","景洪","开远","临沧","丽江","六库","潞西","曲靖","思茅","文山","西双版纳","玉溪","中甸","昭通");
+ break;
+ case "浙江":
+ var cityOptions = new Array("杭州","安吉","慈溪","定海","奉化","海盐","黄岩","湖州","嘉兴","金华","临安","临海","丽水","宁波","瓯海","平湖","千岛湖","衢州","江山","瑞安","绍兴","嵊州","台州","温岭","温州","余姚","舟山");
+ break;
+ case "海外":
+ var cityOptions = new Array("美国","日本","英国","法国","德国","其他");
+ break;
+ default:
+ var cityOptions = new Array("请选择所在城市");
+ break;
+ }
+
+ cityField.options.length = 0;
+ for (var i = 0; i < cityOptions.length; i++) {
+ cityField.options[i] = new Option(cityOptions[i],cityOptions[i]);
+ /*
+ if (cityField.options[i].value==city)
+ {
+ //alert("here put City ok!");
+ document.oblogform["city"].selectedIndex = i;
+ }*/
+ }
+}
+
+/*弹框*/
+// 公共弹框样式
+// 建议左右栏的:Width:460,Height:190
+// 建议宽屏对应值:Width:760,Height:500
+function pop_box_new(value, Width, Height, close) {
+
+ if ($("#popupAll").length > 0) {
+ $("#popupAll").remove();
+ }
+ w = ($(window).width() - Width) / 2;
+ h = ($(window).height() - Height) / 2;
+ var html = "";
+ if (close) {
+ value = "
" + value;
+ }
+ $(document.body).append(html);
+ $("#popupWrap").html(value);
+ $('#popupWrap').css({
+ "top": h + "px",
+ "left": w + "px",
+ "padding": "0",
+ "border": "none",
+ "position": "fixed",
+ "z-index": "99999",
+ "background-color": "#fff",
+ "border-radius": "10px"
+ });
+ if (close) {
+ $('#closeIcon').css({
+ "top": "-26px",
+ "left": Width + "px",
+ "z-index": "100000"
+ });
+ }
+
+ $("#popupWrap").parent().parent().show();
+ $('#popupAll').find("#closeIcon").click(function() {
+ $("#popupAll").hide();
+ });
+ $('#popupAll').find("a[class*='pop_close']").click(function() {
+ $("#popupAll").hide();
+ });
+ // w = ($(window).width() - Width)/2;
+ // h = ($(window).height() - Height)/2;
+ // $("#ajax-modal").html(value);
+ // showModal('ajax-modal', Width + 'px');
+ // $('#ajax-modal').siblings().remove();
+ // $('#ajax-modal').parent().css({"top": h+"px","left": w+"px","padding":"0","border":"none","position":"fixed"});
+ // $('#ajax-modal').parent().removeClass("resourceUploadPopup popbox_polls popbox");
+ // $('#ajax-modal').css({"padding":"0","overflow":"hidden"});
+ // $('#ajax-modal').parent().attr("id","popupWrap");
+
+ //拖拽
+ function Drag(id) {
+ this.div = document.getElementById(id);
+ if (this.div) {
+ this.div.style.cursor = "move";
+ this.div.style.position = "fixed";
+ }
+ this.disX = 0;
+ this.disY = 0;
+ var _this = this;
+ this.div.onmousedown = function(evt) {
+ _this.getDistance(evt);
+ document.onmousemove = function(evt) {
+ _this.setPosition(evt);
+ }
+ ;
+ _this.div.onmouseup = function() {
+ _this.clearEvent();
+ }
+ }
+ }
+ Drag.prototype.getDistance = function(evt) {
+ var oEvent = evt || event;
+ this.disX = oEvent.clientX - this.div.offsetLeft;
+ this.disY = oEvent.clientY - this.div.offsetTop;
+ }
+ ;
+ Drag.prototype.setPosition = function(evt) {
+ var oEvent = evt || event;
+ var l = oEvent.clientX - this.disX;
+ var t = oEvent.clientY - this.disY;
+ if (l <= 0) {
+ l = 0;
+ } else if (l >= document.documentElement.clientWidth - this.div.offsetWidth) {
+ l = document.documentElement.clientWidth - this.div.offsetWidth;
+ }
+ if (t <= 0) {
+ t = 0;
+ } else if (t >= document.documentElement.clientHeight - this.div.offsetHeight) {
+ t = document.documentElement.clientHeight - this.div.offsetHeight;
+ }
+ this.div.style.left = l + "px";
+ this.div.style.top = t + "px";
+ }
+ ;
+ Drag.prototype.clearEvent = function() {
+ this.div.onmouseup = null;
+ document.onmousemove = null;
+ }
+ ;
+
+ new Drag("popupWrap");
+
+ $("#popupAll input, #popupAll textarea, #popupAll select, #popupAll ul, #popupAll a,#shixun_search_form_div").mousedown(function(event) {
+ event.stopPropagation();
+ new Drag("popupWrap");
+ });
+
+}
+
+function hideModal(el) {
+ if ($("#popupAll").length > 0) {
+ $("#popupAll").remove();
+ } else {
+ var modal;
+ if (el) {
+ modal = $(el).parents('.ui-dialog-content');
+ } else {
+ modal = $('#ajax-modal');
+ }
+ modal.dialog("close");
+ }
+}
+
+//提示框:只有一个确定按钮,点击跳转
+//
+function notice_box_redirect(url, str) {
+ var htmlvalue = '';
+ pop_box_new(htmlvalue, 480, 160);
+}
+//按钮内容自定义(自定义按钮需要remote=true,且有取消按钮)
+function notice_operation_box(url, str, btnstr) {
+ var htmlvalue = '';
+ pop_box_new(htmlvalue, 480, 160);
+}
+//点击删除时的确认弹框: 不走destroy方法
+function delete_confirm_box(url, str) {
+ var htmlvalue = '';
+ pop_box_new(htmlvalue, 480, 160);
+}
+//点击删除时的确认弹框: 走destroy方法,remote为true
+function delete_confirm_box_2(url, str) {
+ var htmlvalue = '';
+ pop_box_new(htmlvalue, 480, 160);
+}
+
+// 点击确定的时候ajax请求,两个按钮 点击确认跳转, 提示信息可以多行
+function op_confirm_box_remote(url, str) {
+ var htmlvalue = '';
+ pop_box_new(htmlvalue, 578, 205);
+}
+
+//点击删除时的确认弹框: post,remote为true
+function post_confirm_box(url, str) {
+ var htmlvalue = '';
+ pop_box_new(htmlvalue, 480, 160);
+}
+
+//提示框:只有一个确定按钮,点击关闭弹框
+//
+function notice_box(str) {
+ var htmlvalue = '';
+ pop_box_new(htmlvalue, 480, 160);
+}
+
+//点击删除时的确认弹框: 走destroy方法
+function delete_confirm_box_3(url, str) {
+ var htmlvalue = '';
+ pop_box_new(htmlvalue, 480, 160);
+}
+
+//取消和确定,确定会调用自定义方法
+function op_confirm_tip(str, func) {
+ var htmlvalue = '';
+ pop_box_new(htmlvalue, 500, 205);
+}
+
+//取消和确定,确定会调用自定义方法(带参数)
+function op_confirm_tip_1(str, func) {
+ var htmlvalue = '';
+ pop_box_new(htmlvalue, 500, 205);
+}
+
+function op_confirm_box_loading(url, str) {
+ var htmlvalue = '';
+ pop_box_new(htmlvalue, 578, 205);
+}
+
+// 两个按钮 点击确认跳转, 提示信息有两行
+function s_op_confirm_box(url, str) {
+ var htmlvalue = '';
+ pop_box_new(htmlvalue, 480, 205);
+}
+
+function suofang() {
+ var html = '
可能会影响某些功能的正常使用
' + '- 1.请尝试调整浏览器缩放比例为100%(快捷键ctrl+0)
' + '- 2.请尝试调整系统显示比例为100%(控制面板/显示 设置)
' + '
';
+ sure_confirm_box("页面缩放比例不正确", 600, 310, html);
+}
+
+//一个“知道了”按钮,title和宽度都作为参数
+function sure_confirm_box(title, width, height, str) {
+ var htmlvalue = '';
+ pop_box_new(htmlvalue, width, height);
+}
+
+function throttle(method, context, e) {
+ clearTimeout(method.tId);
+ method.tId = setTimeout(function() {
+ method.call(context, e);
+ }, 500);
+}
+
+function apply_publish_shixun(url) {
+ if ($("#apply_publish_shixun").attr("data-option") == '1') {
+ $("#apply_publish_shixun").attr("data-option", 0);
+ $("#apply_publish_shixun").addClass("disabled-grey-bg");
+ $.ajax({
+ url: url,
+ type: 'get'
+ });
+ }
+}
+
+var autoTextarea = function(elem, extra, maxHeight) {
+ extra = extra || 0;
+ var isFirefox = !!document.getBoxObjectFor || 'mozInnerScreenX'in window
+ , isOpera = !!window.opera && !!window.opera.toString().indexOf('Opera')
+ , addEvent = function(type, callback) {
+ elem.addEventListener ? elem.addEventListener(type, callback, false) : elem.attachEvent('on' + type, callback);
+ }
+ , getStyle = elem.currentStyle ? function(name) {
+ var val = elem.currentStyle[name];
+
+ if (name === 'height' && val.search(/px/i) !== 1) {
+ var rect = elem.getBoundingClientRect();
+ return rect.bottom - rect.top - parseFloat(getStyle('paddingTop')) - parseFloat(getStyle('paddingBottom')) + 'px';
+ }
+ ;
+ return val;
+ }
+ : function(name) {
+ return getComputedStyle(elem, null)[name];
+ }
+ , minHeight = parseFloat(getStyle('height'));
+
+ elem.style.resize = 'none';
+
+ var change = function() {
+ var scrollTop, height, padding = 0, style = elem.style;
+
+ if (elem._length === elem.value.length)
+ return;
+ elem._length = elem.value.length;
+
+ if (!isFirefox && !isOpera) {
+ padding = parseInt(getStyle('paddingTop')) + parseInt(getStyle('paddingBottom'));
+ }
+ ;scrollTop = document.body.scrollTop || document.documentElement.scrollTop;
+
+ elem.style.height = minHeight + 'px';
+ if (elem.scrollHeight > minHeight) {
+ if (maxHeight && elem.scrollHeight > maxHeight) {
+ height = maxHeight - padding;
+ style.overflowY = 'auto';
+ } else {
+ height = elem.scrollHeight - padding + 10;
+ style.overflowY = 'hidden';
+ }
+ ;style.height = height + extra + 'px';
+ scrollTop += parseInt(style.height) - elem.currHeight;
+ //document.body.scrollTop = scrollTop;
+ //document.documentElement.scrollTop = scrollTop;
+ elem.currHeight = parseInt(style.height);
+ }
+ ;
+ };
+
+ addEvent('propertychange', change);
+ addEvent('input', change);
+ addEvent('focus', change);
+ change();
+};
+
+// 点击按钮复制功能
+function jsCopy() {
+ var e = document.getElementById("copy_rep_content");
+ e.select();
+ document.execCommand("Copy");
+}
+
+// 使用resize事件监听窗口的zoom,如果zoom变化了,弹框提示;初始化时也检查zoom是否是100%。
+function _initZoomCheck() {
+ if (!IsPC()) {
+ // 手机端不需要提示
+ return;
+ }
+ var isNormalZoom = Math.round(window.devicePixelRatio * 100) === 100
+ if (!isNormalZoom) {
+ suofang();
+ }
+
+ $(window).resize(function() {
+ var isNormalZoom = Math.round(window.devicePixelRatio * 100) === 100
+ if (!isNormalZoom) {
+ suofang();
+ } else {
+ $('.task-btn.task-btn-orange:visible').click()
+ }
+ })
+
+}
+
+var win_resize = function() {
+ var _w = $(window).width() - 1200;
+ if (_w < 0) {
+ $('.newHeader>.educontent').width('auto')
+ } else {
+ $('.newHeader>.educontent').width('1200px')
+ }
+};
+
+function initWindowResize() {
+ if (location.pathname === '/login') {
+ // 登录页不需要
+ return;
+ }
+
+ $(function() {
+ setTimeout(function() {
+ win_resize();
+ }, 1000)
+ })
+
+ $(window).resize(function() {
+ win_resize()
+ })
+}
+initWindowResize();
+
+// 登录刷新 https://stackoverflow.com/questions/28230845/communication-between-tabs-or-windows
+if (window['BroadcastChannel']) {
+ var bc = new BroadcastChannel('ec_reload');
+ bc.onmessage = function(ev) {
+ if (window['ec_reload_msg_send_window']) {
+ window['ec_reload_msg_send_window'] = false;
+ } else {
+ location.reload();
+ }
+ }
+}
+function _sendReloadMsg() {
+ var bc = new BroadcastChannel('ec_reload');
+ window['ec_reload_msg_send_window'] = true;
+ // 消息发出的窗口,不需要处理该消息
+ bc.postMessage('ec_reload');
+ /* send */
+}
+// IE11 没有 startsWith
+if (!String.prototype.startsWith) {
+ String.prototype.startsWith = function(searchString, position) {
+ position = position || 0;
+ return this.substr(position, searchString.length) === searchString;
+ }
+ ;
+ String.prototype.endsWith = function(search, this_len) {
+ if (this_len === undefined || this_len > this.length) {
+ this_len = this.length;
+ }
+ return this.substring(this_len - search.length, this_len) === search;
+ }
+ ;
+}
+
+function clickNewsubscript() {
+ $(".newsubscript").hide();
+ $(".newedbox").addClass("newminheight");
+ $(".newedbox").removeClass("newedboxheight");
+}
+
+/** tpm实训开启按钮,不允许多次点击 START */
+//点击模拟实战或者开启实战等,按钮变灰内容变成“开启中”
+var operationItem = null;
+var operationButtonOldValue = null;
+function opClickString(item) {
+ var value = $(item).html();
+ $(item).css({
+ 'background': 'gray',
+ 'border': '1px solid grey',
+ 'pointer-events': 'none'
+ });
+ $(item).html('开启中');
+
+ operationButtonOldValue = value
+ operationItem = item
+ // setTimeout(function(){ $(item).css('background', '#4CACFF');$(item).html(value); }, 4000)
+}
+//
+// var isOperationSending = false;
+$(document).bind('ajaxStop', function(event, xhr, settings) {
+ if (settings && settings.url && (settings.url.match(/operation\?/))) {
+ if (operationItem) {
+ $(operationItem).css('background', '#4CACFF').css('pointer-events', 'inherit');
+ $(operationItem).html(operationButtonOldValue);
+ }
+ }
+});
+$(document).bind('ajaxError', function(event, xhr, settings) {
+ if (settings && settings.url && (settings.url.match(/operation\?/))) {
+ if (operationItem) {
+ $(operationItem).css('background', '#4CACFF').css('pointer-events', 'inherit');
+ $(operationItem).html(operationButtonOldValue);
+ }
+ }
+});
+/** tpm实训开启按钮,不允许多次点击 END */
diff --git a/public/react/config/webpack.config.dev.js b/public/react/config/webpack.config.dev.js
index dfd54f38b..ceddbd81b 100644
--- a/public/react/config/webpack.config.dev.js
+++ b/public/react/config/webpack.config.dev.js
@@ -114,21 +114,21 @@ module.exports = {
// First, run the linter.
// It's important to do this before Babel processes the JS.
// 上线然后要注释回来
- {
- test: /\.(js|jsx|mjs)$/,
- enforce: 'pre',
- use: [
- {
- options: {
- formatter: eslintFormatter,
- eslintPath: require.resolve('eslint'),
-
- },
- loader: require.resolve('eslint-loader'),
- },
- ],
- include: paths.appSrc,
- },
+ // {
+ // test: /\.(js|jsx|mjs)$/,
+ // enforce: 'pre',
+ // use: [
+ // {
+ // options: {
+ // formatter: eslintFormatter,
+ // eslintPath: require.resolve('eslint'),
+ //
+ // },
+ // loader: require.resolve('eslint-loader'),
+ // },
+ // ],
+ // include: paths.appSrc,
+ // },
{
// "oneOf" will traverse all following loaders until one will
// match the requirements. When no loader matches it will fall
diff --git a/public/react/src/modules/home/shixunsHome.js b/public/react/src/modules/home/shixunsHome.js
index 0c204a823..07920e2d9 100644
--- a/public/react/src/modules/home/shixunsHome.js
+++ b/public/react/src/modules/home/shixunsHome.js
@@ -198,13 +198,13 @@ class ShixunsHome extends Component {