"+e+"
"):a.insertContent(e)}),a.addButton("pagebreak",{title:"Page break",cmd:"mcePageBreak"}),a.addMenuItem("pagebreak",{text:"Page break",icon:"pagebreak",cmd:"mcePageBreak",context:"insert"}),a.on("ResolveName",function(c){"IMG"==c.target.nodeName&&a.dom.hasClass(c.target,b)&&(c.name="pagebreak")}),a.on("click",function(c){c=c.target,"IMG"===c.nodeName&&a.dom.hasClass(c,b)&&a.selection.select(c)}),a.on("BeforeSetContent",function(a){a.content=a.content.replace(d,e)}),a.on("PreInit",function(){a.serializer.addNodeFilter("img",function(b){for(var d,e,f=b.length;f--;)if(d=b[f],e=d.attr("class"),e&&-1!==e.indexOf("mce-pagebreak")){var g=d.parent;if(a.schema.getBlockElements()[g.name]&&a.settings.pagebreak_split_block){g.type=3,g.value=c,g.raw=!0,d.remove();continue}d.type=3,d.value=c,d.raw=!0}})})}); -------------------------------------------------------------------------------- /public/js/tinymce/plugins/preview/plugin.min.js: -------------------------------------------------------------------------------- 1 | tinymce.PluginManager.add("preview",function(a){var b=a.settings,c=!tinymce.Env.ie;a.addCommand("mcePreview",function(){a.windowManager.open({title:"Preview",width:parseInt(a.getParam("plugin_preview_width","650"),10),height:parseInt(a.getParam("plugin_preview_height","500"),10),html:'",buttons:{text:"Close",onclick:function(){this.parent().parent().close()}},onPostRender:function(){var d,e="";e+='a
'), 32 | sAssertUnlink('ab
', [0, 0, 0], 0, [0, 1], 1, 'ab
'), 33 | sAssertUnlink('b', [0, 0, 0], 0, [0, 0, 0], 1, '
a
\n'), 34 | sAssertUnlink('b', [0, 0, 0], 0, [1, 0, 0], 1, '
a
\nb
') 35 | ], onSuccess, onFailure); 36 | }, { 37 | }, success, failure); 38 | }); 39 | -------------------------------------------------------------------------------- /public/js/tinymce/themes/inlite/src/test/js/browser/core/ElementMatcher.js: -------------------------------------------------------------------------------- 1 | asynctest('browser/core/ElementMatcherTest', [ 2 | 'ephox.mcagar.api.TinyLoader', 3 | 'ephox.mcagar.api.TinyApis', 4 | 'ephox.agar.api.Step', 5 | 'ephox.agar.api.Assertions', 6 | 'tinymce/inlite/core/ElementMatcher', 7 | 'tinymce/inlite/core/PredicateId', 8 | 'ephox.agar.api.Pipeline' 9 | ], function (TinyLoader, TinyApis, Step, Assertions, ElementMatcher, PredicateId, Pipeline) { 10 | var success = arguments[arguments.length - 2]; 11 | var failure = arguments[arguments.length - 1]; 12 | 13 | var eq = function (target) { 14 | return function (elm) { 15 | return elm === target; 16 | }; 17 | }; 18 | 19 | var constantFalse = function (/*elm*/) { 20 | return false; 21 | }; 22 | 23 | var sElementTest = function (tinyApis, editor, inputHtml, selector) { 24 | return Step.sync(function () { 25 | var target, result; 26 | 27 | editor.setContent(inputHtml); 28 | target = editor.dom.select(selector)[0]; 29 | 30 | result = ElementMatcher.element(target, [ 31 | PredicateId.create('a', constantFalse), 32 | PredicateId.create('b', eq(target)) 33 | ])(editor); 34 | 35 | Assertions.assertEq(result.id, 'b', 'Should be matching B'); 36 | Assertions.assertEq(result.rect.w > 0, true, 'Should be have width'); 37 | }); 38 | }; 39 | 40 | var sParentTest = function (tinyApis, editor, inputHtml, selector) { 41 | return Step.sync(function () { 42 | var target, parents, result; 43 | 44 | editor.setContent(inputHtml); 45 | target = editor.dom.select(selector)[0]; 46 | parents = editor.dom.getParents(target); 47 | 48 | result = ElementMatcher.parent(parents, [ 49 | PredicateId.create('a', constantFalse), 50 | PredicateId.create('b', eq(parents[1])), 51 | PredicateId.create('c', eq(parents[0])) 52 | ])(editor); 53 | 54 | Assertions.assertEq(result.id, 'c', 'Should be matching C the closest one'); 55 | Assertions.assertEq(result.rect.w > 0, true, 'Should be have width'); 56 | }); 57 | }; 58 | 59 | TinyLoader.setup(function (editor, onSuccess, onFailure) { 60 | var tinyApis = TinyApis(editor); 61 | 62 | Pipeline.async({}, [ 63 | sElementTest(tinyApis, editor, 'a
', 'p'), 64 | sParentTest(tinyApis, editor, 'a
a
c
'), 55 | sAssertRect(editor, getElementRectFromSelector(editor, 'p:nth-child(1)')), 56 | tinyApis.sSetCursor([0, 0], 0), 57 | sAssertRect(editor, getSelectionRectFromSelector(editor)) 58 | ], onSuccess, onFailure); 59 | }, { 60 | inline: true 61 | }, success, failure); 62 | }); 63 | -------------------------------------------------------------------------------- /public/js/tinymce/themes/inlite/src/test/js/browser/core/PredicateIdTest.js: -------------------------------------------------------------------------------- 1 | test('browser/core/PredicateIdTest', [ 2 | 'ephox/tinymce', 3 | 'tinymce/inlite/core/PredicateId' 4 | ], function (tinymce, PredicateId) { 5 | var testFromContextToolbars = function () { 6 | var isTrue = function () { 7 | return true; 8 | }; 9 | 10 | var isFalse = function () { 11 | return false; 12 | }; 13 | 14 | var predIds = PredicateId.fromContextToolbars([ 15 | {toolbar: 'a b c', predicate: isTrue, id: 'a'}, 16 | {toolbar: 'd e', predicate: isFalse, id: 'b'} 17 | ]); 18 | 19 | assert.eq([ 20 | PredicateId.create('a', isTrue), 21 | PredicateId.create('b', isFalse) 22 | ], predIds); 23 | }; 24 | 25 | testFromContextToolbars(); 26 | }); 27 | -------------------------------------------------------------------------------- /public/js/tinymce/themes/inlite/src/test/js/browser/file/ConversionsTest.js: -------------------------------------------------------------------------------- 1 | asynctest('atomic/core/ConvertTest', [ 2 | 'ephox/tinymce', 3 | 'tinymce/inlite/file/Conversions', 4 | 'ephox.agar.api.Step', 5 | 'ephox.agar.api.Pipeline', 6 | 'ephox.agar.api.Assertions' 7 | ], function (tinymce, Conversions, Step, Pipeline, Assertions) { 8 | var success = arguments[arguments.length - 2]; 9 | var failure = arguments[arguments.length - 1]; 10 | 11 | var base64ToBlob = function (base64, type) { 12 | var buff = atob(base64); 13 | var bytes = new Uint8Array(buff.length); 14 | 15 | for (var i = 0; i < bytes.length; i++) { 16 | bytes[i] = buff.charCodeAt(i); 17 | } 18 | 19 | return new Blob([bytes], {type: type}); 20 | }; 21 | 22 | var sBlobToBase64 = function () { 23 | return Step.async(function (next) { 24 | var base64 = 'R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7'; 25 | var blob = base64ToBlob(base64, 'image/gif'); 26 | 27 | Conversions.blobToBase64(blob).then(function (convertedBase64) { 28 | Assertions.assertEq('Not the correct base64', base64, convertedBase64); 29 | next(); 30 | }); 31 | }); 32 | }; 33 | 34 | Pipeline.async({}, [ 35 | sBlobToBase64() 36 | ], function () { 37 | success(); 38 | }, function () { 39 | failure(); 40 | }); 41 | }); 42 | -------------------------------------------------------------------------------- /public/js/tinymce/themes/inlite/src/test/js/browser/file/SelectionMatcher.js: -------------------------------------------------------------------------------- 1 | /** 2 | * SelectionMatcher.js 3 | * 4 | * Released under LGPL License. 5 | * Copyright (c) 1999-2016 Ephox Corp. All rights reserved 6 | * 7 | * License: http://www.tinymce.com/license 8 | * Contributing: http://www.tinymce.com/contributing 9 | */ 10 | 11 | define('tinymce/inlite/core/SelectionMatcher', [ 12 | 'tinymce/inlite/core/Matcher', 13 | 'tinymce/inlite/core/Measure' 14 | ], function (Matcher, Measure) { 15 | // textSelection :: String -> (Editor -> Matcher.result | Null) 16 | var textSelection = function (id) { 17 | return function (editor) { 18 | if (!editor.selection.isCollapsed()) { 19 | return Matcher.result(id, Measure.getSelectionRect(editor)); 20 | } 21 | 22 | return null; 23 | }; 24 | }; 25 | 26 | // emptyTextBlock :: [Elements], String -> (Editor -> Matcher.result | Null) 27 | var emptyTextBlock = function (elements, id) { 28 | return function (editor) { 29 | var i, textBlockElementsMap = editor.schema.getTextBlockElements(); 30 | 31 | for (i = 0; i < elements.length; i++) { 32 | if (elements[i].nodeName === 'TABLE') { 33 | return null; 34 | } 35 | } 36 | 37 | for (i = 0; i < elements.length; i++) { 38 | if (elements[i].nodeName in textBlockElementsMap) { 39 | if (editor.dom.isEmpty(elements[i])) { 40 | return Matcher.result(id, Measure.getSelectionRect(editor)); 41 | } 42 | 43 | return null; 44 | } 45 | } 46 | 47 | return null; 48 | }; 49 | }; 50 | 51 | return { 52 | textSelection: textSelection, 53 | emptyTextBlock: emptyTextBlock 54 | }; 55 | }); 56 | -------------------------------------------------------------------------------- /public/packages/barryvdh/elfinder/img/arrows-active.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/netcan/HFUT_ChemLab/c217936a4c74f649e535ec36d50b9d44f548e5ed/public/packages/barryvdh/elfinder/img/arrows-active.png -------------------------------------------------------------------------------- /public/packages/barryvdh/elfinder/img/arrows-normal.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/netcan/HFUT_ChemLab/c217936a4c74f649e535ec36d50b9d44f548e5ed/public/packages/barryvdh/elfinder/img/arrows-normal.png -------------------------------------------------------------------------------- /public/packages/barryvdh/elfinder/img/crop.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/netcan/HFUT_ChemLab/c217936a4c74f649e535ec36d50b9d44f548e5ed/public/packages/barryvdh/elfinder/img/crop.gif -------------------------------------------------------------------------------- /public/packages/barryvdh/elfinder/img/dialogs.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/netcan/HFUT_ChemLab/c217936a4c74f649e535ec36d50b9d44f548e5ed/public/packages/barryvdh/elfinder/img/dialogs.png -------------------------------------------------------------------------------- /public/packages/barryvdh/elfinder/img/icons-big.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/netcan/HFUT_ChemLab/c217936a4c74f649e535ec36d50b9d44f548e5ed/public/packages/barryvdh/elfinder/img/icons-big.png -------------------------------------------------------------------------------- /public/packages/barryvdh/elfinder/img/icons-small.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/netcan/HFUT_ChemLab/c217936a4c74f649e535ec36d50b9d44f548e5ed/public/packages/barryvdh/elfinder/img/icons-small.png -------------------------------------------------------------------------------- /public/packages/barryvdh/elfinder/img/logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/netcan/HFUT_ChemLab/c217936a4c74f649e535ec36d50b9d44f548e5ed/public/packages/barryvdh/elfinder/img/logo.png -------------------------------------------------------------------------------- /public/packages/barryvdh/elfinder/img/progress.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/netcan/HFUT_ChemLab/c217936a4c74f649e535ec36d50b9d44f548e5ed/public/packages/barryvdh/elfinder/img/progress.gif -------------------------------------------------------------------------------- /public/packages/barryvdh/elfinder/img/quicklook-bg.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/netcan/HFUT_ChemLab/c217936a4c74f649e535ec36d50b9d44f548e5ed/public/packages/barryvdh/elfinder/img/quicklook-bg.png -------------------------------------------------------------------------------- /public/packages/barryvdh/elfinder/img/quicklook-icons.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/netcan/HFUT_ChemLab/c217936a4c74f649e535ec36d50b9d44f548e5ed/public/packages/barryvdh/elfinder/img/quicklook-icons.png -------------------------------------------------------------------------------- /public/packages/barryvdh/elfinder/img/resize.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/netcan/HFUT_ChemLab/c217936a4c74f649e535ec36d50b9d44f548e5ed/public/packages/barryvdh/elfinder/img/resize.png -------------------------------------------------------------------------------- /public/packages/barryvdh/elfinder/img/spinner-mini.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/netcan/HFUT_ChemLab/c217936a4c74f649e535ec36d50b9d44f548e5ed/public/packages/barryvdh/elfinder/img/spinner-mini.gif -------------------------------------------------------------------------------- /public/packages/barryvdh/elfinder/img/toolbar.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/netcan/HFUT_ChemLab/c217936a4c74f649e535ec36d50b9d44f548e5ed/public/packages/barryvdh/elfinder/img/toolbar.png -------------------------------------------------------------------------------- /public/packages/barryvdh/elfinder/img/volume_icon_dropbox.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/netcan/HFUT_ChemLab/c217936a4c74f649e535ec36d50b9d44f548e5ed/public/packages/barryvdh/elfinder/img/volume_icon_dropbox.png -------------------------------------------------------------------------------- /public/packages/barryvdh/elfinder/img/volume_icon_ftp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/netcan/HFUT_ChemLab/c217936a4c74f649e535ec36d50b9d44f548e5ed/public/packages/barryvdh/elfinder/img/volume_icon_ftp.png -------------------------------------------------------------------------------- /public/packages/barryvdh/elfinder/img/volume_icon_googledrive.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/netcan/HFUT_ChemLab/c217936a4c74f649e535ec36d50b9d44f548e5ed/public/packages/barryvdh/elfinder/img/volume_icon_googledrive.png -------------------------------------------------------------------------------- /public/packages/barryvdh/elfinder/img/volume_icon_local.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/netcan/HFUT_ChemLab/c217936a4c74f649e535ec36d50b9d44f548e5ed/public/packages/barryvdh/elfinder/img/volume_icon_local.png -------------------------------------------------------------------------------- /public/packages/barryvdh/elfinder/img/volume_icon_sql.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/netcan/HFUT_ChemLab/c217936a4c74f649e535ec36d50b9d44f548e5ed/public/packages/barryvdh/elfinder/img/volume_icon_sql.png -------------------------------------------------------------------------------- /public/packages/barryvdh/elfinder/js/extras/quicklook.googledocs.js: -------------------------------------------------------------------------------- 1 | "use strict" 2 | 3 | try { 4 | if (! elFinder.prototype.commands.quicklook.plugins) { 5 | elFinder.prototype.commands.quicklook.plugins = []; 6 | } 7 | elFinder.prototype.commands.quicklook.plugins.push(function(ql) { 8 | var fm = ql.fm, 9 | preview = ql.preview; 10 | 11 | preview.on('update', function(e) { 12 | var win = ql.window, 13 | file = e.file, node, loading; 14 | 15 | if (file.mime.indexOf('application/vnd.google-apps.') === 0) { 16 | if (file.url == '1') { 17 | $('').appendTo(ql.info.find('.elfinder-quicklook-info')) 18 | .on('click', function() { 19 | $(this).html(''); 20 | fm.request({ 21 | data : {cmd : 'url', target : file.hash}, 22 | preventDefault : true 23 | }) 24 | .always(function() { 25 | $(this).html(''); 26 | }) 27 | .done(function(data) { 28 | var rfile = fm.file(file.hash); 29 | ql.value.url = rfile.url = data.url || ''; 30 | if (ql.value.url) { 31 | preview.trigger($.Event('update', {file : ql.value})); 32 | } 33 | }); 34 | }); 35 | } 36 | if (file.url !== '' && file.url != '1') { 37 | e.stopImmediatePropagation(); 38 | preview.one('change', function() { 39 | loading.remove(); 40 | node.off('load').remove(); 41 | }); 42 | 43 | loading = $('发布人:{{ $article->user->name }} 发布时间:{{ $article->created_at }}
14 | {!! $article->content !!} 15 |试卷名 | 17 |考试人数 | 18 |满分 | 19 |平均分 | 20 |动作 | 21 |
---|---|---|---|---|
{{ $paper->title }} | 27 |{{ $paper->users()->count() }} | 28 |{{ $paper->full_score }} | 29 |{{ round($paper->users()->where('score', '<>', -1)->avg('score') * 100 / $paper->full_score, 1) }}% | 30 |31 | 查看 32 | | 33 |