diff --git a/data.json b/data.json index 9e050737..b2749e2e 100644 --- a/data.json +++ b/data.json @@ -59,6 +59,11 @@ "url":"/lib/tools/BullshitGenerator/", "type":"文字工具" }, + { + "name":"NKeditor 富文本编辑器", + "url":"/lib/tools/NKeditor/", + "type":"文字工具" + }, { "name":"在线 x86 虚拟机", "url":"/lib/tools/v86/", diff --git a/js/api.js b/js/api.js index 6e2d7a41..794d6ead 100644 --- a/js/api.js +++ b/js/api.js @@ -77,6 +77,11 @@ var classify = [{ "url": "/incert/?link=/lib/tools/BullshitGenerator/", "hot": 0, "img": "" + }, { + "name": "NKeditor 富文本编辑器", + "url": "/incert/?link=/lib/tools/NKeditor/", + "hot": 0, + "img": "" }] }, { "id": 6, diff --git a/tools/NKeditor/.gitignore b/tools/NKeditor/.gitignore new file mode 100644 index 00000000..127b6c08 --- /dev/null +++ b/tools/NKeditor/.gitignore @@ -0,0 +1,18 @@ +*~ +~* +*.diff +*.patch +*.bak +.DS_Store +Thumbs.db +.sass-cache +.project +.*proj +.svn/ +*.swp +dist/ +node_modules/ +_build/ +uploads +.idea +php/default/db/data diff --git a/tools/NKeditor/Gruntfile.js b/tools/NKeditor/Gruntfile.js new file mode 100644 index 00000000..cb3c48b9 --- /dev/null +++ b/tools/NKeditor/Gruntfile.js @@ -0,0 +1,178 @@ + +module.exports = function(grunt) { + +var BANNER = '/* <%= pkg.name %> <%= pkg.version %> (<%= grunt.template.today("yyyy-mm-dd") %>), Copyright (C)' + + ' r9it.com,*/\r\n'; + +var SRC_FILES = [ + 'src/header.js', + 'src/core.js', + 'src/config.js', + 'src/event.js', + 'src/html.js', + 'src/selector.js', + 'src/node.js', + 'src/range.js', + 'src/cmd.js', + 'src/widget.js', + 'src/edit.js', + 'src/toolbar.js', + 'src/menu.js', + 'src/colorpicker.js', + 'src/uploadbutton.js', + 'src/dialog.js', + 'src/tabs.js', + 'src/ajax.js', + 'src/main.js', + 'src/footer.js', +]; + +var PLUGIN_FILES = [ + 'plugins/anchor/anchor.js', + 'plugins/autoheight/autoheight.js', + 'plugins/baidumap/baidumap.js', + 'plugins/map/map.js', + 'plugins/clearhtml/clearhtml.js', + 'plugins/code/code.js', + 'plugins/emoticons/emoticons.js', + 'plugins/filemanager/filemanager.js', + 'plugins/flash/flash.js', + 'plugins/image/image.js', + 'plugins/insertfile/insertfile.js', + 'plugins/lineheight/lineheight.js', + 'plugins/link/link.js', + 'plugins/map/map.js', + 'plugins/media/media.js', + 'plugins/multiimage/multiimage.js', + 'plugins/graft/graft.js', + 'plugins/pagebreak/pagebreak.js', + 'plugins/plainpaste/plainpaste.js', + 'plugins/preview/preview.js', + 'plugins/quickformat/quickformat.js', + 'plugins/table/table.js', + 'plugins/template/template.js', + 'plugins/wordpaste/wordpaste.js', + 'plugins/fixtoolbar/fixtoolbar.js' +]; + +var pkg = grunt.file.readJSON('package.json'); + +var lang = grunt.option('lang') || 'zh-CN'; + +grunt.initConfig({ + pkg : pkg, + concat : { + options : { + process : function(src, filepath) { + src = src.replace(/\$\{VERSION\}/g, pkg.version + ' (' + grunt.template.today('yyyy-mm-dd') + ')'); + src = src.replace(/\$\{THISYEAR\}/g, grunt.template.today('yyyy')); + src = src.replace(/\/\*\*(\r\n|\n)[\s\S]*?\*\//g, ''); + src = src.replace(/(^|\s)\/\/.*$/mg, ''); + src = src.replace(/(\r\n|\n)\/\*\*\/.*(\r\n|\n)/g, ''); + src = src.replace(/[ \t]+$/mg, ''); + src = src.replace(/(\r\n|\n){2,}/g, '$1'); + return src; + } + }, + build : { + src : SRC_FILES.concat('lang/' + lang + '.js').concat(PLUGIN_FILES), + dest : '<%= pkg.filename %>-all.js' + } + }, + + uglify : { + options : { + banner : BANNER, + }, + //压缩js + build : { + + files: [ + { + src : '<%= pkg.filename %>-all.js', + dest : '<%= pkg.filename %>-all-min.js' + } + ] + + } + }, + + //压缩css + cssmin : { + options: { + banner : BANNER, + beautify: { + //中文ascii化 + ascii_only: true + } + }, + build : { + files: [ + { + src: 'themes/black/editor.css', + dest: 'themes/black/editor.min.css' + }, + { + src: 'themes/grey/editor.css', + dest: 'themes/grey/editor.min.css' + }, + { + src: 'themes/blue/editor.css', + dest: 'themes/blue/editor.min.css' + }, + { + src: 'themes/primary/editor.css', + dest: 'themes/primary/editor.min.css' + }, + { + src: 'themes/default/editor.css', + dest: 'themes/default/editor.min.css' + }, + { + src : 'plugins/multiimage/css/upload.css', + dest : 'plugins/multiimage/css/upload.min.css' + }, + { + src : 'plugins/filemanager/css/filemanager.css', + dest : 'plugins/filemanager/css/filemanager.min.css' + } + ] + } + }, + + // 打包压缩文件 + compress : { + main : { + options: { + archive: 'dist/<%= pkg.filename %>-<%= pkg.version %>-' + lang + '.zip', + }, + files: [ + {src: ['asp/**'], dest: '<%= pkg.name %>/'}, + {src: ['asp.net/**'], dest: '<%= pkg.name %>/'}, + {src: ['attached'], dest: '<%= pkg.name %>/'}, + {src: ['jsp/**'], dest: '<%= pkg.name %>/'}, + {src: ['libs/**'], dest: '<%= pkg.name %>/'}, + {src: ['lang/**'], dest: '<%= pkg.name %>/'}, + {src: ['php/**'], dest: '<%= pkg.name %>/'}, + {src: ['plugins/**'], dest: '<%= pkg.name %>/'}, + {src: ['themes/**'], dest: '<%= pkg.name %>/'}, + {src: ['<%= pkg.filename %>*-all-min.js'], dest: '<%= pkg.name %>/'}, + {src: ['<%= pkg.filename %>*-all.js'], dest: '<%= pkg.name %>/'}, + {src: ['index.html'], dest: '<%= pkg.name %>/'}, + {src: ['old.html'], dest: '<%= pkg.name %>/'}, + ] + } + } +}); + +grunt.loadNpmTasks('grunt-contrib-concat'); +grunt.loadNpmTasks('grunt-contrib-uglify'); +grunt.loadNpmTasks('grunt-contrib-compress'); +grunt.loadNpmTasks('grunt-contrib-cssmin'); + +grunt.registerTask('build', ['concat', 'uglify', 'cssmin']); +grunt.registerTask('zip', ['build', 'compress']); + +grunt.registerTask('default', 'build'); + +}; diff --git a/tools/NKeditor/LICENSE b/tools/NKeditor/LICENSE new file mode 100644 index 00000000..078c4d17 --- /dev/null +++ b/tools/NKeditor/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2020 RockYang + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/tools/NKeditor/NKeditor-all-min.js b/tools/NKeditor/NKeditor-all-min.js new file mode 100644 index 00000000..3b7dfc9f --- /dev/null +++ b/tools/NKeditor/NKeditor-all-min.js @@ -0,0 +1,7 @@ +/* NKeditor 5.0.4 (2020-03-11), Copyright (C) r9it.com,*/ +!function(window,undefined){function _isArray(a){return a?"[object Array]"===Object.prototype.toString.call(a):!1}function _isFunction(a){return a?"[object Function]"===Object.prototype.toString.call(a):!1}function _inArray(a,b){for(var c=0,d=b.length;d>c;c++)if(a===b[c])return c;return-1}function _each(a,b){if(_isArray(a))for(var c=0,d=a.length;d>c&&b.call(a[c],c,a[c])!==!1;c++);else for(var e in a)if(a.hasOwnProperty(e)&&b.call(a[e],e,a[e])===!1)break}function _trim(a){return a.replace(/(?:^[ \t\n\r]+)|(?:[ \t\n\r]+$)/g,"")}function _inString(a,b,c){return c=c===undefined?",":c,(c+b+c).indexOf(c+a+c)>=0}function _addUnit(a,b){return b=b||"px",a&&/^-?\d+(?:\.\d+)?$/.test(a)?a+b:a}function _removeUnit(a){var b;return a&&(b=/(\d+)/.exec(a))?parseInt(b[1],10):0}function _escape(a){return a.replace(/&/g,"&").replace(//g,">").replace(/"/g,""")}function _unescape(a){return a.replace(/</g,"<").replace(/>/g,">").replace(/"/g,'"').replace(/&/g,"&")}function _toCamel(a){var b=a.split("-");return a="",_each(b,function(b,c){a+=b>0?c.charAt(0).toUpperCase()+c.substr(1):c}),a}function _toHex(a){function b(a){var b=parseInt(a,10).toString(16).toUpperCase();return b.length>1?b:"0"+b}return a.replace(/rgb\s*\(\s*(\d+)\s*,\s*(\d+)\s*,\s*(\d+)\s*\)/gi,function(a,c,d,e){return"#"+b(c)+b(d)+b(e)})}function _toMap(a,b){b=b===undefined?",":b;var c,d={},e=_isArray(a)?a:a.split(b);return _each(e,function(a,b){if(c=/^(\d+)\.\.(\d+)$/.exec(b))for(var e=parseInt(c[1],10);e<=parseInt(c[2],10);e++)d[e.toString()]=!0;else d[b]=!0}),d}function _toArray(a,b){return Array.prototype.slice.call(a,b||0)}function _undef(a,b){return a===undefined?b:a}function _invalidUrl(a){return!a||/[<>"]/.test(a)}function _addParam(a,b){return a.indexOf("?")>=0?a+"&"+b:a+"?"+b}function _extend(a,b,c){c||(c=b,b=null);var d;if(b){var e=function(){};e.prototype=b.prototype,d=new e,_each(c,function(a,b){d[a]=b})}else d=c;d.constructor=a,a.prototype=d,a.parent=b?b.prototype:null}function _json(text){var match;(match=/\{[\s\S]*\}|\[[\s\S]*\]/.exec(text))&&(text=match[0]);var cx=/[\u0000\u00ad\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff]/g;if(cx.lastIndex=0,cx.test(text)&&(text=text.replace(cx,function(a){return"\\u"+("0000"+a.charCodeAt(0).toString(16)).slice(-4)})),/^[\],:{}\s]*$/.test(text.replace(/\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g,"@").replace(/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g,"]").replace(/(?:^|:|,)(?:\s*\[)+/g,"")))return eval("("+text+")");throw"JSON parse error"}function _merge(a,b){for(var c in a)b[c]=a[c];return b}function _getBasePath(){for(var a,b=document.getElementsByTagName("script"),c=0,d=b.length;d>c;c++)if(a=b[c].src||"",/NKeditor[\w\-\.]*\.js/i.test(a))return a.substring(0,a.lastIndexOf("/")+1);return""}function _bindEvent(a,b,c){a.addEventListener?a.addEventListener(b,c,_useCapture):a.attachEvent&&a.attachEvent("on"+b,c)}function _unbindEvent(a,b,c){a.removeEventListener?a.removeEventListener(b,c,_useCapture):a.detachEvent&&a.detachEvent("on"+b,c)}function KEvent(a,b){this.init(a,b)}function _getId(a){return a[_eventExpendo]||null}function _setId(a){return a[_eventExpendo]=++_eventId,_eventId}function _removeId(a){try{delete a[_eventExpendo]}catch(b){a.removeAttribute&&a.removeAttribute(_eventExpendo)}}function _bind(a,b,c){if(b.indexOf(",")>=0)return void _each(b.split(","),function(){_bind(a,this,c)});var d=_getId(a);d||(d=_setId(a)),_eventData[d]===undefined&&(_eventData[d]={});var e=_eventData[d][b];e&&e.length>0?_unbindEvent(a,b,e[0]):(_eventData[d][b]=[],_eventData[d].el=a),e=_eventData[d][b],0===e.length&&(e[0]=function(b){var c=b?new KEvent(a,b):undefined;_each(e,function(b,d){b>0&&d&&d.call(a,c)})}),_inArray(c,e)<0&&e.push(c),_bindEvent(a,b,e[0])}function _unbind(a,b,c){if(b&&b.indexOf(",")>=0)return void _each(b.split(","),function(){_unbind(a,this,c)});var d=_getId(a);if(d){if(b===undefined)return void(d in _eventData&&(_each(_eventData[d],function(b,c){"el"!=b&&c.length>0&&_unbindEvent(a,b,c[0])}),delete _eventData[d],_removeId(a)));if(_eventData[d]){var e=_eventData[d][b];if(e&&e.length>0){c===undefined?(_unbindEvent(a,b,e[0]),delete _eventData[d][b]):(_each(e,function(a,b){a>0&&b===c&&e.splice(a,1)}),1==e.length&&(_unbindEvent(a,b,e[0]),delete _eventData[d][b]));var f=0;_each(_eventData[d],function(){f++}),2>f&&(delete _eventData[d],_removeId(a))}}}}function _fire(a,b){if(b.indexOf(",")>=0)return void _each(b.split(","),function(){_fire(a,this)});var c=_getId(a);if(c){var d=_eventData[c][b];_eventData[c]&&d&&d.length>0&&d[0]()}}function _ctrl(a,b,c){b=/^\d{2,}$/.test(b)?b:b.toUpperCase().charCodeAt(0),_bind(a,"keydown",function(d){!d.ctrlKey||d.which!=b||d.shiftKey||d.altKey||(c.call(a),d.stop())})}function _ready(a){function b(){e||(e=!0,a(KindEditor),_readyFinished=!0)}function c(){if(!e){try{document.documentElement.doScroll("left")}catch(a){return void setTimeout(c,100)}b()}}function d(){"complete"===document.readyState&&b()}if(_readyFinished)return void a(KindEditor);var e=!1;if(document.addEventListener)_bind(document,"DOMContentLoaded",b);else if(document.attachEvent){_bind(document,"readystatechange",d);var f=!1;try{f=null==window.frameElement}catch(g){}document.documentElement.doScroll&&f&&c()}_bind(window,"load",b)}function _getCssList(a){a=a.replace(/"/g,'"');for(var b,c={},d=/\s*([\w\-]+)\s*:([^;]*)(;|$)/g;b=d.exec(a);){var e=_trim(b[1].toLowerCase()),f=_trim(_toHex(b[2]));c[e]=f}return c}function _getAttrList(a){for(var b,c={},d=/\s+(?:([\w\-:]+)|(?:([\w\-:]+)=([^\s"'<>]+))|(?:([\w\-:"]+)="([^"]*)")|(?:([\w\-:"]+)='([^']*)'))(?=(?:\s|\/|>)+)/g;b=d.exec(a);){var e=(b[1]||b[2]||b[4]||b[6]).toLowerCase(),f=(b[2]?b[3]:b[4]?b[5]:b[7])||"";c[e]=f}return c}function _addClassToTag(a,b){return a=/\s+class\s*=/.test(a)?a.replace(/(\s+class=["']?)([^"']*)(["']?[\s>])/,function(a,c,d,e){return(" "+d+" ").indexOf(" "+b+" ")<0?""===d?c+b+e:c+d+" "+b+e:a}):a.substr(0,a.length-1)+' class="'+b+'">'}function _formatCss(a){var b="";return _each(_getCssList(a),function(a,c){b+=a+":"+c+";"}),b}function _formatUrl(a,b,c,d){function e(a){for(var b=a.split("/"),c=[],d=0,e=b.length;e>d;d++){var f=b[d];".."==f?c.length>0&&c.pop():""!==f&&"."!=f&&c.push(f)}return"/"+c.join("/")}function f(b,c){if(a.substr(0,b.length)===b){for(var e=[],g=0;c>g;g++)e.push("..");var i=".";return e.length>0&&(i+="/"+e.join("/")),"/"==d&&(i+="/"),i+a.substr(b.length)}return(h=/^(.*)\//.exec(b))?f(h[1],++c):void 0}if(b=_undef(b,"").toLowerCase(),"data:"!=a.substr(0,5)&&(a=a.replace(/([^:])\/\//g,"$1/")),_inArray(b,["absolute","relative","domain"])<0)return a;if(c=c||location.protocol+"//"+location.host,d===undefined){var g=location.pathname.match(/^(\/.*)\//);d=g?g[1]:""}var h;if(h=/^(\w+:\/\/[^\/]*)/.exec(a)){if(h[1]!==c)return a}else if(/^\w+:/.test(a))return a;return/^\//.test(a)?a=c+e(a.substr(1)):/^\w+:\/\//.test(a)||(a=c+e(d+"/"+a)),"relative"===b?a=f(c+d,0).substr(2):"absolute"===b&&a.substr(0,c.length)===c&&(a=a.substr(c.length)),a}function _formatHtml(a,b,c,d,e){null==a&&(a=""),c=c||"",d=_undef(d,!1),e=_undef(e," ");var f="xx-small,x-small,small,medium,large,x-large,xx-large".split(",");a=a.replace(/(<(?:pre|pre\s[^>]*)>)([\s\S]*?)(<\/pre>)/gi,function(a,b,c,d){return b+c.replace(/<(?:br|br\s[^>]*)>/gi,"\n")+d}),a=a.replace(/<(?:br|br\s[^>]*)\s*\/?>\s*<\/p>/gi,"

"),a=a.replace(/(<(?:p|p\s[^>]*)>)\s*(<\/p>)/gi,"$1
$2"),a=a.replace(/\u200B/g,""),a=a.replace(/\u00A9/g,"©"),a=a.replace(/\u00AE/g,"®"),a=a.replace(/\u2003/g," "),a=a.replace(/\u3000/g," "),a=a.replace(/<[^>]+/g,function(a){return a.replace(/\s+/g," ")});var g={};b&&(_each(b,function(a,b){for(var c=a.split(","),d=0,e=c.length;e>d;d++)g[c[d]]=_toMap(b)}),g.script||(a=a.replace(/(<(?:script|script\s[^>]*)>)([\s\S]*?)(<\/script>)/gi,"")),g.style||(a=a.replace(/(<(?:style|style\s[^>]*)>)([\s\S]*?)(<\/style>)/gi,"")));var h=/(\s*)<(\/)?([\w\-:]+)((?:\s+|(?:\s+[\w\-:]+)|(?:\s+[\w\-:]+=[^\s"'<>]+)|(?:\s+[\w\-:"]+="[^"]*")|(?:\s+[\w\-:"]+='[^']*'))*)(\/)?>(\s*)/g,i=[];return a=a.replace(h,function(a,h,j,k,l,m,n){var o=a,p=h||"",q=j||"",r=k.toLowerCase(),s=l||"",t=m?" "+m:"",u=n||"";if("code"==r)return o;if(b&&!g[r])return"";if(""===t&&_SINGLE_TAG_MAP[r]&&(t=" /"),_INLINE_TAG_MAP[r]&&(p&&(p=" "),u&&(u=" ")),_PRE_TAG_MAP[r]&&(q?u="\n":p="\n"),d&&"br"==r&&(u="\n"),_BLOCK_TAG_MAP[r]&&!_PRE_TAG_MAP[r])if(d){q&&i.length>0&&i[i.length-1]===r?i.pop():i.push(r),p="\n",u="\n";for(var v=0,w=q?i.length:i.length-1;w>v;v++)p+=e,q||(u+=e);t?i.pop():q||(u+=e)}else p=u="";if(""!==s){var x=_getAttrList(o);if("font"===r){var y={},z="";_each(x,function(a,b){"color"===a&&(y.color=b,delete x[a]),"size"===a&&(y["font-size"]=f[parseInt(b,10)-1]||"",delete x[a]),"face"===a&&(y["font-family"]=b,delete x[a]),"style"===a&&(z=b)}),z&&!/;$/.test(z)&&(z+=";"),_each(y,function(a,b){""!==b&&(/\s/.test(b)&&(b="'"+b+"'"),z+=a+":"+b+";")}),x.style=z}_each(x,function(a,d){if(_FILL_ATTR_MAP[a]&&(x[a]=a),_inArray(a,["src","href"])>=0&&(x[a]=_formatUrl(d,c)),(b&&"style"!==a&&!g[r]["*"]&&!g[r][a]||"body"===r&&"contenteditable"===a||/^kindeditor_\d+$/.test(a))&&delete x[a],"style"===a&&""!==d){var e=_getCssList(d);_each(e,function(a,c){!b||g[r].style||g[r]["."+a]||delete e[a]});var f="";_each(e,function(a,b){f+=a+":"+b+";"}),x.style=f}}),s="",_each(x,function(a,b){("style"!==a||""!==b)&&(b=b.replace(/"/g,"""),s+=" "+a+'="'+b+'"')})}return"font"===r&&(r="span"),p+"<"+q+r+s+t+">"+u}),a=a.replace(/(<(?:pre|pre\s[^>]*)>)([\s\S]*?)(<\/pre>)/gi,function(a,b,c,d){return b+c.replace(/\n/g,'\n')+d}),a=a.replace(/\n\s*\n/g,"\n"),a=a.replace(/\n/g,"\n"),_trim(a)}function _clearMsWord(a,b){return a=a.replace(//gi,"").replace(//gi,"").replace(/]*>[\s\S]*?<\/style>/gi,"").replace(/]*>[\s\S]*?<\/script>/gi,"").replace(/]+>[\s\S]*?<\/w:[^>]+>/gi,"").replace(/]+>[\s\S]*?<\/o:[^>]+>/gi,"").replace(/[\s\S]*?<\/xml>/gi,"").replace(/<(?:table|td)[^>]*>/gi,function(a){return a.replace(/border-bottom:([#\w\s]+)/gi,"border:$1")}),_formatHtml(a,b)}function _mediaType(a){return/\.(rm|rmvb)(\?|$)/i.test(a)?"audio/x-pn-realaudio-plugin":/\.(swf|flv)(\?|$)/i.test(a)?"application/x-shockwave-flash":"video/x-ms-asf-plugin"}function _mediaClass(a){return/realaudio/i.test(a)?"ke-rm":/flash/i.test(a)?"ke-flash":"ke-media"}function _mediaAttrs(a){return _getAttrList(unescape(a))}function _mediaEmbed(a){var b="0&&(g+="width:"+c+"px;"),/\D/.test(d)?g+="height:"+d+";":d>0&&(g+="height:"+d+"px;");var h=''}function _tmpl(a,b){var c=new Function("obj","var p=[],print=function(){p.push.apply(p,arguments);};with(obj){p.push('"+a.replace(/[\r\t\n]/g," ").split("<%").join(" ").replace(/((^|%>)[^\t]*)'/g,"$1\r").replace(/\t=(.*?)%>/g,"',$1,'").split(" ").join("');").split("%>").join("p.push('").split("\r").join("\\'")+"');}return p.join('');");return b?c(b):c}function _contains(a,b){if(9==a.nodeType&&9!=b.nodeType)return!0;for(;b=b.parentNode;)if(b==a)return!0;return!1}function _getAttr(a,b){b=b.toLowerCase();var c=null;if(_GET_SET_ATTRIBUTE||"script"==a.nodeName.toLowerCase())try{c=a.getAttribute(b,2)}catch(d){c=a.getAttribute(b,1)}else{var e=a.ownerDocument.createElement("div");e.appendChild(a.cloneNode(!1));var f=_getAttrList(_unescape(e.innerHTML));b in f&&(c=f[b])}return"style"===b&&null!==c&&(c=_formatCss(c)),c}function _queryAll(a,b){function c(a){return"string"!=typeof a?a:a.replace(/([^\w\-])/g,"\\$1")}function d(a){return a.replace(/\\/g,"")}function e(a,b){return"*"===a||a.toLowerCase()===c(b.toLowerCase())}function f(a,b,c){var f=[],g=c.ownerDocument||c,h=g.getElementById(d(a));return h&&e(b,h.nodeName)&&_contains(c,h)&&f.push(h),f}function g(a,b,c){var f,g,h,i,j=c.ownerDocument||c,k=[];if(c.getElementsByClassName)for(f=c.getElementsByClassName(d(a)),g=0,h=f.length;h>g;g++)i=f[g],e(b,i.nodeName)&&k.push(i);else if(j.querySelectorAll)for(f=j.querySelectorAll(("#document"!==c.nodeName?c.nodeName+" ":"")+b+"."+a),g=0,h=f.length;h>g;g++)i=f[g],_contains(c,i)&&k.push(i);else for(f=c.getElementsByTagName(b),a=" "+a+" ",g=0,h=f.length;h>g;g++)if(i=f[g],1==i.nodeType){var l=i.className;l&&(" "+l+" ").indexOf(a)>-1&&k.push(i)}return k}function h(a,b,c){for(var f,g=[],h=c.ownerDocument||c,i=h.getElementsByName(d(a)),j=0,k=i.length;k>j;j++)f=i[j],e(b,f.nodeName)&&_contains(c,f)&&null!==f.getAttribute("name")&&g.push(f);return g}function i(a,b,d,e){for(var f,g=[],h=e.getElementsByTagName(d),i=0,j=h.length;j>i;i++)f=h[i],1==f.nodeType&&(null===b?null!==_getAttr(f,a)&&g.push(f):b===c(_getAttr(f,a))&&g.push(f));return g}function j(a,b){var c,d=[];c=/^((?:\\.|[^.#\s\[<>])+)/.exec(a);var e=c?c[1]:"*";if(c=/#((?:[\w\-]|\\.)+)$/.exec(a))d=f(c[1],e,b);else if(c=/\.((?:[\w\-]|\\.)+)$/.exec(a))d=g(c[1],e,b);else if(c=/\[((?:[\w\-]|\\.)+)\]/.exec(a))d=i(c[1].toLowerCase(),null,e,b);else if(c=/\[((?:[\w\-]|\\.)+)\s*=\s*['"]?((?:\\.|[^'"]+)+)['"]?\]/.exec(a)){var j=c[1].toLowerCase(),k=c[2];d="id"===j?f(k,e,b):"class"===j?g(k,e,b):"name"===j?h(k,e,b):i(j,k,e,b)}else for(var l,m=b.getElementsByTagName(e),n=0,o=m.length;o>n;n++)l=m[n],1==l.nodeType&&d.push(l);return d}var k=a.split(",");if(k.length>1){var l=[];return _each(k,function(){_each(_queryAll(this,b),function(){_inArray(this,l)<0&&l.push(this)})}),l}b=b||document;for(var m,n=[],o=/((?:\\.|[^\s>])+|[\s>])/g;m=o.exec(a);)" "!==m[1]&&n.push(m[1]);var p=[];if(1==n.length)return j(n[0],b);var q,r,s,t,u,v,w,x,y,z,A=!1;for(v=0,lenth=n.length;v"!==q){if(v>0){for(r=[],w=0,y=p.length;y>w;w++)for(t=p[w],s=j(q,t),x=0,z=s.length;z>x;x++)u=s[x],A?t===u.parentNode&&r.push(u):r.push(u);p=r}else p=j(q,b);if(0===p.length)return[]}else A=!0;return p}function _query(a,b){var c=_queryAll(a,b);return c.length>0?c[0]:null}function _get(a){return K(a)[0]}function _getDoc(a){return a?a.ownerDocument||a.document||a:document}function _getWin(a){if(!a)return window;var b=_getDoc(a);return b.parentWindow||b.defaultView}function _setHtml(a,b){if(1==a.nodeType){var c=_getDoc(a);try{a.innerHTML=''+b;var d=c.getElementById("__kindeditor_temp_tag__");d.parentNode.removeChild(d)}catch(e){K(a).empty(),K("@"+b,c).each(function(){a.appendChild(this)})}}}function _hasClass(a,b){return _inString(b,a.className," ")}function _setAttr(a,b,c){_IE&&8>_V&&"class"==b.toLowerCase()&&(b="className"),a.setAttribute(b,""+c)}function _removeAttr(a,b){_IE&&8>_V&&"class"==b.toLowerCase()&&(b="className"),_setAttr(a,b,""),a.removeAttribute(b)}function _getNodeName(a){return a&&a.nodeName?a.nodeName.toLowerCase():""}function _computedCss(a,b){var c=_getWin(a),d=_toCamel(b),e="";if(c.getComputedStyle){var f=c.getComputedStyle(a,null);e=f[d]||f.getPropertyValue(b)||a.style[d]}else a.currentStyle&&(e=a.currentStyle[d]||a.style[d]);return e}function _hasVal(a){return!!_VALUE_TAG_MAP[_getNodeName(a)]}function _docElement(a){return a=a||document,_QUIRKS?a.body:a.documentElement}function _docHeight(a){var b=_docElement(a);return Math.max(b.scrollHeight,b.clientHeight)}function _docWidth(a){var b=_docElement(a);return Math.max(b.scrollWidth,b.clientWidth)}function _getScrollPos(a){a=a||document;var b,c;return _IE||_NEWIE||_OPERA?(b=_docElement(a).scrollLeft,c=_docElement(a).scrollTop):(b=_getWin(a).scrollX,c=_getWin(a).scrollY),{x:b,y:c}}function KNode(a){this.init(a)}function _updateCollapsed(a){return a.collapsed=a.startContainer===a.endContainer&&a.startOffset===a.endOffset,a}function _copyAndDelete(a,b,c){function d(d,e,f){var g,i=d.nodeValue.length;if(b){var j=d.cloneNode(!0);g=e>0?j.splitText(e):j,i>f&&g.splitText(f-e)}if(c){var k=d;if(e>0&&(k=d.splitText(e),a.setStart(d,e)),i>f){var l=k.splitText(f-e);a.setEnd(l,0)}h.push(k)}return g}function e(){c&&a.up().collapse(!0);for(var b=0,d=h.length;d>b;b++){var e=h[b];e.parentNode&&e.parentNode.removeChild(e)}}function f(e,n){for(var o,p=e.firstChild;p;){var q=new KRange(g).selectNode(p);if(j=q.compareBoundaryPoints(_START_TO_END,a),j>=0&&0>=k&&(k=q.compareBoundaryPoints(_START_TO_START,a)),k>=0&&0>=l&&(l=q.compareBoundaryPoints(_END_TO_END,a)),l>=0&&0>=m&&(m=q.compareBoundaryPoints(_END_TO_START,a)),m>=0)return!1;if(o=p.nextSibling,j>0)if(1==p.nodeType)if(k>=0&&0>=l)b&&n.appendChild(p.cloneNode(!0)),c&&h.push(p);else{var r;if(b&&(r=p.cloneNode(!1),n.appendChild(r)),f(p,r)===!1)return!1}else if(3==p.nodeType){var s;if(s=p==i.startContainer?d(p,i.startOffset,p.nodeValue.length):p==i.endContainer?d(p,0,i.endOffset):d(p,0,p.nodeValue.length),b)try{n.appendChild(s)}catch(t){}}p=o}}var g=a.doc,h=[],i=a.cloneRange().down(),j=-1,k=-1,l=-1,m=-1,n=a.commonAncestor(),o=g.createDocumentFragment();if(3==n.nodeType){var p=d(n,a.startOffset,a.endOffset);return b&&o.appendChild(p),e(),b?o:a}f(n,o),c&&a.up().collapse(!0);for(var q=0,r=h.length;r>q;q++){var s=h[q];s.parentNode&&s.parentNode.removeChild(s)}return b?o:a}function _moveToElementText(a,b){for(var c=b;c;){var d=K(c);if("marquee"==d.name||"select"==d.name)return;c=c.parentNode}try{a.moveToElementText(b)}catch(e){}}function _getStartEnd(a,b){var c=a.parentElement().ownerDocument,d=a.duplicate();d.collapse(b);var e=d.parentElement(),f=e.childNodes;if(0===f.length)return{node:e.parentNode,offset:K(e).index()};var g=c,h=0,i=-1,j=a.duplicate();_moveToElementText(j,e);for(var k=0,l=f.length;l>k;k++){var m=f[k];if(i=j.compareEndPoints("StartToStart",d),0===i)return{node:m.parentNode,offset:k};if(1==m.nodeType){var n,o=a.duplicate(),p=K(m),q=m;p.isControl()&&(n=c.createElement("span"),p.after(n),q=n,h+=p.text().replace(/\r\n|\n|\r/g,"").length),_moveToElementText(o,q),j.setEndPoint("StartToEnd",o),i>0?h+=o.text.replace(/\r\n|\n|\r/g,"").length:h=0,n&&K(n).remove()}else 3==m.nodeType&&(j.moveStart("character",m.nodeValue.length),h+=m.nodeValue.length);0>i&&(g=m)}if(0>i&&1==g.nodeType)return{node:e,offset:K(e.lastChild).index()+1};if(i>0)for(;g.nextSibling&&1==g.nodeType;)g=g.nextSibling;if(j=a.duplicate(),_moveToElementText(j,e),j.setEndPoint("StartToEnd",d),h-=j.text.replace(/\r\n|\n|\r/g,"").length,i>0&&3==g.nodeType)for(var r=g.previousSibling;r&&3==r.nodeType;)h-=r.nodeValue.length,r=r.previousSibling;return{node:g,offset:h}}function _getEndRange(a,b){var c=a.ownerDocument||a,d=c.body.createTextRange();if(c==a)return d.collapse(!0),d;if(1==a.nodeType&&a.childNodes.length>0){var e,f,g=a.childNodes;if(0===b?(f=g[0],e=!0):(f=g[b-1],e=!1),!f)return d;if("head"===K(f).name)return 1===b&&(e=!0),2===b&&(e=!1),d.collapse(e),d;if(1==f.nodeType){var h,i=K(f);return i.isControl()&&(h=c.createElement("span"),e?i.before(h):i.after(h),f=h),_moveToElementText(d,f),d.collapse(e),h&&K(h).remove(),d}a=f,b=e?0:f.nodeValue.length}var j=c.createElement("span");return K(a).before(j),_moveToElementText(d,j),d.moveStart("character",b),K(j).remove(),d}function _toRange(a){function b(a){"tr"==K(a.node).name&&(a.node=a.node.cells[a.offset],a.offset=0)}var c,d;if(_IERANGE){if(a.item)return c=_getDoc(a.item(0)),d=new KRange(c),d.selectNode(a.item(0)),d;c=a.parentElement().ownerDocument;var e=_getStartEnd(a,!0),f=_getStartEnd(a,!1);return b(e),b(f),d=new KRange(c),d.setStart(e.node,e.offset),d.setEnd(f.node,f.offset),d}var g=a.startContainer;return c=g.ownerDocument||g,d=new KRange(c),d.setStart(g,a.startOffset),d.setEnd(a.endContainer,a.endOffset),d}function KRange(a){this.init(a)}function _range(a){return a.nodeName?new KRange(a):a.constructor===KRange?a:_toRange(a)}function _nativeCommand(a,b,c){try{a.execCommand(b,!1,c)}catch(d){}}function _nativeCommandValue(a,b){var c="";try{c=a.queryCommandValue(b)}catch(d){}return"string"!=typeof c&&(c=""),c}function _getSel(a){var b=_getWin(a);return _IERANGE?a.selection:b.getSelection()}function _getRng(a){var b,c=_getSel(a);try{b=c.rangeCount>0?c.getRangeAt(0):c.createRange()}catch(d){}return!_IERANGE||b&&(b.item||b.parentElement().ownerDocument===a)?b:null}function _singleKeyMap(a){var b,c,d={};return _each(a,function(a,e){b=a.split(",");for(var f=0,g=b.length;g>f;f++)c=b[f],d[c]=e}),d}function _hasAttrOrCss(a,b){return _hasAttrOrCssByKey(a,b,"*")||_hasAttrOrCssByKey(a,b)}function _hasAttrOrCssByKey(a,b,c){if(c=c||a.name,1!==a.type)return!1;var d=_singleKeyMap(b);if(!d[c])return!1;for(var e=d[c].split(","),f=0,g=e.length;g>f;f++){var h=e[f];if("*"===h)return!0;var i=/^(\.?)([^=]+)(?:=([^=]*))?$/.exec(h),j=i[1]?"css":"attr";h=i[2];var k=i[3]||"";if(""===k&&""!==a[j](h))return!0;if(""!==k&&a[j](h)===k)return!0}return!1}function _removeAttrOrCss(a,b){1==a.type&&(_removeAttrOrCssByKey(a,b,"*"),_removeAttrOrCssByKey(a,b))}function _removeAttrOrCssByKey(a,b,c){if(c=c||a.name,1===a.type){var d=_singleKeyMap(b);if(d[c]){for(var e=d[c].split(","),f=!1,g=0,h=e.length;h>g;g++){var i=e[g];if("*"===i){f=!0;break}var j=/^(\.?)([^=]+)(?:=([^=]*))?$/.exec(i);i=j[2],j[1]?(i=_toCamel(i),a[0].style[i]&&(a[0].style[i]="")):a.removeAttr(i)}f&&a.remove(!0)}}}function _getInnerNode(a){for(var b=a;b.first();)b=b.first();return b}function _isEmptyNode(a){return 1!=a.type||a.isSingle()?!1:""===a.html().replace(/<[^>]+>/g,"")}function _mergeWrapper(a,b){a=a.clone(!0);for(var c=_getInnerNode(a),d=a,e=!1;b;){for(;d;)d.name===b.name&&(_mergeAttrs(d,b.attr(),b.css()),e=!0),d=d.first();e||c.append(b.clone(!1)),e=!1,b=b.first()}return a}function _wrapNode(a,b){if(b=b.clone(!0),3==a.type)return _getInnerNode(b).append(a.clone(!1)),a.replaceWith(b),b;for(var c,d=a;(c=a.first())&&1==c.children().length;)a=c;c=a.first();for(var e=a.doc.createDocumentFragment();c;)e.appendChild(c[0]),c=c.next();return b=_mergeWrapper(d,b),e.firstChild&&_getInnerNode(b).append(e),d.replaceWith(b),b}function _mergeAttrs(a,b,c){_each(b,function(b,c){"style"!==b&&a.attr(b,c)}),_each(c,function(b,c){a.css(b,c)})}function _inPreElement(a){for(;a&&"body"!=a.name;){if(_PRE_TAG_MAP[a.name]||"div"==a.name&&a.hasClass("ke-script"))return!0;a=a.parent()}return!1}function KCmd(a){this.init(a)}function _cmd(a){if(a.nodeName){var b=_getDoc(a);a=_range(b).selectNodeContents(b.body).collapse(!1)}return new KCmd(a)}function _drag(a){var b=a.moveEl,c=a.moveFn,d=a.clickEl||b,e=a.beforeDrag,f=a.iframeFix===undefined?!0:a.iframeFix,g=[document];f&&K("iframe").each(function(){var a=_formatUrl(this.src||"","absolute");if(!/^https?:\/\//.test(a)){var b;try{b=_iframeDoc(this)}catch(c){}if(b){var d=K(this).pos();K(b).data("pos-x",d.x),K(b).data("pos-y",d.y),g.push(b)}}}),d.mousedown(function(a){function f(a){a.preventDefault();var b=K(_getDoc(a.target)),e=_round((b.data("pos-x")||0)+a.pageX-o),f=_round((b.data("pos-y")||0)+a.pageY-p);c.call(d,k,l,m,n,e,f)}function h(a){a.preventDefault()}function i(a){a.preventDefault(),K(g).unbind("mousemove",f).unbind("mouseup",i).unbind("selectstart",h),j.releaseCapture&&j.releaseCapture()}if(0===a.button||1===a.button){a.stopPropagation();var j=d.get(),k=_removeUnit(b.css("left")),l=_removeUnit(b.css("top")),m=b.width(),n=b.height(),o=a.pageX,p=a.pageY;e&&e(),K(g).mousemove(f).mouseup(i).bind("selectstart",h),j.setCapture&&j.setCapture()}})}function KWidget(a){this.init(a)}function _widget(a){return new KWidget(a)}function _iframeDoc(a){return a=_get(a),a.contentDocument||a.contentWindow.document}function _getInitHtml(a){var b=_undef(a.themesPath,""),c=a.bodyClass,d=a.cssPath,e=a.jsPath,f=a.cssData,g=[""===_direction?"":'','',""),_isArray(d)||(d=[d]),_inArray(K.basePath+"themes/app.css",d)<0&&d.push(K.basePath+"themes/app.css"),_each(d,function(a,b){b&&g.push('')}),f&&g.push(""),g.push(""),_isArray(e)||(e=[e]),_each(e,function(a,b){b&&g.push('')}),g.push(""),g.join("\n")}function _elementVal(a,b){if(a.hasVal()){if(b===undefined){var c=a.val();return c=c.replace(/(<(?:p|p\s[^>]*)>) *(<\/p>)/gi,"")}return a.val(b)}return a.html(b)}function KEdit(a){this.init(a)}function _edit(a){return new KEdit(a)}function _selectToolbar(a,b){var c=this,d=c.get(a);if(d){if(d.hasClass("ke-disabled"))return;b(d)}}function KToolbar(a){this.init(a)}function _toolbar(a){return new KToolbar(a)}function KMenu(a){this.init(a)}function _menu(a){return new KMenu(a)}function KColorPicker(a){this.init(a)}function _colorpicker(a){return new KColorPicker(a)}function KUploadButton(a){this.init(a)}function _uploadbutton(a){return new KUploadButton(a)}function _createButton(a){a=a||{};var b=a.name||"",c=K(''+b+"");return a.click&&c.click(a.click),c}function KDialog(a){this.init(a)}function _dialog(a){return new KDialog(a)}function _tabs(a){var b=_widget(a),c=b.remove,d=a.afterSelect,e=b.div,f=[];e.addClass("ke-tabs").bind("contextmenu,mousedown,mousemove",function(a){a.preventDefault()});var g=K('
    ');return e.append(g),b.add=function(a){var b=K('
  • '+a.title+"
  • ");b.data("tab",a),f.push(b),g.append(b)},b.selectedIndex=0,b.select=function(a){b.selectedIndex=a,_each(f,function(c,d){d.unbind(),c===a?(d.addClass("ke-tabs-li-selected"),K(d.data("tab").panel).show("")):(d.removeClass("ke-tabs-li-selected").removeClass("ke-tabs-li-on").mouseover(function(){K(this).addClass("ke-tabs-li-on")}).mouseout(function(){K(this).removeClass("ke-tabs-li-on")}).click(function(){b.select(c)}),K(d.data("tab").panel).hide())}),d&&d.call(b,a)},b.remove=function(){_each(f,function(){this.remove()}),g.remove(),c.call(b)},b}function _loadScript(a,b){if(!K.options.resLoadCache[a]){var c=document.getElementsByTagName("head")[0]||(_QUIRKS?document.body:document.documentElement),d=document.createElement("script");c.appendChild(d),K.options.resLoadCache[a]=1,d.src=a,d.charset="utf-8",d.onload=d.onreadystatechange=function(){this.readyState&&"loaded"!==this.readyState||(b&&b(),d.onload=d.onreadystatechange=null,c.removeChild(d))}}}function _chopQuery(a){var b=a.indexOf("?");return b>0?a.substr(0,b):a}function _loadStyle(a){if(!K.options.resLoadCache[a]){for(var b=document.getElementsByTagName("head")[0]||(_QUIRKS?document.body:document.documentElement),c=document.createElement("link"),d=_chopQuery(_formatUrl(a,"absolute")),e=K('link[rel="stylesheet"]',b),f=0,g=e.length;g>f;f++)if(_chopQuery(_formatUrl(e[f].href,"absolute"))===d)return;b.appendChild(c),K.options.resLoadCache[a]=1,c.href=a,c.rel="stylesheet"}}function _ajax(a,b,c,d,e){c=c||"GET",e=e||"json";var f=window.XMLHttpRequest?new window.XMLHttpRequest:new ActiveXObject("Microsoft.XMLHTTP");if(f.open(c,a,!0),f.onreadystatechange=function(){if(4==f.readyState&&200==f.status&&b){var a=_trim(f.responseText);"json"==e&&(a=_json(a)),b(a)}},"POST"==c){var g=[];_each(d,function(a,b){g.push(encodeURIComponent(a)+"="+encodeURIComponent(b))});try{f.setRequestHeader("Content-Type","application/x-www-form-urlencoded")}catch(h){}f.send(g.join("&"))}else f.send(null)}function _plugin(a,b){return a===undefined?_plugins:b?void(_plugins[a]=b):_plugins[a]}function _parseLangKey(a){var b,c="core";return(b=/^(\w+)\.(\w+)$/.exec(a))&&(c=b[1],a=b[2]),{ns:c,key:a}}function _lang(a,b){if(b=b===undefined?K.options.langType:b,"string"==typeof a){if(!_language[b])return"no language";var c=a.length-1;if("."===a.substr(c))return _language[b][a.substr(0,c)];var d=_parseLangKey(a);return _language[b][d.ns][d.key]}_each(a,function(a,c){var d=_parseLangKey(a);_language[b]||(_language[b]={}),_language[b][d.ns]||(_language[b][d.ns]={}),_language[b][d.ns][d.key]=c})}function _getImageFromRange(a,b){if(!a.collapsed){a=a.cloneRange().up();var c=a.startContainer,d=a.startOffset;if(_WEBKIT||a.isControl()){var e=K(c.childNodes[d]);if(e&&"img"==e.name)return b(e)?e:void 0}}}function _bindContextmenuEvent(){var a=this,b=a.edit.doc;K(b).contextmenu(function(b){if(a.menu&&a.hideMenu(),!a.useContextmenu)return void b.preventDefault();if(0!==a._contextmenus.length){var c=0,d=[];for(_each(a._contextmenus,function(){return"-"==this.title?void d.push(this):void(this.cond&&this.cond()&&(d.push(this),this.width&&this.width>c&&(c=this.width)))});d.length>0&&"-"==d[0].title;)d.shift();for(;d.length>0&&"-"==d[d.length-1].title;)d.pop();var e=null;if(_each(d,function(a){"-"==this.title&&"-"==e.title&&delete d[a],e=this}),d.length>0){b.preventDefault();var f=K(a.edit.iframe).pos(),g=_menu({x:f.x+b.clientX,themeType:a.themeType,y:f.y+b.clientY,width:c,css:{visibility:"hidden"},shadowMode:a.shadowMode});_each(d,function(){this.title&&g.addItem(this)});var h=_docElement(g.doc),i=g.div.height();b.clientY+i>=h.clientHeight-100&&g.pos(g.x,_removeUnit(g.y)-i),g.div.css("visibility","visible"),a.menu=g}}})}function _bindNewlineEvent(){function a(a){for(var b=K(a.commonAncestor());b&&(1!=b.type||b.isStyle());)b=b.parent();return b.name}var b=this,c=b.edit.doc,d=b.newlineTag;if(!(_IE&&"br"!==d||_GECKO&&3>_V&&"p"!==d||_OPERA&&9>_V)){var e=_toMap("h1,h2,h3,h4,h5,h6,pre,li"),f=_toMap("p,h1,h2,h3,h4,h5,h6,pre,li,blockquote");K(c).keydown(function(g){if(39!=g.which){if(!(13!=g.which||g.shiftKey||g.ctrlKey||g.altKey)){b.cmd.selection();var h=a(b.cmd.range);if("marquee"!=h&&"select"!=h)return"br"!==d||e[h]?void(f[h]||_nativeCommand(c,"formatblock","

    ")):(g.preventDefault(),void b.insertHtml("
    "+(_IE&&9>_V?"":"​")))}}else if(b.__startOffset==b.cmd.range.startOffset){var h=a(b.cmd.range);"body"!=h&&b.appendHtml("
    ")}else b.__startOffset=b.cmd.range.startOffset}),K(c).keyup(function(e){if(!(13!=e.which||e.shiftKey||e.ctrlKey||e.altKey)&&"br"!=d){if(_GECKO){var g=b.cmd.commonAncestor("p"),h=b.cmd.commonAncestor("a");return void(h&&""==h.text()&&(h.remove(!0),b.cmd.range.selectNodeContents(g[0]).collapse(!0),b.cmd.select()))}b.cmd.selection();var i=a(b.cmd.range);if("marquee"!=i&&"select"!=i){f[i]||_nativeCommand(c,"formatblock","

    ");var j=b.cmd.commonAncestor("div");if(j){for(var k=K("

    "),l=j[0].firstChild;l;){var m=l.nextSibling;k.append(l),l=m}j.before(k),j.remove(),b.cmd.range.selectNodeContents(k[0]),b.cmd.select()}}}})}}function _bindTabEvent(){var a=this,b=a.edit.doc;K(b).keydown(function(c){if(9==c.which){if(c.preventDefault(),a.afterTab)return void a.afterTab.call(a,c); +var d=a.cmd,e=d.range;e.shrink(),e.collapsed&&1==e.startContainer.nodeType&&(e.insertNode(K("@ ",b)[0]),d.select()),a.insertHtml("    ")}})}function _bindFocusEvent(){var a=this;K(a.edit.textarea[0],a.edit.win).focus(function(b){a.afterFocus&&a.afterFocus.call(a,b)}).blur(function(b){a.afterBlur&&a.afterBlur.call(a,b)})}function _removeBookmarkTag(a){return _trim(a.replace(/]*id="?__kindeditor_bookmark_\w+_\d+__"?[^>]*><\/span>/gi,""))}function _removeTempTag(a){return a.replace(/]+class="?__kindeditor_paste__"?[^>]*>[\s\S]*?<\/div>/gi,"")}function _addBookmarkToStack(a,b){if(0===a.length)return void a.push(b);var c=a[a.length-1];_removeBookmarkTag(b.html)!==_removeBookmarkTag(c.html)&&a.push(b)}function _undoToRedo(a,b){var c,d,e=this,f=e.edit,g=f.doc.body;if(0===a.length)return e;f.designMode?(c=e.cmd.range,d=c.createBookmark(!0),d.html=g.innerHTML):d={html:g.innerHTML},_addBookmarkToStack(b,d);var h=a.pop();return _removeBookmarkTag(d.html)===_removeBookmarkTag(h.html)&&a.length>0&&(h=a.pop()),f.designMode?(f.html(h.html),h.start&&(c.moveToBookmark(h),e.select())):K(g).html(_removeBookmarkTag(h.html)),e}function KEditor(a){function b(a,b){KEditor.prototype[a]===undefined&&(c[a]=b),c.options[a]=b}var c=this;c.options={},_each(a,function(c,d){b(c,a[c])}),_each(K.options,function(a,d){c[a]===undefined&&b(a,d)});var d=K(c.srcElement||"').css("width","100%"),c.tabIndex=isNaN(parseInt(a.tabIndex,10))?c.srcElement.attr("tabindex"):parseInt(a.tabIndex,10),c.iframe.attr("tabindex",c.tabIndex),c.textarea.attr("tabindex",c.tabIndex),c.width&&c.setWidth(c.width),c.height&&c.setHeight(c.height),c.designMode?c.textarea.hide():c.iframe.hide(),d&&c.iframe.bind("load",function(a){c.iframe.unbind("load"),_IE?b():setTimeout(b,0)}),c.div.append(c.iframe),c.div.append(c.textarea),c.srcElement.hide(),!d&&b()},setWidth:function(a){var b=this;return a=_addUnit(a),b.width=a,b.div.css("width",a),b},setHeight:function(a){var b=this;return a=_addUnit(a),b.height=a,b.div.css("height",a),b.iframe.css("height",a),(_IE&&8>_V||_QUIRKS)&&(a=_addUnit(_removeUnit(a)-2)),b.textarea.css("height",a),b},remove:function(){var a=this,b=a.doc;K(b.body).unbind(),K(b).unbind(),K(a.win).unbind(),a._mousedownHandler&&K(document).unbind("mousedown",a._mousedownHandler),_elementVal(a.srcElement,a.html()),a.srcElement.show(),a.iframe.unbind(),a.textarea.unbind(),KEdit.parent.remove.call(a)},html:function(a,b){var c=this,d=c.doc;if(c.designMode){var e=d.body;return a===undefined?(a=b?""+e.parentNode.innerHTML+"":e.innerHTML,c.beforeGetHtml&&(a=c.beforeGetHtml(a)),_GECKO&&"
    "==a&&(a=""),a):(c.beforeSetHtml&&(a=c.beforeSetHtml(a)),_IE&&_V>=9&&(a=a.replace(/(<.*?checked=")checked(".*>)/gi,"$1$2")),K(e).html(a),c.afterSetHtml&&c.afterSetHtml(),c)}return a===undefined?c.textarea.val():(c.textarea.val(a),c)},design:function(a){var b,c=this;if(a===undefined?!c.designMode:a){if(!c.designMode){b=c.html(),c.designMode=!0,c.textarea.hide(),c.html(b);var d=c.iframe,e=_removeUnit(c.height);d.height(e-2),d.show(),setTimeout(function(){d.height(e)},0)}}else c.designMode&&(b=c.html(),c.designMode=!1,c.html(b),c.iframe.hide(),c.textarea.show());return c.focus()},focus:function(){var a=this;return a.designMode?a.win.focus():a.textarea[0].focus(),a},blur:function(){var a=this;if(_IE){var b=K('',a.div);a.div.append(b),b[0].focus(),b.remove()}else a.designMode?a.win.blur():a.textarea[0].blur();return a},afterChange:function(a){function b(b){setTimeout(function(){a(b)},1)}var c=this,d=c.doc,e=d.body;return K(d).keyup(function(b){b.ctrlKey||b.altKey||!_CHANGE_KEY_MAP[b.which]||a(b)}),K(d).mouseup(a).contextmenu(a),K(c.win).blur(a),K(e).bind("paste",b),K(e).bind("cut",b),c}}),K.EditClass=KEdit,K.edit=_edit,K.iframeDoc=_iframeDoc,_extend(KToolbar,KWidget,{init:function(a){function b(a){var b=K(a);return b.hasClass("ke-outline")?b:b.hasClass("ke-toolbar-icon")?b.parent():void 0}function c(a,c){var d=b(a.target);if(d){if(d.hasClass("ke-disabled"))return;if(d.hasClass("ke-selected"))return;d[c]("ke-on")}}var d=this;KToolbar.parent.init.call(d,a),d.disableMode=_undef(a.disableMode,!1),d.noDisableItemMap=_toMap(_undef(a.noDisableItems,[])),d._itemMap={},d.div.addClass("ke-toolbar").bind("contextmenu,mousedown,mousemove",function(a){a.preventDefault()}).attr("unselectable","on"),d.div.mouseover(function(a){c(a,"addClass")}).mouseout(function(a){c(a,"removeClass")}).click(function(a){var c=b(a.target);if(c){if(c.hasClass("ke-disabled"))return;d.options.click.call(this,a,c.attr("data-name"))}})},get:function(a){return this._itemMap[a]?this._itemMap[a]:this._itemMap[a]=K("span.ke-icon-"+a,this.div).parent()},select:function(a){return _selectToolbar.call(this,a,function(a){a.addClass("ke-selected")}),self},unselect:function(a){return _selectToolbar.call(this,a,function(a){a.removeClass("ke-selected").removeClass("ke-on")}),self},enable:function(a){var b=this,c=a.get?a:b.get(a);return c&&(c.removeClass("ke-disabled"),c.opacity(1)),b},disable:function(a){var b=this,c=a.get?a:b.get(a);return c&&(c.removeClass("ke-selected").addClass("ke-disabled"),c.opacity(.5)),b},disableAll:function(a,b){var c=this,d=c.noDisableItemMap;return b&&(d=_toMap(b)),(a===undefined?!c.disableMode:a)?(K("span.ke-outline",c.div).each(function(){var a=K(this),b=a[0].getAttribute("data-name",2);d[b]||c.disable(a)}),c.disableMode=!0):(K("span.ke-outline",c.div).each(function(){var a=K(this),b=a[0].getAttribute("data-name",2);d[b]||c.enable(a)}),c.disableMode=!1),c}}),K.ToolbarClass=KToolbar,K.toolbar=_toolbar,_extend(KMenu,KWidget,{init:function(a){var b=this;a.z=a.z||811213,KMenu.parent.init.call(b,a),b.centerLineMode=_undef(a.centerLineMode,!0),b.div.addClass("ke-menu ke-menu-"+a.themeType).bind("click,mousedown",function(a){a.stopPropagation()}).attr("unselectable","on")},addItem:function(a){var b=this;if("-"===a.title)return void b.div.append(K('
    '));var c=K('
    '),d=K('
    '),e=K('
    '),f=_addUnit(a.height),g=_undef(a.iconClass,"");b.div.append(c),f&&(c.css("height",f),e.css("line-height",f));var h;return b.centerLineMode&&(h=K('
    '),f&&h.css("height",f)),c.mouseover(function(a){K(this).addClass("ke-menu-item-on"),h&&h.addClass("ke-menu-item-center-on")}).mouseout(function(a){K(this).removeClass("ke-menu-item-on"),h&&h.removeClass("ke-menu-item-center-on")}).click(function(b){a.click.call(K(this)),b.stopPropagation()}).append(d),h&&c.append(h),c.append(e),a.checked&&(g="ke-icon-checked"),""!==g&&d.html(''),e.html(a.title),b},remove:function(){var a=this;return a.options.beforeRemove&&a.options.beforeRemove.call(a),K(".ke-menu-item",a.div[0]).unbind(),KMenu.parent.remove.call(a),a}}),K.MenuClass=KMenu,K.menu=_menu,_extend(KColorPicker,KWidget,{init:function(a){var b=this;a.z=a.z||811213,KColorPicker.parent.init.call(b,a);var c=a.colors||[["#E53333","#E56600","#FF9900","#64451D","#DFC5A4","#FFE500"],["#009900","#006600","#99BB00","#B8D100","#60D978","#00D5FF"],["#337FE5","#003399","#4C33E5","#9933E5","#CC33E5","#EE33EE"],["#FFFFFF","#CCCCCC","#999999","#666666","#333333","#000000"]];b.selectedColor=(a.selectedColor||"").toLowerCase(),b._cells=[],b.div.addClass("ke-colorpicker").bind("click,mousedown",function(a){a.stopPropagation()}).attr("unselectable","on");var d=b.doc.createElement("table");b.div.append(d),d.className="ke-colorpicker-table",d.cellPadding=0,d.cellSpacing=0,d.border=0;var e=d.insertRow(0),f=e.insertCell(0);f.colSpan=c[0].length,b._addAttr(f,"","ke-colorpicker-cell-top");for(var g=0;g').css("background-color",b)):a.html(d.options.noColor),K(a).attr("unselectable","on"),d._cells.push(a)},remove:function(){var a=this;return _each(a._cells,function(){this.unbind()}),KColorPicker.parent.remove.call(a),a}}),K.ColorPickerClass=KColorPicker,K.colorpicker=_colorpicker,_extend(KUploadButton,{init:function(a){var b=this,c=K(a.button),d=a.fieldName||"file",e=a.url||"",f=c.val(),g=a.extraParams||{},h=c[0].className||"",i=a.target||"kindeditor_upload_iframe_"+(new Date).getTime();a.afterError=a.afterError||function(a){K.options.errorMsgHandler(a,"error")};var j=[];for(var k in g)j.push('');var l=['
    ',a.target?"":'',a.form?'
    ':'
    ','',j.join(""),'',"",'',a.form?"
    ":"","
    "].join(""),m=K(l,c.doc);c.hide(),c.before(m),b.div=m,b.button=c,b.iframe=a.target?K('iframe[name="'+i+'"]'):K("iframe",m),b.form=a.form?K(a.form):K("form",m),b.fileBox=K(".ke-upload-file",m);var n=a.width||K(".ke-button-common",m).width();K(".ke-upload-area",m).width(n),b.options=a},submit:function(){var a=this,b=a.iframe;return b.bind("load",function(){b.unbind();var c=document.createElement("form");a.fileBox.before(c),K(c).append(a.fileBox),c.reset(),K(c).remove(!0);var d,e=K.iframeDoc(b),f=e.getElementsByTagName("pre")[0],g="";g=f?f.innerHTML:e.body.innerHTML,g=_unescape(g),b[0].src="javascript:false";try{d=K.json(g)}catch(h){a.options.afterError.call(a,""+e.body.parentNode.innerHTML+"")}d&&a.options.afterUpload.call(a,d)}),a.form[0].submit(),a},remove:function(){var a=this;return a.fileBox&&a.fileBox.unbind(),a.iframe.remove(),a.div.remove(),a.button.show(),a}}),K.UploadButtonClass=KUploadButton,K.uploadbutton=_uploadbutton,_extend(KDialog,KWidget,{init:function(a){var b=this;a.z=a.z||811213,a.shadowMode=!1,a.autoScroll=_undef(a.autoScroll,!0),KDialog.parent.init.call(b,a);var c=a.title,d=K(a.body,b.doc),e=a.previewBtn,f=a.yesBtn,g=a.noBtn,h=a.closeBtn,i=_undef(a.showMask,!0);b.div.addClass("ke-dialog ke-animated").bind("click,mousedown",function(a){a.stopPropagation()});var j=K('
    ').appendTo(b.div),k=K('
    ');j.append(k),k.html(c),b.closeIcon=K('').click(h.click),k.append(b.closeIcon),b.draggable({clickEl:k,beforeDrag:a.beforeDrag});var l=K('
    ');j.append(l),l.append(d);var m=K('');if((e||f||g)&&(b.div.append(m),j.height(b.div.height()-m.height())),_each([{btn:e,name:"preview"},{btn:f,name:"yes"},{btn:g,name:"no"}],function(){if(this.btn){var a=_createButton(this.btn);a.addClass("ke-dialog-"+this.name),m.append(a)}}),b.height&&l.height(_removeUnit(b.height)-k.height()-m.height()),b.div.width(b.div.width()),b.div.height(b.div.height()),b.mask=null,i){var n=_docElement(b.doc),o=Math.max(n.scrollWidth,n.clientWidth),p=Math.max(n.scrollHeight,n.clientHeight);b.mask=_widget({x:0,y:0,z:b.z-1,cls:"ke-dialog-mask",width:o,height:p})}b.autoPos(b.div.width(),b.div.height()),b.footerDiv=m,b.bodyDiv=l,b.headerDiv=k,b.isLoading=!1},setMaskIndex:function(a){var b=this;b.mask.div.css("z-index",a)},showLoading:function(a){a=_undef(a,"");var b=this,c=b.bodyDiv;return b.loading=K('
    '+a+"
    ").width(c.width()).height(c.height()).css("top",b.headerDiv.height()+"px"),c.css("visibility","hidden").after(b.loading),b.isLoading=!0,b},hideLoading:function(){return this.loading&&this.loading.remove(),this.bodyDiv.css("visibility","visible"),this.isLoading=!1,this},remove:function(){var a=this;return a.options.beforeRemove&&a.options.beforeRemove.call(a),a.mask&&a.mask.remove(),a.iframeMask&&a.iframeMask.remove(),a.closeIcon.unbind(),K("input",a.div).unbind(),K("button",a.div).unbind(),a.footerDiv.unbind(),a.bodyDiv.unbind(),a.headerDiv.unbind(),K("iframe",a.div).each(function(){K(this).remove()}),KDialog.parent.remove.call(a),a}}),K.DialogClass=KDialog,K.dialog=_dialog,K.tabs=_tabs,K.loadScript=_loadScript,K.loadStyle=_loadStyle,K.ajax=_ajax;var _plugins={},_language={};KEditor.prototype={lang:function(a){return _lang(a,this.langType)},loadPlugin:function(a,b){var c=this,d=this._pluginStatus;return d||(d=this._pluginStatus={}),_plugins[a]?_isFunction(_plugins[a])?(d[a]||(_plugins[a].call(c,KindEditor),d[a]="inited"),b&&b.call(c),c):(setTimeout(function(){c.loadPlugin(a,b)},100),c):(_plugins[a]="loading",_loadScript(c.pluginsPath+a+"/"+a+".js?ver="+encodeURIComponent(K.DEBUG?_TIME:_VERSION),function(){setTimeout(function(){_plugins[a]&&c.loadPlugin(a,b)},0)}),c)},handler:function(a,b){var c=this;return c._handlers[a]||(c._handlers[a]=[]),_isFunction(b)?(c._handlers[a].push(b),c):(_each(c._handlers[a],function(){b=this.call(c,b)}),b)},clickToolbar:function(a,b){var c=this,d="clickToolbar"+a;return b===undefined?c._handlers[d]?c.handler(d):(c.loadPlugin(a,function(){c.handler(d)}),c):c.handler(d,b)},updateState:function(){var a=this;return _each("justifyleft,justifycenter,justifyright,justifyfull,insertorderedlist,insertunorderedlist,subscript,superscript,bold,italic,underline,strikethrough".split(","),function(b,c){a.cmd.state(c)?a.toolbar.select(c):a.toolbar.unselect(c)}),a},addContextmenu:function(a){return this._contextmenus.push(a),this},afterCreate:function(a){return this.handler("afterCreate",a)},beforeRemove:function(a){return this.handler("beforeRemove",a)},beforeGetHtml:function(a){return this.handler("beforeGetHtml",a)},beforeSetHtml:function(a){return this.handler("beforeSetHtml",a)},afterSetHtml:function(a){return this.handler("afterSetHtml",a)},create:function(){function a(){return 0===i.height()?void setTimeout(a,100):void b.resize(d,e,!1)}var b=this,c=b.fullscreenMode;if(b.isCreated)return b;if(b.srcElement.data("kindeditor"))return b;b.srcElement.data("kindeditor","true"),c?_docElement().style.overflow="hidden":_docElement().style.overflow="";var d=c?_docElement().clientWidth+"px":b.width,e=c?_docElement().clientHeight+"px":b.height;(_IE&&8>_V||_QUIRKS)&&(e=_addUnit(_removeUnit(e)+2));var f=b.container=K(b.layout);c?K(document.body).append(f):b.srcElement.before(f);var g=K(".toolbar",f),h=K(".edit",f),i=b.statusbar=K(".statusbar",f);f.removeClass("container").addClass("ke-container ke-container-"+b.themeType).css("width",d),c?(f.css({position:"absolute",left:0,top:0,"z-index":811211}),_GECKO||(b._scrollPos=_getScrollPos()),window.scrollTo(0,0),K(document.body).css({height:"1px",overflow:"hidden"}),K(document.body.parentNode).css("overflow","hidden"),b._fullscreenExecuted=!0):(b._fullscreenExecuted&&(K(document.body).css({height:"",overflow:""}),K(document.body.parentNode).css("overflow","")),b._scrollPos&&window.scrollTo(b._scrollPos.x,b._scrollPos.y));var j=[];K.each(b.items,function(a,c){"|"==c?j.push(''):"/"==c?j.push('
    '):(j.push(''),j.push(''))});var k=b.toolbar=_toolbar({src:g,html:j.join(""),noDisableItems:b.noDisableItems,click:function(a,c){if(a.stop(),b.menu){var d=b.menu.name;if(b.hideMenu(),d===c)return}b.clickToolbar(c)}}),l=_removeUnit(e)-k.div.height(),m=b.edit=_edit({height:l>0&&_removeUnit(e)>b.minHeight?l:b.minHeight,src:h,srcElement:b.srcElement,designMode:b.designMode,themesPath:b.themesPath,bodyClass:b.bodyClass,cssPath:b.cssPath,jsPath:b.jsPath,showHelpGrid:b.showHelpGrid,cssData:b.cssData,beforeGetHtml:function(a){return a=b.beforeGetHtml(a),a=_removeBookmarkTag(_removeTempTag(a)),_formatHtml(a,b.filterMode?b.htmlTags:null,b.urlType,b.wellFormatMode,b.indentChar)},beforeSetHtml:function(a){return a=_formatHtml(a,b.filterMode?b.htmlTags:null,"",!1),b.beforeSetHtml(a)},afterSetHtml:function(){b.edit=m=this,b.afterSetHtml()},afterCreate:function(){if(b.edit=m=this,b.cmd=m.cmd,b._docMousedownFn=function(a){b.menu&&b.hideMenu()},K(m.doc,document).mousedown(b._docMousedownFn),_bindContextmenuEvent.call(b),_bindNewlineEvent.call(b),_bindTabEvent.call(b),_bindFocusEvent.call(b),m.afterChange(function(a){m.designMode&&(b.updateState(),b.addBookmark(),b.options.afterChange&&b.options.afterChange.call(b))}),m.textarea.keyup(function(a){a.ctrlKey||a.altKey||!_INPUT_KEY_MAP[a.which]||b.options.afterChange&&b.options.afterChange.call(b)}),b.readonlyMode&&b.readonly(),b.isCreated=!0,""===b.initContent&&(b.initContent=b.html()),b._undoStack.length>0){var a=b._undoStack.pop();a.start&&(b.html(a.html),m.cmd.range.moveToBookmark(a),b.select())}b.afterCreate(),b.options.afterCreate&&b.options.afterCreate.call(b)}});return i.removeClass("statusbar").addClass("ke-statusbar").append('').append(''),b._fullscreenResizeHandler&&(K(window).unbind("resize",b._fullscreenResizeHandler),b._fullscreenResizeHandler=null),a(),c?(b._fullscreenResizeHandler=function(a){b.isCreated&&b.resize(_docElement().clientWidth,_docElement().clientHeight,!1)},K(window).bind("resize",b._fullscreenResizeHandler),k.select("fullscreen"),i.first().css("visibility","hidden"),i.last().css("visibility","hidden")):(_GECKO&&K(window).bind("scroll",function(a){b._scrollPos=_getScrollPos()}),b.resizeType>0?_drag({moveEl:f,clickEl:i,moveFn:function(a,c,d,e,f,g){e+=g,b.resize(null,e)}}):i.first().css("visibility","hidden"),2===b.resizeType?_drag({moveEl:f,clickEl:i.last(),moveFn:function(a,c,d,e,f,g){d+=f,e+=g,b.resize(d,e)}}):i.last().css("visibility","hidden")),b},remove:function(){var a=this;return a.isCreated?(a.beforeRemove(),a.srcElement.data("kindeditor",""),a.menu&&a.hideMenu(),_each(a.dialogs,function(){a.hideDialog()}),K(document).unbind("mousedown",a._docMousedownFn),a.toolbar.remove(),a.edit.remove(),a.statusbar.last().unbind(),a.statusbar.unbind(),a.container.remove(),a.container=a.toolbar=a.edit=a.menu=null,a.dialogs=[],a.isCreated=!1,a):a},resize:function(a,b,c){var d=this;if(c=_undef(c,!0),a&&(/%/.test(a)||(a=_removeUnit(a),a=a/gi,"").replace(/ /gi," ")):b.html(_escape(a))},isEmpty:function(){return""===_trim(this.text().replace(/\r\n|\n|\r/,""))},isDirty:function(){return _trim(this.initContent.replace(/\r\n|\n|\r|t/g,""))!==_trim(this.html().replace(/\r\n|\n|\r|t/g,""))},selectedHtml:function(){var a=this.isCreated?this.cmd.range.html():"";return a=_removeBookmarkTag(_removeTempTag(a))},count:function(a){var b=this;return a=(a||"html").toLowerCase(),"html"===a?b.html().length:"text"===a?b.text().replace(/<(?:img|embed).*?>/gi,"K").replace(/\r\n|\n|\r/g,"").length:0},exec:function(a){a=a.toLowerCase();var b=this,c=b.cmd,d=_inArray(a,"selectall,copy,paste,print".split(","))<0;return d&&b.addBookmark(!1),c[a].apply(c,_toArray(arguments,1)),d&&(b.updateState(),b.addBookmark(!1),b.options.afterChange&&b.options.afterChange.call(b)),b},insertHtml:function(a,b){return this.isCreated?(a=this.beforeSetHtml(a),this.exec("inserthtml",a,b),this):this},appendHtml:function(a){if(this.html(this.html()+a),this.isCreated){var b=this.cmd;b.range.selectNodeContents(b.doc.body).collapse(!1),b.select()}return this},sync:function(){return _elementVal(this.srcElement,this.html()),this},focus:function(){return this.isCreated?this.edit.focus():this.srcElement[0].focus(),this},blur:function(){return this.isCreated?this.edit.blur():this.srcElement[0].blur(),this},addBookmark:function(a){a=_undef(a,!0);var b,c=this,d=c.edit,e=d.doc.body,f=_removeTempTag(e.innerHTML);if(a&&c._undoStack.length>0){var g=c._undoStack[c._undoStack.length-1];if(Math.abs(f.length-_removeBookmarkTag(g.html).length)0){var c=b.dialogs[0],d=b.dialogs[b.dialogs.length-1];c.setMaskIndex(d.z+2),a.z=d.z+3,a.showMask=!1}var e=_dialog(a);return b.dialogs.push(e),e},hideDialog:function(){var a=this;if(a.dialogs.length>0&&a.dialogs.pop().remove(),a.dialogs.length>0){var b=a.dialogs[0],c=a.dialogs[a.dialogs.length-1];b.setMaskIndex(c.z-1)}return a},errorDialog:function(a){var b=this,c=b.createDialog({width:750,title:b.lang("uploadError"),body:'
    '}),d=K("iframe",c.div),e=K.iframeDoc(d);return e.open(),e.write(a),e.close(),K(e.body).css("background-color","#FFF"),d[0].contentWindow.focus(),b}};var _instances=[];K.remove=function(a){_eachEditor(a,function(a){this.remove(),_instances.splice(a,1)})},K.sync=function(a){_eachEditor(a,function(){this.sync()})},K.html=function(a,b){_eachEditor(a,function(){this.html(b)})},K.insertHtml=function(a,b){_eachEditor(a,function(){this.insertHtml(b)})},K.appendHtml=function(a,b){_eachEditor(a,function(){this.appendHtml(b)})},_IE&&7>_V&&_nativeCommand(document,"BackgroundImageCache",!0),K.EditorClass=KEditor,K.editor=_editor,K.create=_create,K.instances=_instances,K.plugin=_plugin,K.lang=_lang,_plugin("core",function(a){var b=this,c={undo:"Z",redo:"Y",bold:"B",italic:"I",underline:"U",print:"P",selectall:"A"};if(b.afterSetHtml(function(){b.options.afterChange&&b.options.afterChange.call(b)}),b.afterCreate(function(){if("form"==b.syncType){for(var c=a(b.srcElement),d=!1;c=c.parent();)if("form"==c.name){d=!0;break}if(d){c.bind("submit",function(c){b.sync(),a(window).bind("unload",function(){b.edit.textarea.remove()})});var e=a('[type="reset"]',c);e.click(function(){b.html(b.initContent),b.cmd.selection()}),b.beforeRemove(function(){c.unbind(),e.unbind()})}}}),b.clickToolbar("source",function(){b.edit.designMode?(b.toolbar.disableAll(!0),b.edit.design(!1),b.toolbar.select("source")):(b.toolbar.disableAll(!1),b.edit.design(!0),b.toolbar.unselect("source"),_GECKO?setTimeout(function(){b.cmd.selection()},0):b.cmd.selection()),b.designMode=b.edit.designMode}),b.afterCreate(function(){b.designMode||b.toolbar.disableAll(!0).select("source")}),b.clickToolbar("fullscreen",function(){b.fullscreen()}),b.fullscreenShortcut){var d=!1;b.afterCreate(function(){if(a(b.edit.doc,b.edit.textarea).keyup(function(a){27==a.which&&setTimeout(function(){b.fullscreen()},0)}),d){if(_IE&&!b.designMode)return;b.focus()}d||(d=!0)})}_each("undo,redo".split(","),function(a,d){c[d]&&b.afterCreate(function(){_ctrl(this.edit.doc,c[d],function(){b.clickToolbar(d)})}),b.clickToolbar(d,function(){b[d]()})}),b.clickToolbar("formatblock",function(){var a=b.lang("formatblock.formatBlock"),c={h1:28,h2:24,h3:18,H4:14,p:12},d=b.cmd.val("formatblock"),e=b.createMenu({name:"formatblock",width:"en"==b.langType?200:150});_each(a,function(a,f){var g="font-size:"+c[a]+"px;";"h"===a.charAt(0)&&(g+="font-weight:bold;"),e.addItem({title:''+f+"",height:c[a]+12,checked:d===a||d===f,click:function(){b.select().exec("formatblock","<"+a+">").hideMenu()}})})}),b.clickToolbar("fontname",function(){var a=b.cmd.val("fontname"),c=b.createMenu({name:"fontname",width:150});console,_each(b.lang("fontname.fontName"),function(d,e){c.addItem({title:''+e+"",checked:a===d.toLowerCase()||a===e.toLowerCase(),click:function(){b.exec("fontname",d).hideMenu()}})})}),b.clickToolbar("fontsize",function(){var a=b.cmd.val("fontsize"),c=b.createMenu({name:"fontsize",width:150});_each(b.fontSizeTable,function(d,e){c.addItem({title:''+e+"",height:_removeUnit(e)+12,checked:a===e,click:function(){b.exec("fontsize",e).hideMenu()}})})}),_each("forecolor,hilitecolor".split(","),function(a,c){b.clickToolbar(c,function(){b.createMenu({name:c,selectedColor:b.cmd.val(c)||"default",colors:b.colorTable,click:function(a){b.exec(c,a).hideMenu()}})})}),_each("cut,copy,paste".split(","),function(c,d){b.clickToolbar(d,function(){b.focus();try{b.exec(d,null)}catch(c){a.options.errorMsgHandler(b.lang(d+"Error"),"error")}})}),b.clickToolbar("about",function(){var a='
    NKeditor '+_VERSION+'
    Forked from KindEditor By BlackFox. Git项目地址.
    '; +b.createDialog({name:"about",width:350,title:b.lang("about"),body:a})}),b.plugin.getSelectedLink=function(){return b.cmd.commonAncestor("a")},b.plugin.getSelectedImage=function(){return _getImageFromRange(b.edit.cmd.range,function(a){return!/^ke-\w+$/i.test(a[0].className)})},b.plugin.getSelectedFlash=function(){return _getImageFromRange(b.edit.cmd.range,function(a){return"ke-flash"==a[0].className})},b.plugin.getSelectedMedia=function(){return _getImageFromRange(b.edit.cmd.range,function(a){return"ke-media"==a[0].className||"ke-rm"==a[0].className})},b.plugin.getSelectedAnchor=function(){return _getImageFromRange(b.edit.cmd.range,function(a){return"ke-anchor"==a[0].className})},_each("link,image,flash,media,anchor".split(","),function(a,c){var d=c.charAt(0).toUpperCase()+c.substr(1);_each("edit,delete".split(","),function(a,e){b.addContextmenu({title:b.lang(e+d),click:function(){b.loadPlugin(c,function(){b.plugin[c][e](),b.hideMenu()})},cond:b.plugin["getSelected"+d],width:150,iconClass:"edit"==e?"ke-icon-"+c:undefined})}),b.addContextmenu({title:"-"})}),b.plugin.getSelectedTable=function(){return b.cmd.commonAncestor("table")},b.plugin.getSelectedRow=function(){return b.cmd.commonAncestor("tr")},b.plugin.getSelectedCell=function(){return b.cmd.commonAncestor("td")},_each("prop,cellprop,colinsertleft,colinsertright,rowinsertabove,rowinsertbelow,rowmerge,colmerge,rowsplit,colsplit,coldelete,rowdelete,insert,delete".split(","),function(a,c){var d=_inArray(c,["prop","delete"])<0?b.plugin.getSelectedCell:b.plugin.getSelectedTable;b.addContextmenu({title:b.lang("table"+c),click:function(){b.loadPlugin("table",function(){b.plugin.table[c](),b.hideMenu()})},cond:d,width:170,iconClass:"ke-icon-table"+c})}),b.addContextmenu({title:"-"}),_each("selectall,justifyleft,justifycenter,justifyright,justifyfull,insertorderedlist,insertunorderedlist,indent,outdent,subscript,superscript,hr,print,bold,italic,underline,strikethrough,removeformat,unlink".split(","),function(a,d){c[d]&&b.afterCreate(function(){_ctrl(this.edit.doc,c[d],function(){b.cmd.selection(),b.clickToolbar(d)})}),b.clickToolbar(d,function(){b.focus().exec(d,null)})}),b.afterCreate(function(){function c(){d.range.moveToBookmark(e),d.select(),_WEBKIT&&(a("div."+h,f).each(function(){a(this).after("
    ").remove(!0)}),a("span.Apple-style-span",f).remove(!0),a("span.Apple-tab-span",f).remove(!0),a("span[style]",f).each(function(){"nowrap"==a(this).css("white-space")&&a(this).remove(!0)}),a("meta",f).remove());var c=f[0].innerHTML;f.remove(),""!==c&&(_WEBKIT&&(c=c.replace(/(
    )\1/gi,"$1")),2===b.pasteType&&(c=c.replace(/(<(?:p|p\s[^>]*)>) *(<\/p>)/gi,""),/schemas-microsoft-com|worddocument|mso-\w+/i.test(c)?c=_clearMsWord(c,b.filterMode?b.htmlTags:a.options.htmlTags):(c=_formatHtml(c,b.filterMode?b.htmlTags:null),c=b.beforeSetHtml(c))),1===b.pasteType&&(c=c.replace(/ /gi," "),c=c.replace(/\n\s*\n/g,"\n"),c=c.replace(/]*>/gi,"\n"),c=c.replace(/<\/p>]*>/gi,"\n"),c=c.replace(/<[^>]+>/g,""),c=c.replace(/ {2}/g,"  "),"p"==b.newlineTag?/\n/.test(c)&&(c=c.replace(/^/,"

    ").replace(/$/,"

    ").replace(/\n/g,"

    ")):c=c.replace(/\n/g,"
    $&")),b.insertHtml(c,!0))}var d,e,f,g=b.edit.doc,h="__kindeditor_paste__",i=!1;a(g.body).bind("paste",function(j){if(0===b.pasteType)return void j.stop();if(!i){if(i=!0,a("div."+h,g).remove(),d=b.cmd.selection(),e=d.range.createBookmark(),f=a('

    ',g).css({position:"absolute",width:"1px",height:"1px",overflow:"hidden",left:"-1981px",top:a(e.start).pos().y+"px","white-space":"nowrap"}),a(g.body).append(f),_IE){var k=d.range.get(!0);k.moveToElementText(f[0]),k.select(),k.execCommand("paste"),j.preventDefault()}else d.range.selectNodeContents(f[0]),d.select(),f[0].tabIndex=-1,f[0].focus();setTimeout(function(){c(),i=!1},0)}})}),b.beforeGetHtml(function(a){return _IE&&8>=_V&&(a=a.replace(/]*data-ke-input-tag="([^"]*)"[^>]*>([\s\S]*?)<\/div>/gi,function(a,b){return unescape(b)}),a=a.replace(/(]*)?>)/gi,function(a,b,c){return/\s+type="[^"]+"/i.test(a)?a:b+' type="text"'+c})),a.replace(/(<(?:noscript|noscript\s[^>]*)>)([\s\S]*?)(<\/noscript>)/gi,function(a,b,c,d){return b+_unescape(c).replace(/\s+/g," ")+d}).replace(/]*class="?ke-(flash|rm|media)"?[^>]*>/gi,function(a){var b=_getAttrList(a),c=_getCssList(b.style||""),d=_mediaAttrs(b["data-ke-tag"]),e=_undef(c.width,""),f=_undef(c.height,"");return/px/i.test(e)&&(e=_removeUnit(e)),/px/i.test(f)&&(f=_removeUnit(f)),d.width=_undef(b.width,e),d.height=_undef(b.height,f),_mediaEmbed(d)}).replace(/]*class="?ke-anchor"?[^>]*>/gi,function(a){var b=_getAttrList(a);return''}).replace(/]*data-ke-script-attr="([^"]*)"[^>]*>([\s\S]*?)<\/div>/gi,function(a,b,c){return""+unescape(c)+""}).replace(/]*data-ke-noscript-attr="([^"]*)"[^>]*>([\s\S]*?)<\/div>/gi,function(a,b,c){return""+unescape(c)+""}).replace(/(<[^>]*)data-ke-src="([^"]*)"([^>]*>)/gi,function(a,b,c,d){return a=a.replace(/(\s+(?:href|src)=")[^"]*(")/i,function(a,b,d){return b+_unescape(c)+d}),a=a.replace(/\s+data-ke-src="[^"]*"/i,"")}).replace(/(<[^>]+\s)data-ke-(on\w+="[^"]*"[^>]*>)/gi,function(a,b,c){return b+c})}),b.beforeSetHtml(function(a){return _IE&&8>=_V&&(a=a.replace(/]*>|<(select|button)[^>]*>[\s\S]*?<\/\1>/gi,function(a){var b=_getAttrList(a),c=_getCssList(b.style||"");return"none"==c.display?'
    ':a})),a.replace(/]*type="([^"]+)"[^>]*>(?:<\/embed>)?/gi,function(a){var c=_getAttrList(a);return c.src=_undef(c.src,""),c.width=_undef(c.width,0),c.height=_undef(c.height,0),_mediaImg(b.themesPath+"common/blank.gif",c)}).replace(/]*name="([^"]+)"[^>]*>(?:<\/a>)?/gi,function(a){var c=_getAttrList(a);return c.href!==undefined?a:''}).replace(/]*)>([\s\S]*?)<\/script>/gi,function(a,b,c){return'
    '+escape(c)+"
    "}).replace(/]*)>([\s\S]*?)<\/noscript>/gi,function(a,b,c){return'
    '+escape(c)+"
    "}).replace(/(<[^>]*)(href|src)="([^"]*)"([^>]*>)/gi,function(a,b,c,d,e){return a.match(/\sdata-ke-src="[^"]*"/i)?a:a=b+c+'="'+d+'" data-ke-src="'+_escape(d)+'"'+e}).replace(/(<[^>]+\s)(on\w+="[^"]*"[^>]*>)/gi,function(a,b,c){return b+"data-ke-"+c}).replace(/]*\s+border="0"[^>]*>/gi,function(a){return a.indexOf("ke-zeroborder")>=0?a:_addClassToTag(a,"ke-zeroborder")})})})}}(window),KindEditor.lang({source:"HTML代码",preview:"预览",undo:"后退(Ctrl+Z)",redo:"前进(Ctrl+Y)",cut:"剪切(Ctrl+X)",copy:"复制(Ctrl+C)",paste:"粘贴(Ctrl+V)",plainpaste:"粘贴为无格式文本",wordpaste:"从Word粘贴",selectall:"全选(Ctrl+A)",justifyleft:"左对齐",justifycenter:"居中",justifyright:"右对齐",justifyfull:"两端对齐",insertorderedlist:"编号",insertunorderedlist:"项目符号",indent:"增加缩进",outdent:"减少缩进",subscript:"下标",superscript:"上标",formatblock:"段落",fontname:"字体",fontsize:"文字大小",forecolor:"文字颜色",hilitecolor:"文字背景",bold:"粗体(Ctrl+B)",italic:"斜体(Ctrl+I)",underline:"下划线(Ctrl+U)",strikethrough:"删除线",removeformat:"删除格式",image:"图片",multiimage:"批量图片上传",graft:"涂鸦",flash:"Flash",media:"视音频",table:"表格",tablecell:"单元格",hr:"插入横线",emoticons:"插入表情",link:"超级链接",unlink:"取消超级链接",fullscreen:"全屏显示",about:"关于",print:"打印(Ctrl+P)",filemanager:"文件空间",code:"插入程序代码",quote:"插入引用",map:"Google地图",baidumap:"百度地图",lineheight:"行距",clearhtml:"清理HTML代码",pagebreak:"插入分页符",quickformat:"一键排版",insertfile:"插入文件",template:"插入模板",anchor:"锚点",yes:"确定",no:"取消",close:"关闭",editImage:"图片属性",deleteImage:"删除图片",editFlash:"Flash属性",deleteFlash:"删除Flash",editMedia:"视音频属性",deleteMedia:"删除视音频",editLink:"超级链接属性",deleteLink:"取消超级链接",editAnchor:"锚点属性",deleteAnchor:"删除锚点",tableprop:"表格属性",tablecellprop:"单元格属性",tableinsert:"插入表格",tabledelete:"删除表格",tablecolinsertleft:"左侧插入列",tablecolinsertright:"右侧插入列",tablerowinsertabove:"上方插入行",tablerowinsertbelow:"下方插入行",tablerowmerge:"向下合并单元格",tablecolmerge:"向右合并单元格",tablerowsplit:"拆分行",tablecolsplit:"拆分列",tablecoldelete:"删除列",tablerowdelete:"删除行",noColor:"无颜色",pleaseSelectFile:"请选择文件。",invalidImg:"请输入有效的URL地址。\n只允许jpg,gif,bmp,png格式。",invalidMedia:"请输入有效的URL地址。\n只允许swf,flv,mp3,wav,wma,wmv,mid,avi,mpg,asf,rm,rmvb格式。",invalidWidth:"宽度必须为数字。",invalidHeight:"高度必须为数字。",invalidBorder:"边框必须为数字。",invalidUrl:"请输入有效的URL地址。",invalidRows:"行数为必选项,只允许输入大于0的数字。",invalidCols:"列数为必选项,只允许输入大于0的数字。",invalidPadding:"边距必须为数字。",invalidSpacing:"间距必须为数字。",invalidJson:"服务器发生故障。",uploadSuccess:"上传成功。",cutError:"您的浏览器安全设置不允许使用剪切操作,请使用快捷键(Ctrl+X)来完成。",copyError:"您的浏览器安全设置不允许使用复制操作,请使用快捷键(Ctrl+C)来完成。",pasteError:"您的浏览器安全设置不允许使用粘贴操作,请使用快捷键(Ctrl+V)来完成。",ajaxLoading:"加载中,请稍候 ...",uploadLoading:"上传中,请稍候 ...",uploadError:"上传错误","plainpaste.comment":"请使用快捷键(Ctrl+V)把内容粘贴到下面的方框里。","wordpaste.comment":"请使用快捷键(Ctrl+V)把内容粘贴到下面的方框里。","code.pleaseInput":"请输入程序代码。","link.url":"URL","link.linkType":"打开类型","link.newWindow":"新窗口","link.selfWindow":"当前窗口","flash.url":"URL","flash.width":"宽度","flash.height":"高度","flash.upload":"上传","flash.viewServer":"文件空间","media.url":"URL","media.width":"宽度","media.height":"高度","media.autostart":"自动播放","media.upload":"上传","media.viewServer":"文件空间","image.remoteImage":"网络图片","image.localImage":"本地上传","image.remoteUrl":"图片地址","image.localUrl":"上传文件","image.size":"图片大小","image.width":"宽","image.height":"高","image.resetSize":"重置大小","image.align":"对齐方式","image.defaultAlign":"默认方式","image.leftAlign":"左对齐","image.rightAlign":"右对齐","image.imgTitle":"图片说明","image.upload":"浏览...","image.viewServer":"图片空间","multiimage.title":"多图上传","multiimage.uploadDesc":"共选择了 <%=numSelect%> 张图片,共 <%=totalSize%>, 还可以添加 <%=numLeft%> 张图片.","multiimage.startUpload":"开始上传","multiimage.noListUrl":"无法获取图片,请先配置 fileManagerJson.","multiimage.noSearchUrl":"无法进行图片搜索,请先配置 imageSearchJson.","multiimage.noDataText":"(⊙o⊙)亲,没有多数据了。","multiimage.closeText":"关闭对话框","multiimage.confirmBtnText":"确定","multiimage.cancelBtnText":"取消","multiimage.loadMoreData":"往下拉动滚动条可以加载更多数据.","multiimage.depJQueryError":"文件管理插件依赖 jQuery, 请先引入 jQuery.","multiimage.localUpload":"本地上传","multiimage.fileServer":"文件服务器","multiimage.imgSearch":"图片搜索","multiimage.selectFile":"点击选择图片","multiimage.continueAdd":"继续添加","multiimage.searchBtn":"搜索一下","multiimage.searchPlaceholder":"请输入搜索关键词","multiimage.searchClear":"清空搜索","multiimage.noFileAdded":"请至少添加一个文件!","multiimage.uploading":"正在上传","multiimage.fileNotUpload":"您还有文件没有上传!","multiimage.uploadLimit":"您本次最多上传 <%=uploadLimit%> 个文件.","multiimage.sizeLimit":"文件大小不能超过 <%=sizeLimit%> KB.","multiimage.invalidExt":"非法的文件后缀 <%=invalidExt%>.","multiimage.remove":"删除","multiimage.rotateRight":"向右旋转","multiimage.rotateLeft":"向左旋转","multiimage.uploadFail":"发生异常,上传失败!","multiimage.noFileSelected":"请至少选择一个文件或一张图片.","filemanager.noDataText":"(⊙o⊙)亲,没有多数据了。","filemanager.title":"文件服务器","filemanager.noListUrl":"无法获取图片,请先配置 fileManagerJson.","filemanager.closeText":"关闭对话框","filemanager.confirmBtnText":"确定","filemanager.cancelBtnText":"取消","filemanager.loadMoreData":"往下拉动滚动条可以加载更多数据.","filemanager.depJQueryError":"文件管理插件依赖 jQuery, 请先引入 jQuery.","filemanager.fileType":"类型","graft.btnText":"保存并插入涂鸦","graft.uploadSuccess":"涂鸦上传成功","graft.uploadFaild":"涂鸦上传失败","graft.empty":"您没有在画布上绘制任何图像","insertfile.url":"URL","insertfile.title":"文件说明","insertfile.upload":"上传","insertfile.viewServer":"文件空间","table.cells":"单元格数","table.rows":"行数","table.cols":"列数","table.size":"大小","table.width":"宽度","table.height":"高度","table.percent":"%","table.px":"px","table.space":"边距间距","table.padding":"边距","table.spacing":"间距","table.align":"对齐方式","table.textAlign":"水平对齐","table.verticalAlign":"垂直对齐","table.alignDefault":"默认","table.alignLeft":"左对齐","table.alignCenter":"居中","table.alignRight":"右对齐","table.alignTop":"顶部","table.alignMiddle":"中部","table.alignBottom":"底部","table.alignBaseline":"基线","table.border":"边框","table.borderWidth":"宽度","table.borderColor":"颜色","table.backgroundColor":"背景颜色","map.address":"地址: ","map.search":"搜索","baidumap.address":"地址: ","baidumap.search":"搜索","baidumap.insertDynamicMap":"插入动态地图","anchor.name":"锚点名称","formatblock.formatBlock":{h1:"标题 1",h2:"标题 2",h3:"标题 3",h4:"标题 4",p:"正 文"},"fontname.fontName":{SimSun:"宋体",NSimSun:"新宋体",FangSong:"仿宋",KaiTi:"楷体",SimHei:"黑体","Microsoft YaHei":"微软雅黑",Arial:"Arial","Arial Black":"Arial Black","Times New Roman":"Times New Roman","Courier New":"Courier New",Tahoma:"Tahoma",Verdana:"Verdana"},"lineheight.lineHeight":[{1:"单倍行距"},{1.5:"1.5倍行距"},{2:"2倍行距"},{2.5:"2.5倍行距"},{3:"3倍行距"}],"template.selectTemplate":"可选模板","template.replaceContent":"替换当前内容","template.fileList":{"1.html":"图片和文字","2.html":"表格","3.html":"项目编号"}},"zh-CN"),KindEditor.options.langType="zh-CN",KindEditor.plugin("anchor",function(a){var b=this,c="anchor",d=b.lang(c+".");b.plugin.anchor={edit:function(){var e=['
    ','
    ','",'',"
    ","
    "].join(""),f=b.createDialog({name:c,width:300,title:b.lang(c),body:e,yesBtn:{name:b.lang("yes"),click:function(a){b.insertHtml('').hideDialog().focus()}}}),g=f.div,h=a('input[name="name"]',g),i=b.plugin.getSelectedAnchor();i&&h.val(unescape(i.attr("data-ke-name"))),h[0].focus(),h[0].select()},"delete":function(){b.plugin.getSelectedAnchor().remove()}},b.clickToolbar(c,b.plugin.anchor.edit)}),KindEditor.plugin("autoheight",function(a){function b(){var a=e.edit,b=a.doc.body;a.iframe[0].scroll="no",b.style.overflowY="hidden"}function c(){if(!e.fullscreenMode){var b=e.edit,c=b.doc.body;b.iframe.height(f),e.resize(null,Math.max((a.IE?c.scrollHeight:c.offsetHeight)+76,f))}}function d(){f=a.removeUnit(e.height),e.edit.afterChange(c),e.fullscreenMode||b(),c()}var e=this;if(e.autoHeightMode){var f;e.isCreated?d():e.afterCreate(d)}}),KindEditor.plugin("baidumap",function(a){var b=this,c="baidumap",d=b.lang(c+"."),e=a.undef(b.mapWidth,558),f=a.undef(b.mapHeight,360);b.clickToolbar(c,function(){function g(){h=p[0].contentWindow,i=a.iframeDoc(p)}var h,i,j=['
    ','
    ','
    '+d.address,' ',"",'',"",' ","
    ","
    ",'
    ',"
    "].join(""),k=b.createDialog({name:c,width:e+42,title:b.lang(c),body:j,yesBtn:{name:b.lang("yes"),click:function(a){var c=h.map,d=c.getCenter(),g=d.lng+","+d.lat,i=c.getZoom(),j=[o[0].checked?b.pluginsPath+"baidumap/index.html":"http://api.map.baidu.com/staticimage","?center="+encodeURIComponent(g),"&zoom="+encodeURIComponent(i),"&width="+e,"&height="+f,"&markers="+encodeURIComponent(g),"&markerStyles="+encodeURIComponent("l,A")].join("");o[0].checked?b.insertHtml(''):b.exec("insertimage",j),b.hideDialog().focus()}},beforeRemove:function(){n.remove(),i&&i.write(""),p.remove()}}),l=k.div,m=a('[name="address"]',l),n=a('[name="searchBtn"]',l),o=a('[name="insertDynamicMap"]',k.div),p=a('');p.bind("load",function(){p.unbind("load"),a.IE?g():setTimeout(g,0)}),a(".ke-map",l).replaceWith(p),n.click(function(){h.search(m.val())})})}),KindEditor.plugin("map",function(a){var b=this,c="map",d=b.lang(c+".");b.clickToolbar(c,function(){function e(){f=m[0].contentWindow,g=a.iframeDoc(m)}var f,g,h=['
    ','
    ',d.address+' ','','',"","
    ",'
    ',"
    "].join(""),i=b.createDialog({name:c,width:600,title:b.lang(c),body:h,yesBtn:{name:b.lang("yes"),click:function(a){var c=(f.geocoder,f.map),d=c.getCenter().lat()+","+c.getCenter().lng(),e=c.getZoom(),g=c.getMapTypeId(),h="http://maps.googleapis.com/maps/api/staticmap";h+="?center="+encodeURIComponent(d),h+="&zoom="+encodeURIComponent(e),h+="&size=558x360",h+="&maptype="+encodeURIComponent(g),h+="&markers="+encodeURIComponent(d),h+="&language="+b.langType,h+="&sensor=false",b.exec("insertimage",h).hideDialog().focus()}},beforeRemove:function(){l.remove(),g&&g.write(""),m.remove()}}),j=i.div,k=a('[name="address"]',j),l=a('[name="searchBtn"]',j),m=(["",'',"",'',"","",'','
    ',""].join("\n"),a(''));m.bind("load",function(){m.unbind("load"),a.IE?e():setTimeout(e,0)}),a(".ke-map",j).replaceWith(m),l.click(function(){f.search(k.val())})})}),KindEditor.plugin("clearhtml",function(a){var b=this,c="clearhtml";b.clickToolbar(c,function(){b.focus();var c=b.html();c=c.replace(/(]*>)([\s\S]*?)(<\/script>)/gi,""),c=c.replace(/(]*>)([\s\S]*?)(<\/style>)/gi,""),c=a.formatHtml(c,{a:["href","target"],embed:["src","width","height","type","loop","autostart","quality",".width",".height","align","allowscriptaccess"],img:["src","width","height","border","alt","title",".width",".height"],table:["border"],"td,th":["rowspan","colspan"],"div,hr,br,tbody,tr,p,ol,ul,li,blockquote,h1,h2,h3,h4,h5,h6":[]}),b.html(c),b.cmd.selection(!0),b.addBookmark()})}),KindEditor.plugin("code",function(a){var b=this,c="code";b.clickToolbar(c,function(){var d=b.lang(c+"."),e=['
    ','
    ','","
    ",'',"
    "].join(""),f=b.createDialog({name:c,width:450,title:b.lang(c),body:e,yesBtn:{name:b.lang("yes"),click:function(c){var e=a(".ke-select",f.div).val(),h=g.val(),i=""===e?"":"language-"+e,j='
    '+a.escape(h)+"

    ";return""===a.trim(h)?(a.options.errorMsgHandler(d.pleaseInput,"error"),void g[0].focus()):void b.insertHtml(j).hideDialog().focus()}}}),g=a("textarea",f.div);g[0].focus()})}),KindEditor.plugin("emoticons",function(a){var b=this,c="emoticons",d=b.emoticonsPath||b.pluginsPath+"emoticons/images/",e=void 0===b.allowPreviewEmoticons?!0:b.allowPreviewEmoticons,f=1;b.clickToolbar(c,function(){function g(c,e,f){v?c.mouseover(function(){e>r?(v.css("left",0),v.css("right","")):(v.css("left",""),v.css("right",0)),w.attr("src",d+f+".gif"),a(this).addClass("ke-on")}):c.mouseover(function(){a(this).addClass("ke-on")}),c.mouseout(function(){a(this).removeClass("ke-on")}),c.click(function(a){b.insertHtml('').hideMenu().focus(),a.stop()})}function h(b,c){var e=document.createElement("table");c.append(e),v&&(a(e).mouseover(function(){v.show("block")}),a(e).mouseout(function(){v.hide()}),t.push(a(e))),e.className="ke-table",e.cellPadding=0,e.cellSpacing=0,e.border=0;for(var f=(b-1)*p+o,h=0;l>h;h++)for(var i=e.insertRow(h),j=0;m>j;j++){var k=a(i.insertCell(j));k.addClass("ke-cell"),g(k,j,f);var n=a('').css("background-position","-"+24*f+"px 0px").css("background-image","url("+d+"static.gif)");k.append(n),t.push(k),f++}return e}function i(){a.each(t,function(){this.unbind()})}function j(a,b){a.click(function(a){i(),y.parentNode.removeChild(y),x.remove(),y=h(b,s),k(b),f=b,a.stop()})}function k(b){x=a('
    '),s.append(x);for(var c=1;q>=c;c++){if(b!==c){var d=a('
    ['+c+"]");j(d,c),x.append(d),t.push(d)}else x.append(a("@["+c+"]"));x.append(a("@ "))}}var l=5,m=9,n=135,o=0,p=l*m,q=Math.ceil(n/p),r=Math.floor(m/2),s=a('
    '),t=[],u=b.createMenu({name:c,beforeRemove:function(){i()}});u.div.append(s);var v,w;e&&(v=a('
    ').css("right",0),w=a(''),s.append(v),v.append(w));var x,y=h(f,s);k(f)})}),KindEditor.plugin("filemanager",function(a){var b=this,c=a.undef(b.fileManagerJson,b.basePath+"php/file_manager_json.php"),d=b.lang("filemanager.");return"undefined"==typeof jQuery?void a.options.errorMsgHandler(d.depJQueryError,"error"):(a.loadScript(a.options.pluginsPath+"filemanager/FManager.js"),a.loadStyle(a.options.pluginsPath+"multiimage/css/upload.css"),void(b.plugin.filemanagerDialog=function(a){var e=a.clickFn;new FManager({list_url:c,lang:d,fileType:a.dirName,top:b.dialogOffset,callback:function(a){e.call(this,a[0])}})}))}),KindEditor.plugin("flash",function(a){var b=this,c="flash",d=b.lang(c+"."),e=a.undef(b.allowFlashUpload,!0),f=a.undef(b.allowFileManager,!1),g=a.undef(b.formatUploadUrl,!0),h=a.undef(b.extraFileUploadParams,{}),i=a.undef(b.filePostName,"imgFile"),j=a.undef(b.uploadJson,b.basePath+"php/upload_json.php");b.plugin.flash={edit:function(){var k=['
    ','
    ','",'
    ','  ','  ','','',"","
    ","
    ",'
    ','",'
    ',' ',"
    ","
    ",'
    ','",'
    ',' ',"
    ","
    ","
    "].join(""),l=b.createDialog({name:c,width:450,title:b.lang(c),body:k,yesBtn:{name:b.lang("yes"),click:function(c){var d=a.trim(n.val()),e=p.val(),f=q.val();if("http://"==d||a.invalidUrl(d))return a.options.errorMsgHandler(b.lang("invalidUrl"),"error"),void n[0].focus();if(!/^\d*$/.test(e))return a.options.errorMsgHandler(b.lang("invalidWidth"),"error"),void p[0].focus();if(!/^\d*$/.test(f))return a.options.errorMsgHandler(b.lang("invalidHeight"),"error"),void q[0].focus();var g=a.mediaImg(b.themesPath+"common/blank.gif",{src:d,type:a.mediaType(".swf"),width:e,height:f,quality:"high"});b.insertHtml(g).hideDialog().focus()}}}),m=l.div,n=a('[name="url"]',m),o=a('[name="viewServer"]',m),p=a('[name="width"]',m),q=a('[name="height"]',m);if(n.val("http://"),e){var r=a.uploadbutton({button:a(".ke-upload-button",m)[0],fieldName:i,extraParams:h,url:a.addParam(j,"fileType=flash"),afterUpload:function(d){if(l.hideLoading(),"000"===d.code){var e=d.data.url;g&&(e=a.formatUrl(e,"absolute")),n.val(e),b.afterUpload&&b.afterUpload.call(b,e,d,c),a.options.errorMsgHandler(b.lang("uploadSuccess"),"ok")}else a.options.errorMsgHandler(d.message,"error")},afterError:function(a){l.hideLoading(),b.errorDialog(a)}});r.fileBox.change(function(a){l.showLoading(b.lang("uploadLoading")),r.submit()})}else a(".ke-upload-button",m).hide();f?o.click(function(c){b.loadPlugin("filemanager",function(){b.plugin.filemanagerDialog({dirName:"flash",clickFn:function(c){a('[name="url"]',m).val(c),b.afterSelectFile&&b.afterSelectFile.call(b,c)}})})}):(a('[name="url"]').css("width","250px"),o.hide());var s=b.plugin.getSelectedFlash();if(s){var t=a.mediaAttrs(s.attr("data-ke-tag"));n.val(t.src),p.val(a.removeUnit(s.css("width"))||t.width||0),q.val(a.removeUnit(s.css("height"))||t.height||0)}n[0].focus(),n[0].select()},"delete":function(){b.plugin.getSelectedFlash().remove(),b.addBookmark()}},b.clickToolbar(c,b.plugin.flash.edit)}),KindEditor.plugin("image",function(a){var b=this,c="image",d=a.undef(b.allowImageUpload,!0),e=a.undef(b.allowImageRemote,!0),f=a.undef(b.formatUploadUrl,!0),g=a.undef(b.allowFileManager,!1),h=a.undef(b.uploadJson,b.basePath+"php/upload_json.php"),i=a.undef(b.imageTabIndex,0),j=b.pluginsPath+"image/images/",k=a.undef(b.extraFileUploadParams,{}),l=a.undef(b.filePostName,"imgFile"),m=a.undef(b.fillDescAfterUploadImage,!1),n=b.lang(c+".");b.plugin.imageDialog=function(d){function e(a,b){D.val(a),E.val(b),J=a,K=b}var i=(d.imageUrl,a.undef(d.imageWidth,""),a.undef(d.imageHeight,""),a.undef(d.imageTitle,""),a.undef(d.imageAlign,""),a.undef(d.showRemote,!0)),o=a.undef(d.showLocal,!0),p=a.undef(d.tabIndex,0),q=d.clickFn,r="kindeditor_upload_iframe_"+(new Date).getTime(),s=[];for(var t in k)s.push('');var u,v=['
    ','
    ','",'","
    "].join(""),w=o||g?450:400,x=o&&i?310:260,y=b.createDialog({name:c,width:w,height:x,title:b.lang(c),body:v,yesBtn:{name:b.lang("yes"),click:function(c){if(!y.isLoading){if(o&&i&&u&&1===u.selectedIndex||!i)return""==I.fileBox.val()?void a.options.errorMsgHandler(b.lang("pleaseSelectFile"),"error"):(y.showLoading(b.lang("uploadLoading")),I.submit(),void B.val(""));var d=a.trim(A.val()),e=D.val(),f=E.val(),g=G.val(),h="";return H.each(function(){return this.checked?(h=this.value,!1):void 0}),"http://"==d||a.invalidUrl(d)?(a.options.errorMsgHandler(b.lang("invalidUrl"),"error"),void A[0].focus()):/^\d*$/.test(e)?/^\d*$/.test(f)?void q.call(b,d,g,e,f,0,h):(a.options.errorMsgHandler(b.lang("invalidHeight"),"error"),void E[0].focus()):(a.options.errorMsgHandler(b.lang("invalidWidth"),"error"),void D[0].focus())}}},beforeRemove:function(){C.unbind(),D.unbind(),E.unbind(),F.unbind()}}),z=y.div,A=a('[name="url"]',z),B=a('[name="localUrl"]',z),C=a('[name="viewServer"]',z),D=a('.tab1 [name="width"]',z),E=a('.tab1 [name="height"]',z),F=a(".ke-refresh-btn",z),G=a('.tab1 [name="title"]',z),H=a('.tab1 [name="align"]',z);i&&o?(u=a.tabs({src:a(".tabs",z),afterSelect:function(a){}}),u.add({title:n.remoteImage,panel:a(".tab1",z)}),u.add({title:n.localImage,panel:a(".tab2",z)}),u.select(p)):i?a(".tab1",z).show():o&&a(".tab2",z).show();var I=a.uploadbutton({button:a(".ke-upload-button",z)[0],fieldName:l,form:a(".ke-form",z),target:r,width:60,afterUpload:function(c){if(y.hideLoading(),"000"==c.code){a.options.errorMsgHandler(b.lang("uploadSuccess"),"ok");var d=c.data.url;f&&(d=a.formatUrl(d,"absolute")),m?(a(".ke-dialog-row ke-clearfix #remoteUrl",z).val(d), +a(".ke-tabs-li",z)[0].click(),a(".ke-refresh-btn",z).click()):q.call(b,d,c.title,c.width,c.height,c.border,c.align)}else a.options.errorMsgHandler(c.message,"error")},afterError:function(a){y.hideLoading(),b.errorDialog(a)}});I.fileBox.change(function(a){B.val(I.fileBox.val())}),g?C.click(function(c){b.loadPlugin("filemanager",function(){b.plugin.filemanagerDialog({dirName:"image",clickFn:function(c){a('[name="url"]',z).val(c),b.afterSelectFile&&b.afterSelectFile.call(b,c)}})})}):C.hide();var J=0,K=0;return F.click(function(b){var c=a('',document).css({position:"absolute",visibility:"hidden",top:0,left:"-1000px"});c.bind("load",function(){e(c.width(),c.height()),c.remove()}),a(document.body).append(c)}),D.change(function(a){J>0&&E.val(Math.round(K/J*parseInt(this.value,10)))}),E.change(function(a){K>0&&D.val(Math.round(J/K*parseInt(this.value,10)))}),A.val(d.imageUrl),e(d.imageWidth,d.imageHeight),G.val(d.imageTitle),H.each(function(){return this.value===d.imageAlign?(this.checked=!0,!1):void 0}),i&&0===p&&(A[0].focus(),A[0].select()),y},b.plugin.image={edit:function(){var a=b.plugin.getSelectedImage();b.plugin.imageDialog({imageUrl:a?a.attr("data-ke-src"):"http://",imageWidth:a?a.width():"",imageHeight:a?a.height():"",imageTitle:a?a.attr("title"):"",imageAlign:a?a.attr("align"):"",showRemote:e,showLocal:d,tabIndex:a?0:i,clickFn:function(c,d,e,f,g,h){a?(a.attr("src",c),a.attr("data-ke-src",c),a.attr("width",e),a.attr("height",f),a.attr("title",d),a.attr("align",h),a.attr("alt",d)):b.exec("insertimage",c,d,e,f,g,h),setTimeout(function(){b.hideDialog().focus()},0)}})},"delete":function(){var a=b.plugin.getSelectedImage();"a"==a.parent().name&&(a=a.parent()),a.remove(),b.addBookmark()}},b.clickToolbar(c,b.plugin.image.edit)}),KindEditor.plugin("insertfile",function(a){var b=this,c="insertfile",d=a.undef(b.allowFileUpload,!0),e=a.undef(b.allowFileManager,!1),f=a.undef(b.formatUploadUrl,!0),g=a.undef(b.uploadJson,b.basePath+"php/upload_json.php"),h=a.undef(b.extraFileUploadParams,{}),i=a.undef(b.filePostName,"imgFile"),j=b.lang(c+".");b.plugin.fileDialog=function(k){var l=a.undef(k.fileUrl,"http://"),m=a.undef(k.fileTitle,""),n=k.clickFn,o=['
    ','
    ','",'
    ','  ','  ','','',"","
    ","
    ",'
    ','",'
    ','
    ',"
    ","
    ","",""].join(""),p=b.createDialog({name:c,width:450,title:b.lang(c),body:o,yesBtn:{name:b.lang("yes"),click:function(c){var d=a.trim(r.val()),e=t.val();return"http://"==d||a.invalidUrl(d)?(a.options.errorMsgHandler(b.lang("invalidUrl"),"error"),void r[0].focus()):(""===a.trim(e)&&(e=d),void n.call(b,d,e))}}}),q=p.div,r=a('[name="url"]',q),s=a('[name="viewServer"]',q),t=a('[name="title"]',q);if(d){var u=a.uploadbutton({button:a(".ke-upload-button",q)[0],fieldName:i,url:a.addParam(g,"fileType=file"),extraParams:h,afterUpload:function(d){if(p.hideLoading(),"000"===d.code){var e=d.data.url;f&&(e=a.formatUrl(e,"absolute")),r.val(e),b.afterUpload&&b.afterUpload.call(b,e,d,c),a.options.errorMsgHandler(b.lang("uploadSuccess"),"ok")}else a.options.errorMsgHandler(d.message,"error")},afterError:function(a){p.hideLoading(),b.errorDialog(a)}});u.fileBox.change(function(a){p.showLoading(b.lang("uploadLoading")),u.submit()})}else a(".ke-upload-button",q).hide();e?s.click(function(c){b.loadPlugin("filemanager",function(){b.plugin.filemanagerDialog({viewType:"LIST",dirName:"file",clickFn:function(c){a('[name="url"]',q).val(c),b.afterSelectFile&&b.afterSelectFile.call(b,c)}})})}):(a("#keUrl").css("width","250px"),s.hide()),r.val(l),t.val(m),r[0].focus(),r[0].select()},b.clickToolbar(c,function(){b.plugin.fileDialog({clickFn:function(a,c){var d=''+c+"";b.insertHtml(d).hideDialog().focus()}})})}),KindEditor.plugin("lineheight",function(a){var b=this,c="lineheight",d=b.lang(c+".");b.clickToolbar(c,function(){var e="",f=b.cmd.commonNode({"*":".line-height"});f&&(e=f.css("line-height"));var g=b.createMenu({name:c,width:150});a.each(d.lineHeight,function(c,d){a.each(d,function(a,c){g.addItem({title:c,checked:e===a,click:function(){b.cmd.toggle('',{span:".line-height="+a}),b.updateState(),b.addBookmark(),b.hideMenu()}})})})})}),KindEditor.plugin("link",function(a){var b=this,c="link";b.plugin.link={edit:function(){var d=b.lang(c+"."),e=['
    ','
    ','",'
    ','',"
    ","
    ",'
    ','",'
    ','',"
    ","
    ","
    "].join(""),f=b.createDialog({name:c,width:450,title:b.lang(c),body:e,yesBtn:{name:b.lang("yes"),click:function(c){var d=a.trim(h.val());return"http://"==d||a.invalidUrl(d)?(a.options.errorMsgHandler(b.lang("invalidUrl"),"error"),void h[0].focus()):void b.exec("createlink",d,i.val()).hideDialog().focus()}}}),g=f.div,h=a('input[name="url"]',g),i=a('select[name="type"]',g);h.val("http://"),i[0].options[0]=new Option(d.newWindow,"_blank"),i[0].options[1]=new Option(d.selfWindow,""),b.cmd.selection();var j=b.plugin.getSelectedLink();j&&(b.cmd.range.selectNode(j[0]),b.cmd.select(),h.val(j.attr("data-ke-src")),i.val(j.attr("target"))),h[0].focus(),h[0].select()},"delete":function(){b.exec("unlink",null)}},b.clickToolbar(c,b.plugin.link.edit)}),KindEditor.plugin("media",function(a){var b=this,c="media",d=b.lang(c+"."),e=a.undef(b.allowMediaUpload,!1),f=a.undef(b.allowFileManager,!1),g=a.undef(b.formatUploadUrl,!0),h=a.undef(b.extraFileUploadParams,{}),i=a.undef(b.filePostName,"imgFile"),j=a.undef(b.uploadJson,b.basePath+"php/upload_json.php");b.plugin.media={edit:function(){var k=['
    ','
    ','",'
    ','  ','  ','','',"","
    ","
    ",'
    ','",'
    ','',"
    ","
    ",'
    ','",'
    ','',"
    ","
    ",'
    ','",'
    ',' ',"
    ","
    ","
    "].join(""),l=b.createDialog({name:c,width:450,height:260,title:b.lang(c),body:k,yesBtn:{name:b.lang("yes"),click:function(c){var d=a.trim(n.val()),e=p.val(),f=q.val();if("http://"==d||a.invalidUrl(d))return a.options.errorMsgHandler(b.lang("invalidUrl"),"error"),void n[0].focus();if(!/^\d*$/.test(e))return a.options.errorMsgHandler(b.lang("invalidWidth"),"error"),void p[0].focus();if(!/^\d*$/.test(f))return a.options.errorMsgHandler(b.lang("invalidHeight"),"error"),void q[0].focus();var g=a.mediaImg(b.themesPath+"common/blank.gif",{src:d,type:a.mediaType(d),width:e,height:f,autostart:r[0].checked?"true":"false",loop:"true"});b.insertHtml(g).hideDialog().focus()}}}),m=l.div,n=a('[name="url"]',m),o=a('[name="viewServer"]',m),p=a('[name="width"]',m),q=a('[name="height"]',m),r=a('[name="autostart"]',m);if(n.val("http://"),e){var s=a.uploadbutton({button:a(".ke-upload-button",m)[0],fieldName:i,extraParams:h,url:a.addParam(j,"fileType=media"),afterUpload:function(d){if(l.hideLoading(),"000"==d.code){var e=d.data.url;g&&(e=a.formatUrl(e,"absolute")),n.val(e),b.afterUpload&&b.afterUpload.call(b,e,d,c),a.options.errorMsgHandler(b.lang("uploadSuccess"),"ok")}else a.options.errorMsgHandler(d.message,"error","error")},afterError:function(a){l.hideLoading(),b.errorDialog(a)}});s.fileBox.change(function(a){l.showLoading(b.lang("uploadLoading")),s.submit()})}else a(".ke-upload-button",m).hide();e&&f?o.click(function(c){b.loadPlugin("filemanager",function(){b.plugin.filemanagerDialog({dirName:"media",clickFn:function(c){a('[name="url"]',m).val(c),b.afterSelectFile&&b.afterSelectFile.call(b,c)}})})}):(a("#keUrl").css("width","280px"),o.hide());var t=b.plugin.getSelectedMedia();if(t){var u=a.mediaAttrs(t.attr("data-ke-tag"));n.val(u.src),p.val(a.removeUnit(t.css("width"))||u.width||0),q.val(a.removeUnit(t.css("height"))||u.height||0),r[0].checked="true"===u.autostart}n[0].focus(),n[0].select()},"delete":function(){b.plugin.getSelectedMedia().remove(),b.addBookmark()}},b.clickToolbar(c,b.plugin.media.edit)}),KindEditor.plugin("multiimage",function(a){var b=this,c="multiimage",d=a.undef(b.uploadJson,b.basePath+"php/upload_json.php"),e=a.undef(b.fileManagerJson,b.basePath+"php/file_manager_json.php"),f=a.undef(b.imageSizeLimit,2048),g=a.undef(b.imageFileTypes,"jpg|png|gif|jpeg"),h=a.undef(b.imageUploadLimit,20),i=a.undef(b.filePostName,"imgFile"),j=a.undef(b.extraFileUploadParams,{}),k=b.lang(c+".");return"undefined"==typeof jQuery?void a.options.errorMsgHandler(k.depJQueryError,"error"):(a.loadScript(a.options.pluginsPath+c+"/BUpload.js"),a.loadStyle(a.options.pluginsPath+c+"/css/upload.css"),a.locker=function(){var b=Math.max(document.documentElement.clientWidth,document.body.clientWidth),c=Math.max(document.documentElement.clientHeight,document.body.clientHeight,$(document).height())+document.documentElement.scrollTop;return a.widget({x:0,y:0,cls:"ke-dialog-lock",width:b,height:c})},b.plugin.multiImageDialog=function(c){var l=c.clickFn,m=a.locker();m.show();var n=new BUpload({src:i,upload_url:d,list_url:e,max_filesize:f,max_filenum:h,ext_allow:g,extra_params:j,lang:k,top:b.dialogOffset,fileType:"image",errorHandler:a.options.errorMsgHandler,callback:function(a){l.call(this,a)},close:function(){m.remove()}});return n},void b.clickToolbar(c,function(){b.plugin.multiImageDialog({clickFn:function(c){0!==c.length&&(a.each(c,function(a,c){b.afterUpload&&b.afterUpload.call(b,c,c,"multiimage"),b.exec("insertimage",c)}),setTimeout(function(){b.hideDialog().focus()},0))}})}))}),KindEditor.plugin("graft",function(a){var b=this,c="graft",d=a.undef(b.uploadJson,b.basePath+"php/upload_json.php"),e=a.undef(b.allowUploadGraft,!0),f=b.lang(c+".");return"undefined"==typeof jQuery?void a.options.errorMsgHandler(f.depJQueryError,"error"):(a.loadStyle(a.options.pluginsPath+"graft/css/scrawl.css"),a.loadScript(a.options.pluginsPath+"graft/scrawl.js"),b.plugin.graftDialog=function(g){var h=g.clickFn,i=['
    ','
    ','
    ','你的浏览器不支持 canvas 绘图','
    ',"
    ",'
    ','",'",'","
    ","
    ",'
    ','
    ','','','','','','','','','','','','','','','','','','',"
    ",'
    ','','1','3','5','7',"
    ",'
    ','','5','10','15','20',"
    ",'
    ','','2','4','6','8',"
    ",'
    ','','','初始化设置',"","
    ",'
    ','
    ','','添加背景','',"
    ","
    ",'
    ','','','删除背景',"","
    ","
    "].join(""),j=b.createDialog({name:c,width:750,height:440,title:b.lang(c),body:i,yesBtn:{name:f.btnText,click:function(c){return j.isLoading?void 0:k.isEmpty()?void a.options.errorMsgHandler(f.empty,"error"):void k.save(function(c){e?(j.showLoading(b.lang("uploadLoading")),$.post(d,{img_base64_data:c,fileType:"image",base64:1},function(c){j.hideLoading(),"000"==c.code?(a.options.errorMsgHandler(f.uploadSuccess,"ok"),h.call(b,c.data.url),b.hideDialog().focus()):a.options.errorMsgHandler(f.uploadFaild,"error")},"json")):(h.call(b,c),b.hideDialog().focus())})}}}),k=new Canvas({canvasId:"canvas-borad",width:600,height:320})},void b.clickToolbar(c,function(){b.plugin.graftDialog({clickFn:function(a){b.exec("insertimage",a)}})}))}),KindEditor.plugin("pagebreak",function(a){var b=this,c="pagebreak",d=a.undef(b.pagebreakHtml,'
    ');b.clickToolbar(c,function(){var c=b.cmd,e=c.range;b.focus();var f="br"==b.newlineTag||a.WEBKIT?"":'';if(b.insertHtml(d+f),""!==f){var g=a("#__kindeditor_tail_tag__",b.edit.doc);e.selectNodeContents(g[0]),g.removeAttr("id"),c.select()}})}),KindEditor.plugin("plainpaste",function(a){var b=this,c="plainpaste";b.clickToolbar(c,function(){var d=b.lang(c+"."),e='
    '+d.comment+'
    ',f=b.createDialog({name:c,width:450,title:b.lang(c),body:e,yesBtn:{name:b.lang("yes"),click:function(c){var d=g.val();d=a.escape(d),d=d.replace(/ {2}/g,"  "),d="p"==b.newlineTag?d.replace(/^/,"

    ").replace(/$/,"

    ").replace(/\n/g,"

    "):d.replace(/\n/g,"
    $&"),b.insertHtml(d).hideDialog().focus()}}}),g=a("textarea",f.div);g[0].focus()})}),KindEditor.plugin("preview",function(a){var b=this,c="preview";b.clickToolbar(c,function(){var d=(b.lang(c+"."),.9*document.documentElement.clientWidth),e=document.documentElement.clientHeight-160,f='

    ',g=b.createDialog({name:c,width:d,title:b.lang(c),body:f}),h=a("iframe",g.div),i=a.iframeDoc(h);i.open();var j=b.options.cssPath,k=b.options.jsPath,l=['','',""),a.isArray(j)||(j=[j]),a.inArray(b.options.pluginsPath+"code/prism.css",j)<0&&j.push(b.options.pluginsPath+"code/prism.css"),a.each(j,function(a,b){b&&l.push('')}),b.options.cssData&&l.push(""),l.push(""),l.push(b.fullHtml()),a.isArray(k)||(k=[k]),a.inArray(b.options.pluginsPath+"code/prism.js",k)<0&&k.push(b.options.pluginsPath+"code/prism.js"),a.each(k,function(a,b){b&&l.push('')}),l.push(""),i.write(l.join("\n")),i.close(),a(i.body).css("background-color","#FFF"),h[0].contentWindow.focus()})}),KindEditor.plugin("quickformat",function(a){function b(a){for(var b=a.first();b&&b.first();)b=b.first();return b}var c=this,d="quickformat",e=a.toMap("blockquote,center,div,h1,h2,h3,h4,h5,h6,p");c.clickToolbar(d,function(){c.focus();for(var d,f=c.edit.doc,g=c.cmd.range,h=a(f.body).first(),i=[],j=[],k=g.createBookmark(!0);h;){d=h.next();var l=b(h);l&&"img"==l.name||(e[h.name]?(h.html(h.html().replace(/^(\s| | )+/gi,"")),h.css("text-indent","2em")):j.push(h),(!d||e[d.name]||e[h.name]&&!e[d.name])&&(j.length>0&&i.push(j),j=[])),h=d}a.each(i,function(b,c){var d=a('

    ',f);c[0].before(d),a.each(c,function(a,b){d.append(b)})}),g.moveToBookmark(k),c.addBookmark()})}),KindEditor.plugin("table",function(a){function b(a,b){b=b.toUpperCase(),a.css("background-color",b),a.css("color","#000000"===b?"#FFFFFF":"#000000"),a.html(b)}function c(c,d){function f(){a.each(i,function(){this.remove()}),i=[],a(document).unbind("click,mousedown",f),c.unbind("click,mousedown",f)}d.bind("click,mousedown",function(a){a.stopPropagation()}),d.click(function(d){f();var g=a(this),h=g.pos(),j=a.colorpicker({x:h.x,y:h.y+g.height(),z:811214,selectedColor:a(this).html(),colors:e.colorTable,noColor:e.lang("noColor"),shadowMode:e.shadowMode,click:function(a){b(g,a),f()}});i.push(j),a(document).bind("click,mousedown",f),c.bind("click,mousedown",f)})}function d(a,b,c){for(var d=0,e=0,f=b.cells.length;f>e&&b.cells[e]!=c;e++)d+=b.cells[e].rowSpan-1;return c.cellIndex-d}var e=this,f="table",g=e.lang(f+"."),h="ke-zeroborder",i=(a.undef(e.options.tableBorderColor,"#cccccc"),[]);e.plugin.table={prop:function(d){var i=['
    ','
    ','",'
    ',g.rows+'   ',g.cols+' ',"
    ","
    ",'
    ','",'
    ',g.width+'   ','   ",g.height+'   ','","
    ","
    ",'
    ','",'
    ',g.padding+'   ',g.spacing+' ',"
    ","
    ",'
    ','",'
    ','","
    ","
    ",'
    ','",'
    ',g.borderWidth+'   ',g.borderColor+' ',"
    ","
    ",'
    ','",'
    ','',"
    ","
    ","
    "].join(""),j=e.cmd.range.createBookmark(),k=e.createDialog({name:f,width:500,title:e.lang(f),body:i,beforeRemove:function(){w.unbind()},yesBtn:{name:e.lang("yes"),click:function(b){function c(b){for(var c=a(b.commonAncestor());c&&(1!=c.type||c.isStyle());)c=c.parent();return c}var d=m.val(),f=n.val(),g=o.val(),i=p.val(),k=q.val(),l=r.val(),y=s.val(),z=t.val(),A=u.val(),B=v.val(),C=a(w[0]).html()||"",D=a(w[1]).html()||"";if(0==d||!/^\d+$/.test(d))return a.options.errorMsgHandler(e.lang("invalidRows"),"error"),void m[0].focus();if(0==f||!/^\d+$/.test(f))return a.options.errorMsgHandler(e.lang("invalidRows"),"error"),void n[0].focus();if(!/^\d*$/.test(g))return a.options.errorMsgHandler(e.lang("invalidWidth"),"error"),void o[0].focus();if(!/^\d*$/.test(i))return a.options.errorMsgHandler(e.lang("invalidHeight"),"error"),void p[0].focus();if(!/^\d*$/.test(y))return a.options.errorMsgHandler(e.lang("invalidPadding"),"error"),void s[0].focus();if(!/^\d*$/.test(z))return a.options.errorMsgHandler(e.lang("invalidSpacing"),"error"),void t[0].focus();if(!/^\d*$/.test(B))return a.options.errorMsgHandler(e.lang("invalidBorder"),"error"),void v[0].focus();if(x)return""!==g?x.width(g+k):x.css("width",""),void 0!==x[0].width&&x.removeAttr("width"),""!==i?x.height(i+l):x.css("height",""),void 0!==x[0].height&&x.removeAttr("height"),x.css("background-color",D),void 0!==x[0].bgColor&&x.removeAttr("bgColor"),""!==y?x[0].cellPadding=y:x.removeAttr("cellPadding"),""!==z?x[0].cellSpacing=z:x.removeAttr("cellSpacing"),""!==A?x[0].align=A:x.removeAttr("align"),""!==B?x.attr("border",B):x.removeAttr("border"),""===B||"0"===B?x.addClass(h):x.removeClass(h),""!==C?x.attr("borderColor",C):x.removeAttr("borderColor"),e.hideDialog().focus(),e.cmd.range.moveToBookmark(j),e.cmd.select(),void e.addBookmark();var E="";""!==g&&(E+="width:"+g+k+";"),""!==i&&(E+="height:"+i+l+";"),""!==D&&(E+="background-color:"+D+";");var F='G;G++){F+="";for(var H=0;f>H;H++)F+="";F+=""}F+="
    "+(a.IE?" ":"
    ")+"
    ",a.IE||(F+="
    ");var I=c(e.cmd.range);"p"==I.name?(I.before(a(F)),I.remove(),e.cmd.selection(),e.insertHtml("
    "),e.select().hideDialog().focus()):(e.insertHtml(F),e.select().hideDialog().focus(),e.addBookmark())}}}),l=k.div,m=a('[name="rows"]',l).val(3),n=a('[name="cols"]',l).val(2),o=a('[name="width"]',l).val(100),p=a('[name="height"]',l),q=a('[name="widthType"]',l),r=a('[name="heightType"]',l),s=a('[name="padding"]',l).val(0),t=a('[name="spacing"]',l).val(0),u=a('[name="align"]',l),v=a('[name="border"]',l).val(1),w=a(".ke-input-color",l);c(l,w.eq(0)),c(l,w.eq(1)),b(w.eq(1),""),m[0].focus(),m[0].select();var x;if(!d&&(x=e.plugin.getSelectedTable())){m.val(x[0].rows.length),n.val(x[0].rows.length>0?x[0].rows[0].cells.length:0),m.attr("disabled",!0),n.attr("disabled",!0);var y,z=x[0].style.width||x[0].width,A=x[0].style.height||x[0].height;void 0!==z&&(y=/^(\d+)((?:px|%)*)$/.exec(z))?(o.val(y[1]),q.val(y[2])):o.val(""),void 0!==A&&(y=/^(\d+)((?:px|%)*)$/.exec(A))&&(p.val(y[1]),r.val(y[2])),s.val(x[0].cellPadding||""),t.val(x[0].cellSpacing||""),u.val(x[0].align||""),v.val(void 0===x[0].border?"":x[0].border),b(w.eq(0),a.toHex(x.attr("borderColor")||"")),b(w.eq(1),a.toHex(x[0].style.backgroundColor||x[0].bgColor||"")),o[0].focus(),o[0].select()}},cellprop:function(){var d=['
    ','
    ','",g.width+'   ','   ",g.height+'   ','","
    ",'
    ','",g.textAlign+' ",g.verticalAlign+' ","
    ",'
    ','",g.borderWidth+'   ',g.borderColor+' ',"
    ",'
    ','",'',"
    ","
    "].join(""),h=e.cmd.range.createBookmark(),i=e.createDialog({name:f,width:500,title:e.lang("tablecell"),body:d,beforeRemove:function(){t.unbind()},yesBtn:{name:e.lang("yes"),click:function(b){var c=k.val(),d=l.val(),f=m.val(),g=n.val(),i=(o.val(),p.val(),q.val()),j=r.val(),u=s.val(),w=a(t[0]).html()||"",x=a(t[1]).html()||"";return/^\d*$/.test(c)?/^\d*$/.test(d)?/^\d*$/.test(u)?(v.css({width:""!==c?c+f:"",height:""!==d?d+g:"","background-color":x,"text-align":i,"vertical-align":j,"border-width":u,"border-style":""!==u?"solid":"","border-color":w}),e.hideDialog().focus(),e.cmd.range.moveToBookmark(h),e.cmd.select(),void e.addBookmark()):(a.options.errorMsgHandler(e.lang("invalidBorder"),"error"),void s[0].focus()):(a.options.errorMsgHandler(e.lang("invalidHeight"),"error"),void l[0].focus()):(a.options.errorMsgHandler(e.lang("invalidWidth"),"error"),void k[0].focus())}}}),j=i.div,k=a('[name="width"]',j).val(100),l=a('[name="height"]',j),m=a('[name="widthType"]',j),n=a('[name="heightType"]',j),o=a('[name="padding"]',j).val(0),p=a('[name="spacing"]',j).val(0),q=a('[name="textAlign"]',j),r=a('[name="verticalAlign"]',j),s=a('[name="border"]',j).val(1),t=a(".ke-input-color",j);c(j,t.eq(0)),c(j,t.eq(1)),b(t.eq(1),""),k[0].focus(),k[0].select();var u,v=e.plugin.getSelectedCell(),w=v[0].style.width||v[0].width||"",x=v[0].style.height||v[0].height||"";(u=/^(\d+)((?:px|%)*)$/.exec(w))?(k.val(u[1]),m.val(u[2])):k.val(""),(u=/^(\d+)((?:px|%)*)$/.exec(x))&&(l.val(u[1]),n.val(u[2])),q.val(v[0].style.textAlign||""),r.val(v[0].style.verticalAlign||"");var y=v[0].style.borderWidth||"";y&&(y=parseInt(y)),s.val(y),b(t.eq(0),a.toHex(v[0].style.borderColor||"")),b(t.eq(1),a.toHex(v[0].style.backgroundColor||"")),k[0].focus(),k[0].select()},insert:function(){this.prop(!0)},"delete":function(){var a=e.plugin.getSelectedTable();e.cmd.range.setStartBefore(a[0]).collapse(!0),e.cmd.select(),a.remove(),e.addBookmark()},colinsert:function(b){var c=e.plugin.getSelectedTable()[0],f=e.plugin.getSelectedRow()[0],g=e.plugin.getSelectedCell()[0],h=g.cellIndex+b;h+=c.rows[0].cells.length-f.cells.length;for(var i=0,j=c.rows.length;j>i;i++){var k=c.rows[i],l=k.insertCell(h);l.innerHTML=a.IE?"":"
    ",h=d(c,k,l)}e.cmd.range.selectNodeContents(g).collapse(!0),e.cmd.select(),e.addBookmark()},colinsertleft:function(){this.colinsert(0)},colinsertright:function(){this.colinsert(1)},rowinsert:function(b){var c=e.plugin.getSelectedTable()[0],d=e.plugin.getSelectedRow()[0],f=e.plugin.getSelectedCell()[0],g=d.rowIndex; +1===b&&(g=d.rowIndex+(f.rowSpan-1)+b);for(var h=c.insertRow(g),i=0,j=d.cells.length;j>i;i++){d.cells[i].rowSpan>1&&(j-=d.cells[i].rowSpan-1);var k=h.insertCell(i);1===b&&d.cells[i].colSpan>1&&(k.colSpan=d.cells[i].colSpan),k.innerHTML=a.IE?"":"
    "}for(var l=g;l>=0;l--){var m=c.rows[l].cells;if(m.length>i){for(var n=f.cellIndex;n>=0;n--)m[n].rowSpan>1&&(m[n].rowSpan+=1);break}}e.cmd.range.selectNodeContents(f).collapse(!0),e.cmd.select(),e.addBookmark()},rowinsertabove:function(){this.rowinsert(0)},rowinsertbelow:function(){this.rowinsert(1)},rowmerge:function(){var a=e.plugin.getSelectedTable()[0],b=e.plugin.getSelectedRow()[0],c=e.plugin.getSelectedCell()[0],d=b.rowIndex,f=d+c.rowSpan,g=a.rows[f];if(!(a.rows.length<=f)){var h=c.cellIndex;if(!(g.cells.length<=h)){var i=g.cells[h];c.colSpan===i.colSpan&&(c.rowSpan+=i.rowSpan,g.deleteCell(h),e.cmd.range.selectNodeContents(c).collapse(!0),e.cmd.select(),e.addBookmark())}}},colmerge:function(){var a=(e.plugin.getSelectedTable()[0],e.plugin.getSelectedRow()[0]),b=e.plugin.getSelectedCell()[0],c=(a.rowIndex,b.cellIndex),d=c+1;if(!(a.cells.length<=d)){var f=a.cells[d];b.rowSpan===f.rowSpan&&(b.colSpan+=f.colSpan,a.deleteCell(d),e.cmd.range.selectNodeContents(b).collapse(!0),e.cmd.select(),e.addBookmark())}},rowsplit:function(){var b=e.plugin.getSelectedTable()[0],c=e.plugin.getSelectedRow()[0],f=e.plugin.getSelectedCell()[0],g=c.rowIndex;if(1!==f.rowSpan){for(var h=d(b,c,f),i=1,j=f.rowSpan;j>i;i++){var k=b.rows[g+i],l=k.insertCell(h);f.colSpan>1&&(l.colSpan=f.colSpan),l.innerHTML=a.IE?"":"
    ",h=d(b,k,l)}a(f).removeAttr("rowSpan"),e.cmd.range.selectNodeContents(f).collapse(!0),e.cmd.select(),e.addBookmark()}},colsplit:function(){var b=(e.plugin.getSelectedTable()[0],e.plugin.getSelectedRow()[0]),c=e.plugin.getSelectedCell()[0],d=c.cellIndex;if(1!==c.colSpan){for(var f=1,g=c.colSpan;g>f;f++){var h=b.insertCell(d+f);c.rowSpan>1&&(h.rowSpan=c.rowSpan),h.innerHTML=a.IE?"":"
    "}a(c).removeAttr("colSpan"),e.cmd.range.selectNodeContents(c).collapse(!0),e.cmd.select(),e.addBookmark()}},coldelete:function(){for(var b=e.plugin.getSelectedTable()[0],c=e.plugin.getSelectedRow()[0],d=e.plugin.getSelectedCell()[0],f=d.cellIndex,g=0,h=b.rows.length;h>g;g++){var i=b.rows[g],j=i.cells[f];j.colSpan>1?(j.colSpan-=1,1===j.colSpan&&a(j).removeAttr("colSpan")):i.deleteCell(f),j.rowSpan>1&&(g+=j.rowSpan-1)}0===c.cells.length?(e.cmd.range.setStartBefore(b).collapse(!0),e.cmd.select(),a(b).remove()):e.cmd.selection(!0),e.addBookmark()},rowdelete:function(){for(var b=e.plugin.getSelectedTable()[0],c=e.plugin.getSelectedRow()[0],d=e.plugin.getSelectedCell()[0],f=c.rowIndex,g=d.rowSpan-1;g>=0;g--)b.deleteRow(f+g);0===b.rows.length?(e.cmd.range.setStartBefore(b).collapse(!0),e.cmd.select(),a(b).remove()):e.cmd.selection(!0),e.addBookmark()}},e.clickToolbar(f,e.plugin.table.prop)}),KindEditor.plugin("template",function(a){function b(b){return e+b+"?ver="+encodeURIComponent(a.DEBUG?a.TIME:a.VERSION)}var c=this,d="template",e=(c.lang(d+"."),c.pluginsPath+d+"/html/");c.clickToolbar(d,function(){var e=c.lang(d+"."),f=['
    ','
    ','
    ',e.selectTemplate+' ",' ","
    ","
    ",'',"
    "].join("");var g=c.createDialog({name:d,width:500,title:c.lang(d),body:html,yesBtn:{name:c.lang("yes"),click:function(b){var d=a.iframeDoc(j);c[i[0].checked?"html":"insertHtml"](d.body.innerHTML).hideDialog().focus()}}}),h=a("select",g.div),i=a('[name="replaceFlag"]',g.div),j=a("iframe",g.div);i[0].checked=!0,j.attr("src",b(h.val())),h.change(function(){j.attr("src",b(this.value))})})}),KindEditor.plugin("wordpaste",function(a){var b=this,c="wordpaste";b.clickToolbar(c,function(){var d=b.lang(c+"."),e='
    '+d.comment+'
    ',f=b.createDialog({name:c,width:450,title:b.lang(c),body:e,yesBtn:{name:b.lang("yes"),click:function(c){var d=i.body.innerHTML;d=a.clearMsWord(d,b.filterMode?b.htmlTags:a.options.htmlTags),b.insertHtml(d).hideDialog().focus()}}}),g=f.div,h=a("iframe",g),i=a.iframeDoc(h);a.IE||(i.designMode="on"),i.open(),i.write("WordPaste"),i.write(''),a.IE||i.write("
    "),i.write(""),i.close(),a.IE&&(i.body.contentEditable="true"),h[0].contentWindow.focus()})}),KindEditor.plugin("fixtoolbar",function(a){function b(){var b=a(".ke-toolbar"),c=b.pos().y;a(window).bind("scroll",function(){"fixed"==b.css("position")?document.body.scrollTop-c<0&&(b.css("position","static"),b.css("top","auto")):b.pos().y-document.body.scrollTop<0&&(b.css("position","fixed"),b.css("top",0))})}var c=this;c.fixToolBar&&(c.isCreated?b():c.afterCreate(b))}); \ No newline at end of file diff --git a/tools/NKeditor/NKeditor-all.js b/tools/NKeditor/NKeditor-all.js new file mode 100644 index 00000000..3e7fcf16 --- /dev/null +++ b/tools/NKeditor/NKeditor-all.js @@ -0,0 +1,9135 @@ +/******************************************************************************* +* KindEditor - WYSIWYG HTML Editor for Internet +* Copyright (C) 2006-2020 kindsoft.net +* +* @author Roddy +* @website http://www.kindsoft.net/ +* @licence http://www.kindsoft.net/license.php +* @version 5.0.4 (2020-03-11) +*******************************************************************************/ +(function (window, undefined) { + if (window.KindEditor) { + return; + } + + +if (!window.console) { + window.console = {}; +} +if (!console.log) { + console.log = function () {}; +} +var _VERSION = '5.0.4 (2020-03-11)', + _ua = navigator.userAgent.toLowerCase(), + _IE = _ua.indexOf('msie') > -1 && _ua.indexOf('opera') == -1, + _NEWIE = _ua.indexOf('msie') == -1 && _ua.indexOf('trident') > -1, + _GECKO = _ua.indexOf('gecko') > -1 && _ua.indexOf('khtml') == -1, + _WEBKIT = _ua.indexOf('applewebkit') > -1, + _OPERA = _ua.indexOf('opera') > -1, + _MOBILE = _ua.indexOf('mobile') > -1, + _IOS = /ipad|iphone|ipod/.test(_ua), + _QUIRKS = document.compatMode != 'CSS1Compat', + _IERANGE = !window.getSelection, + _matches = /(?:msie|firefox|webkit|opera)[\/:\s](\d+)/.exec(_ua), + _V = _matches ? _matches[1] : '0', + _TIME = new Date().getTime(); +function _isArray(val) { + if (!val) { + return false; + } + return Object.prototype.toString.call(val) === '[object Array]'; +} +function _isFunction(val) { + if (!val) { + return false; + } + return Object.prototype.toString.call(val) === '[object Function]'; +} +function _inArray(val, arr) { + for (var i = 0, len = arr.length; i < len; i++) { + if (val === arr[i]) { + return i; + } + } + return -1; +} +function _each(obj, fn) { + if (_isArray(obj)) { + for (var i = 0, len = obj.length; i < len; i++) { + if (fn.call(obj[i], i, obj[i]) === false) { + break; + } + } + } else { + for (var key in obj) { + if (obj.hasOwnProperty(key)) { + if (fn.call(obj[key], key, obj[key]) === false) { + break; + } + } + } + } +} +function _trim(str) { + return str.replace(/(?:^[ \t\n\r]+)|(?:[ \t\n\r]+$)/g, ''); +} +function _inString(val, str, delimiter) { + delimiter = delimiter === undefined ? ',' : delimiter; + return (delimiter + str + delimiter).indexOf(delimiter + val + delimiter) >= 0; +} +function _addUnit(val, unit) { + unit = unit || 'px'; + return val && /^-?\d+(?:\.\d+)?$/.test(val) ? val + unit : val; +} +function _removeUnit(val) { + var match; + return val && (match = /(\d+)/.exec(val)) ? parseInt(match[1], 10) : 0; +} +function _escape(val) { + return val.replace(/&/g, '&').replace(//g, '>').replace(/"/g, '"'); +} +function _unescape(val) { + return val.replace(/</g, '<').replace(/>/g, '>').replace(/"/g, '"').replace(/&/g, '&'); +} +function _toCamel(str) { + var arr = str.split('-'); + str = ''; + _each(arr, function(key, val) { + str += (key > 0) ? val.charAt(0).toUpperCase() + val.substr(1) : val; + }); + return str; +} +function _toHex(val) { + function hex(d) { + var s = parseInt(d, 10).toString(16).toUpperCase(); + return s.length > 1 ? s : '0' + s; + } + return val.replace(/rgb\s*\(\s*(\d+)\s*,\s*(\d+)\s*,\s*(\d+)\s*\)/ig, + function($0, $1, $2, $3) { + return '#' + hex($1) + hex($2) + hex($3); + } + ); +} +function _toMap(val, delimiter) { + delimiter = delimiter === undefined ? ',' : delimiter; + var map = {}, arr = _isArray(val) ? val : val.split(delimiter), match; + _each(arr, function(key, val) { + if ((match = /^(\d+)\.\.(\d+)$/.exec(val))) { + for (var i = parseInt(match[1], 10); i <= parseInt(match[2], 10); i++) { + map[i.toString()] = true; + } + } else { + map[val] = true; + } + }); + return map; +} +function _toArray(obj, offset) { + return Array.prototype.slice.call(obj, offset || 0); +} +function _undef(val, defaultVal) { + return val === undefined ? defaultVal : val; +} +function _invalidUrl(url) { + return !url || /[<>"]/.test(url); +} +function _addParam(url, param) { + return url.indexOf('?') >= 0 ? url + '&' + param : url + '?' + param; +} +function _extend(child, parent, proto) { + if (!proto) { + proto = parent; + parent = null; + } + var childProto; + if (parent) { + var fn = function () {}; + fn.prototype = parent.prototype; + childProto = new fn(); + _each(proto, function(key, val) { + childProto[key] = val; + }); + } else { + childProto = proto; + } + childProto.constructor = child; + child.prototype = childProto; + child.parent = parent ? parent.prototype : null; +} + +function _json(text) { + var match; + if ((match = /\{[\s\S]*\}|\[[\s\S]*\]/.exec(text))) { + text = match[0]; + } + var cx = /[\u0000\u00ad\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff]/g; + cx.lastIndex = 0; + if (cx.test(text)) { + text = text.replace(cx, function (a) { + return '\\u' + ('0000' + a.charCodeAt(0).toString(16)).slice(-4); + }); + } + if (/^[\],:{}\s]*$/. + test(text.replace(/\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g, '@'). + replace(/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g, ']'). + replace(/(?:^|:|,)(?:\s*\[)+/g, ''))) { + return eval('(' + text + ')'); + } + throw 'JSON parse error'; +} + +function _merge(distObj, obj) { + for (var name in distObj) { + obj[name] = distObj[name]; + } + return obj; +} +var _round = Math.round; +var K = { + DEBUG : false, + VERSION : _VERSION, + IE : _IE, + GECKO : _GECKO, + WEBKIT : _WEBKIT, + OPERA : _OPERA, + V : _V, + TIME : _TIME, + each : _each, + isArray : _isArray, + isFunction : _isFunction, + inArray : _inArray, + inString : _inString, + trim : _trim, + addUnit : _addUnit, + removeUnit : _removeUnit, + escape : _escape, + unescape : _unescape, + toCamel : _toCamel, + toHex : _toHex, + toMap : _toMap, + toArray : _toArray, + undef : _undef, + invalidUrl : _invalidUrl, + addParam : _addParam, + extend : _extend, + merge : _merge, + json : _json +}; +var _INLINE_TAG_MAP = _toMap('a,abbr,acronym,b,basefont,bdo,big,br,button,cite,code,del,dfn,em,font,i,img,input,ins,kbd,label,map,q,s,samp,select,small,span,strike,strong,sub,sup,textarea,tt,u,var'), + _BLOCK_TAG_MAP = _toMap('address,applet,blockquote,body,center,dd,dir,div,dl,dt,fieldset,form,frameset,h1,h2,h3,h4,h5,h6,head,hr,html,iframe,ins,isindex,li,map,menu,meta,noframes,noscript,object,ol,p,pre,script,style,table,tbody,td,tfoot,th,thead,title,tr,ul'), + _SINGLE_TAG_MAP = _toMap('area,base,basefont,br,col,frame,hr,img,input,isindex,link,meta,param,embed'), + _STYLE_TAG_MAP = _toMap('b,basefont,big,del,em,font,i,s,small,span,strike,strong,sub,sup,u'), + _CONTROL_TAG_MAP = _toMap('img,table,input,textarea,button'), + _PRE_TAG_MAP = _toMap('pre,style,script'), + _NOSPLIT_TAG_MAP = _toMap('html,head,body,td,tr,table,ol,ul,li'), + _AUTOCLOSE_TAG_MAP = _toMap('colgroup,dd,dt,li,options,p,td,tfoot,th,thead,tr'), + _FILL_ATTR_MAP = _toMap('checked,compact,declare,defer,disabled,ismap,multiple,nohref,noresize,noshade,nowrap,readonly,selected'), + _VALUE_TAG_MAP = _toMap('input,button,textarea,select'); + + +function _getBasePath() { + var els = document.getElementsByTagName('script'), src; + for (var i = 0, len = els.length; i < len; i++) { + src = els[i].src || ''; + if (/NKeditor[\w\-\.]*\.js/i.test(src)) { + return src.substring(0, src.lastIndexOf('/') + 1); + } + } + return ''; +} +K.basePath = _getBasePath(); +K.options = { + designMode : true, + fullscreenMode : false, + filterMode : true, + wellFormatMode : true, + loadStyleMode : true, + basePath : K.basePath, + themesPath : K.basePath + 'themes/', + langPath : K.basePath + 'lang/', + pluginsPath : K.basePath + 'plugins/', + themeType : 'primary', + langType : 'zh-CN', + urlType : '', + newlineTag : 'p', + resizeType : 2, + syncType : 'form', + pasteType : 2, + dialogAlignType : 'page', + useContextmenu : true, + fullscreenShortcut : false, + bodyClass : 'ke-content', + indentChar : '\t', + cssPath : [], + jsPath: [], + showHelpGrid: false, + cssData : '', + minWidth : 650, + minHeight : 300, + minChangeSize : 50, + zIndex : 811213, + items : [ + 'source', 'undo', 'redo', 'preview', 'print', 'template', 'code', 'quote', 'cut', 'copy', 'paste', + 'plainpaste', 'wordpaste', 'justifyleft', 'justifycenter', 'justifyright', + 'justifyfull', 'insertorderedlist', 'insertunorderedlist', 'indent', 'outdent', 'subscript', + 'superscript', 'clearhtml', 'quickformat', 'selectall', '/', + 'formatblock', 'fontname', 'fontsize', 'forecolor', 'hilitecolor', 'bold', + 'italic', 'underline', 'strikethrough', 'lineheight', 'removeformat', 'image', 'multiimage','graft', + 'flash', 'media', 'insertfile', 'table', 'hr', 'emoticons', 'baidumap', 'pagebreak', + 'anchor', 'link', 'unlink', 'about','fullscreen' + ], + noDisableItems : ['source', 'fullscreen'], + colorTable : [ + ['#E53333', '#E56600', '#FF9900', '#64451D', '#DFC5A4', '#FFE500'], + ['#009900', '#006600', '#99BB00', '#B8D100', '#60D978', '#00D5FF'], + ['#337FE5', '#003399', '#4C33E5', '#9933E5', '#CC33E5', '#EE33EE'], + ['#FFFFFF', '#DDDDDD', '#999999', '#666666', '#333333', '#000000'] + ], + fontSizeTable : ['9px', '10px', '12px', '14px', '16px', '18px', '24px', '32px'], + htmlTags : { + font : ['id', 'class', 'color', 'size', 'face', '.background-color'], + span : [ + 'id', 'class', '.color', '.background-color', '.font-size', '.font-family', '.background', + '.font-weight', '.font-style', '.text-decoration', '.vertical-align', '.line-height' + ], + div : [ + 'id', 'class', 'align', '.border', '.margin', '.padding', '.text-align', '.color', + '.background-color', '.font-size', '.font-family', '.font-weight', '.background', + '.font-style', '.text-decoration', '.vertical-align', '.margin-left' + ], + table: [ + 'id', 'class', 'border', 'cellspacing', 'cellpadding', 'width', 'height', 'align', 'bordercolor', + '.padding', '.margin', '.border', 'bgcolor', '.text-align', '.color', '.background-color', + '.font-size', '.font-family', '.font-weight', '.font-style', '.text-decoration', '.background', + '.width', '.height', '.border-collapse' + ], + 'td,th': [ + 'id', 'class', 'align', 'valign', 'width', 'height', 'colspan', 'rowspan', 'bgcolor', + '.text-align', '.color', '.background-color', '.font-size', '.font-family', '.font-weight', + '.font-style', '.text-decoration', '.vertical-align', '.background', '.border' + ], + a : ['id', 'class', 'href', 'target', 'name'], + embed : ['id', 'class', 'src', 'width', 'height', 'type', 'loop', 'autostart', 'quality', '.width', '.height', 'align', 'allowscriptaccess', 'wmode'], + img : ['id', 'class', 'src', 'width', 'height', 'border', 'alt', 'title', 'align', '.width', '.height', '.border'], + 'p,ol,ul,li,blockquote,h1,h2,h3,h4,h5,h6' : [ + 'id', 'class', 'align', '.text-align', '.color', '.background-color', '.font-size', '.font-family', '.background', + '.font-weight', '.font-style', '.text-decoration', '.vertical-align', '.text-indent', '.margin-left' + ], + pre : ['id', 'class'], + hr : ['id', 'class', '.page-break-after'], + 'br,tbody,tr,strong,b,sub,sup,em,i,u,strike,s,del' : ['id', 'class'], + iframe : ['id', 'class', 'src', 'frameborder', 'width', 'height', '.width', '.height'] + }, + layout : '
    ', + afterBlur : function () { + this.sync(); + }, + errorMsgHandler : function (message, type) { + console.log(message); + console.log(type); + alert(message); + }, + dialogOffset : 0, + allowUploadGraft : true, + resLoadCache : { + }, + tableBorderColor : '#cccccc', +}; + + +var _useCapture = false; + +var _INPUT_KEY_MAP = _toMap('8,9,13,32,46,48..57,59,61,65..90,106,109..111,188,190..192,219..222'); +var _CURSORMOVE_KEY_MAP = _toMap('33..40'); +var _CHANGE_KEY_MAP = {}; +_each(_INPUT_KEY_MAP, function(key, val) { + _CHANGE_KEY_MAP[key] = val; +}); +_each(_CURSORMOVE_KEY_MAP, function(key, val) { + _CHANGE_KEY_MAP[key] = val; +}); + +function _bindEvent(el, type, fn) { + if (el.addEventListener){ + el.addEventListener(type, fn, _useCapture); + } else if (el.attachEvent){ + el.attachEvent('on' + type, fn); + } +} +function _unbindEvent(el, type, fn) { + if (el.removeEventListener){ + el.removeEventListener(type, fn, _useCapture); + } else if (el.detachEvent){ + el.detachEvent('on' + type, fn); + } +} +var _EVENT_PROPS = ('altKey,attrChange,attrName,bubbles,button,cancelable,charCode,clientX,clientY,ctrlKey,currentTarget,' + + 'data,detail,eventPhase,fromElement,handler,keyCode,metaKey,newValue,offsetX,offsetY,originalTarget,pageX,' + + 'pageY,prevValue,relatedNode,relatedTarget,screenX,screenY,shiftKey,srcElement,target,toElement,view,wheelDelta,which').split(','); + +function KEvent(el, event) { + this.init(el, event); +} +_extend(KEvent, { + init : function(el, event) { + var self = this, doc = el.ownerDocument || el.document || el; + self.event = event; + _each(_EVENT_PROPS, function(key, val) { + self[val] = event[val]; + }); + if (!self.target) { + self.target = self.srcElement || doc; + } + if (self.target.nodeType === 3) { + self.target = self.target.parentNode; + } + if (!self.relatedTarget && self.fromElement) { + self.relatedTarget = self.fromElement === self.target ? self.toElement : self.fromElement; + } + if (self.pageX == null && self.clientX != null) { + var d = doc.documentElement, body = doc.body; + self.pageX = self.clientX + (d && d.scrollLeft || body && body.scrollLeft || 0) - (d && d.clientLeft || body && body.clientLeft || 0); + self.pageY = self.clientY + (d && d.scrollTop || body && body.scrollTop || 0) - (d && d.clientTop || body && body.clientTop || 0); + } + if (!self.which && ((self.charCode || self.charCode === 0) ? self.charCode : self.keyCode)) { + self.which = self.charCode || self.keyCode; + } + if (!self.metaKey && self.ctrlKey) { + self.metaKey = self.ctrlKey; + } + if (!self.which && self.button !== undefined) { + self.which = (self.button & 1 ? 1 : (self.button & 2 ? 3 : (self.button & 4 ? 2 : 0))); + } + switch (self.which) { + case 186 : + self.which = 59; + break; + case 187 : + case 107 : + case 43 : + self.which = 61; + break; + case 189 : + case 45 : + self.which = 109; + break; + case 42 : + self.which = 106; + break; + case 47 : + self.which = 111; + break; + case 78 : + self.which = 110; + break; + } + if (self.which >= 96 && self.which <= 105) { + self.which -= 48; + } + }, + preventDefault : function() { + var ev = this.event; + if (ev.preventDefault) { + ev.preventDefault(); + } else { + ev.returnValue = false; + } + }, + stopPropagation : function() { + var ev = this.event; + if (ev.stopPropagation) { + ev.stopPropagation(); + } else { + ev.cancelBubble = true; + } + }, + stop : function() { + this.preventDefault(); + this.stopPropagation(); + } +}); +var _eventExpendo = 'kindeditor_' + _TIME, _eventId = 0, _eventData = {}; +function _getId(el) { + return el[_eventExpendo] || null; +} +function _setId(el) { + el[_eventExpendo] = ++_eventId; + return _eventId; +} +function _removeId(el) { + try { + delete el[_eventExpendo]; + } catch(e) { + if (el.removeAttribute) { + el.removeAttribute(_eventExpendo); + } + } +} +function _bind(el, type, fn) { + if (type.indexOf(',') >= 0) { + _each(type.split(','), function() { + _bind(el, this, fn); + }); + return; + } + var id = _getId(el); + if (!id) { + id = _setId(el); + } + if (_eventData[id] === undefined) { + _eventData[id] = {}; + } + var events = _eventData[id][type]; + if (events && events.length > 0) { + _unbindEvent(el, type, events[0]); + } else { + _eventData[id][type] = []; + _eventData[id].el = el; + } + events = _eventData[id][type]; + if (events.length === 0) { + events[0] = function(e) { + var kevent = e ? new KEvent(el, e) : undefined; + _each(events, function(i, event) { + if (i > 0 && event) { + event.call(el, kevent); + } + }); + }; + } + if (_inArray(fn, events) < 0) { + events.push(fn); + } + _bindEvent(el, type, events[0]); +} +function _unbind(el, type, fn) { + if (type && type.indexOf(',') >= 0) { + _each(type.split(','), function() { + _unbind(el, this, fn); + }); + return; + } + var id = _getId(el); + if (!id) { + return; + } + if (type === undefined) { + if (id in _eventData) { + _each(_eventData[id], function(key, events) { + if (key != 'el' && events.length > 0) { + _unbindEvent(el, key, events[0]); + } + }); + delete _eventData[id]; + _removeId(el); + } + return; + } + if (!_eventData[id]) { + return; + } + var events = _eventData[id][type]; + if (events && events.length > 0) { + if (fn === undefined) { + _unbindEvent(el, type, events[0]); + delete _eventData[id][type]; + } else { + _each(events, function(i, event) { + if (i > 0 && event === fn) { + events.splice(i, 1); + } + }); + if (events.length == 1) { + _unbindEvent(el, type, events[0]); + delete _eventData[id][type]; + } + } + var count = 0; + _each(_eventData[id], function() { + count++; + }); + if (count < 2) { + delete _eventData[id]; + _removeId(el); + } + } +} +function _fire(el, type) { + if (type.indexOf(',') >= 0) { + _each(type.split(','), function() { + _fire(el, this); + }); + return; + } + var id = _getId(el); + if (!id) { + return; + } + var events = _eventData[id][type]; + if (_eventData[id] && events && events.length > 0) { + events[0](); + } +} +function _ctrl(el, key, fn) { + var self = this; + key = /^\d{2,}$/.test(key) ? key : key.toUpperCase().charCodeAt(0); + _bind(el, 'keydown', function(e) { + if (e.ctrlKey && e.which == key && !e.shiftKey && !e.altKey) { + fn.call(el); + e.stop(); + } + }); +} +var _readyFinished = false; +function _ready(fn) { + if (_readyFinished) { + fn(KindEditor); + return; + } + var loaded = false; + function readyFunc() { + if (!loaded) { + loaded = true; + fn(KindEditor); + _readyFinished = true; + } + } + function ieReadyFunc() { + if (!loaded) { + try { + document.documentElement.doScroll('left'); + } catch(e) { + setTimeout(ieReadyFunc, 100); + return; + } + readyFunc(); + } + } + function ieReadyStateFunc() { + if (document.readyState === 'complete') { + readyFunc(); + } + } + if (document.addEventListener) { + _bind(document, 'DOMContentLoaded', readyFunc); + } else if (document.attachEvent) { + _bind(document, 'readystatechange', ieReadyStateFunc); + var toplevel = false; + try { + toplevel = window.frameElement == null; + } catch(e) {} + if (document.documentElement.doScroll && toplevel) { + ieReadyFunc(); + } + } + _bind(window, 'load', readyFunc); +} +if (window.attachEvent) { + window.attachEvent('onunload', function() { + _each(_eventData, function(key, events) { + if (events.el) { + _unbind(events.el); + } + }); + }); +} +K.ctrl = _ctrl; +K.ready = _ready; + +function _getCssList(css) { + css = css.replace(/"/g, '"'); + var list = {}, + reg = /\s*([\w\-]+)\s*:([^;]*)(;|$)/g, + match; + while ((match = reg.exec(css))) { + var key = _trim(match[1].toLowerCase()), + val = _trim(_toHex(match[2])); + list[key] = val; + } + return list; +} +function _getAttrList(tag) { + var list = {}, + reg = /\s+(?:([\w\-:]+)|(?:([\w\-:]+)=([^\s"'<>]+))|(?:([\w\-:"]+)="([^"]*)")|(?:([\w\-:"]+)='([^']*)'))(?=(?:\s|\/|>)+)/g, + match; + while ((match = reg.exec(tag))) { + var key = (match[1] || match[2] || match[4] || match[6]).toLowerCase(), + val = (match[2] ? match[3] : (match[4] ? match[5] : match[7])) || ''; + list[key] = val; + } + return list; +} +function _addClassToTag(tag, className) { + if (/\s+class\s*=/.test(tag)) { + tag = tag.replace(/(\s+class=["']?)([^"']*)(["']?[\s>])/, function($0, $1, $2, $3) { + if ((' ' + $2 + ' ').indexOf(' ' + className + ' ') < 0) { + return $2 === '' ? $1 + className + $3 : $1 + $2 + ' ' + className + $3; + } else { + return $0; + } + }); + } else { + tag = tag.substr(0, tag.length - 1) + ' class="' + className + '">'; + } + return tag; +} +function _formatCss(css) { + var str = ''; + _each(_getCssList(css), function(key, val) { + str += key + ':' + val + ';'; + }); + return str; +} +function _formatUrl(url, mode, host, pathname) { + mode = _undef(mode, '').toLowerCase(); + if (url.substr(0, 5) != 'data:') { + url = url.replace(/([^:])\/\//g, '$1/'); + } + if (_inArray(mode, ['absolute', 'relative', 'domain']) < 0) { + return url; + } + host = host || location.protocol + '//' + location.host; + if (pathname === undefined) { + var m = location.pathname.match(/^(\/.*)\//); + pathname = m ? m[1] : ''; + } + var match; + if ((match = /^(\w+:\/\/[^\/]*)/.exec(url))) { + if (match[1] !== host) { + return url; + } + } else if (/^\w+:/.test(url)) { + return url; + } + function getRealPath(path) { + var parts = path.split('/'), paths = []; + for (var i = 0, len = parts.length; i < len; i++) { + var part = parts[i]; + if (part == '..') { + if (paths.length > 0) { + paths.pop(); + } + } else if (part !== '' && part != '.') { + paths.push(part); + } + } + return '/' + paths.join('/'); + } + if (/^\//.test(url)) { + url = host + getRealPath(url.substr(1)); + } else if (!/^\w+:\/\//.test(url)) { + url = host + getRealPath(pathname + '/' + url); + } + function getRelativePath(path, depth) { + if (url.substr(0, path.length) === path) { + var arr = []; + for (var i = 0; i < depth; i++) { + arr.push('..'); + } + var prefix = '.'; + if (arr.length > 0) { + prefix += '/' + arr.join('/'); + } + if (pathname == '/') { + prefix += '/'; + } + return prefix + url.substr(path.length); + } else { + if ((match = /^(.*)\//.exec(path))) { + return getRelativePath(match[1], ++depth); + } + } + } + if (mode === 'relative') { + url = getRelativePath(host + pathname, 0).substr(2); + } else if (mode === 'absolute') { + if (url.substr(0, host.length) === host) { + url = url.substr(host.length); + } + } + return url; +} +function _formatHtml(html, htmlTags, urlType, wellFormatted, indentChar) { + if (html == null) { + html = ''; + } + urlType = urlType || ''; + wellFormatted = _undef(wellFormatted, false); + indentChar = _undef(indentChar, '\t'); + var fontSizeList = 'xx-small,x-small,small,medium,large,x-large,xx-large'.split(','); + html = html.replace(/(<(?:pre|pre\s[^>]*)>)([\s\S]*?)(<\/pre>)/ig, function($0, $1, $2, $3) { + return $1 + $2.replace(/<(?:br|br\s[^>]*)>/ig, '\n') + $3; + }); + html = html.replace(/<(?:br|br\s[^>]*)\s*\/?>\s*<\/p>/ig, '

    '); + html = html.replace(/(<(?:p|p\s[^>]*)>)\s*(<\/p>)/ig, '$1
    $2'); + html = html.replace(/\u200B/g, ''); + html = html.replace(/\u00A9/g, '©'); + html = html.replace(/\u00AE/g, '®'); + html = html.replace(/\u2003/g, ' '); + html = html.replace(/\u3000/g, ' '); + html = html.replace(/<[^>]+/g, function($0) { + return $0.replace(/\s+/g, ' '); + }); + var htmlTagMap = {}; + if (htmlTags) { + _each(htmlTags, function(key, val) { + var arr = key.split(','); + for (var i = 0, len = arr.length; i < len; i++) { + htmlTagMap[arr[i]] = _toMap(val); + } + }); + if (!htmlTagMap.script) { + html = html.replace(/(<(?:script|script\s[^>]*)>)([\s\S]*?)(<\/script>)/ig, ''); + } + if (!htmlTagMap.style) { + html = html.replace(/(<(?:style|style\s[^>]*)>)([\s\S]*?)(<\/style>)/ig, ''); + } + } + var re = /(\s*)<(\/)?([\w\-:]+)((?:\s+|(?:\s+[\w\-:]+)|(?:\s+[\w\-:]+=[^\s"'<>]+)|(?:\s+[\w\-:"]+="[^"]*")|(?:\s+[\w\-:"]+='[^']*'))*)(\/)?>(\s*)/g; + var tagStack = []; + html = html.replace(re, function($0, $1, $2, $3, $4, $5, $6) { + var full = $0, + startNewline = $1 || '', + startSlash = $2 || '', + tagName = $3.toLowerCase(), + attr = $4 || '', + endSlash = $5 ? ' ' + $5 : '', + endNewline = $6 || ''; + if (tagName == 'code') { + return full; + } + if (htmlTags && !htmlTagMap[tagName]) { + return ''; + } + if (endSlash === '' && _SINGLE_TAG_MAP[tagName]) { + endSlash = ' /'; + } + if (_INLINE_TAG_MAP[tagName]) { + if (startNewline) { + startNewline = ' '; + } + if (endNewline) { + endNewline = ' '; + } + } + if (_PRE_TAG_MAP[tagName]) { + if (startSlash) { + endNewline = '\n'; + } else { + startNewline = '\n'; + } + } + if (wellFormatted && tagName == 'br') { + endNewline = '\n'; + } + if (_BLOCK_TAG_MAP[tagName] && !_PRE_TAG_MAP[tagName]) { + if (wellFormatted) { + if (startSlash && tagStack.length > 0 && tagStack[tagStack.length - 1] === tagName) { + tagStack.pop(); + } else { + tagStack.push(tagName); + } + startNewline = '\n'; + endNewline = '\n'; + for (var i = 0, len = startSlash ? tagStack.length : tagStack.length - 1; i < len; i++) { + startNewline += indentChar; + if (!startSlash) { + endNewline += indentChar; + } + } + if (endSlash) { + tagStack.pop(); + } else if (!startSlash) { + endNewline += indentChar; + } + } else { + startNewline = endNewline = ''; + } + } + if (attr !== '') { + var attrMap = _getAttrList(full); + if (tagName === 'font') { + var fontStyleMap = {}, fontStyle = ''; + _each(attrMap, function(key, val) { + if (key === 'color') { + fontStyleMap.color = val; + delete attrMap[key]; + } + if (key === 'size') { + fontStyleMap['font-size'] = fontSizeList[parseInt(val, 10) - 1] || ''; + delete attrMap[key]; + } + if (key === 'face') { + fontStyleMap['font-family'] = val; + delete attrMap[key]; + } + if (key === 'style') { + fontStyle = val; + } + }); + if (fontStyle && !/;$/.test(fontStyle)) { + fontStyle += ';'; + } + _each(fontStyleMap, function(key, val) { + if (val === '') { + return; + } + if (/\s/.test(val)) { + val = "'" + val + "'"; + } + fontStyle += key + ':' + val + ';'; + }); + attrMap.style = fontStyle; + } + _each(attrMap, function(key, val) { + if (_FILL_ATTR_MAP[key]) { + attrMap[key] = key; + } + if (_inArray(key, ['src', 'href']) >= 0) { + attrMap[key] = _formatUrl(val, urlType); + } + if (htmlTags && key !== 'style' && !htmlTagMap[tagName]['*'] && !htmlTagMap[tagName][key] || + tagName === 'body' && key === 'contenteditable' || + /^kindeditor_\d+$/.test(key)) { + delete attrMap[key]; + } + if (key === 'style' && val !== '') { + var styleMap = _getCssList(val); + _each(styleMap, function(k, v) { + if (htmlTags && !htmlTagMap[tagName].style && !htmlTagMap[tagName]['.' + k]) { + delete styleMap[k]; + } + }); + var style = ''; + _each(styleMap, function(k, v) { + style += k + ':' + v + ';'; + }); + attrMap.style = style; + } + }); + attr = ''; + _each(attrMap, function(key, val) { + if (key === 'style' && val === '') { + return; + } + val = val.replace(/"/g, '"'); + attr += ' ' + key + '="' + val + '"'; + }); + } + if (tagName === 'font') { + tagName = 'span'; + } + return startNewline + '<' + startSlash + tagName + attr + endSlash + '>' + endNewline; + }); + html = html.replace(/(<(?:pre|pre\s[^>]*)>)([\s\S]*?)(<\/pre>)/ig, function($0, $1, $2, $3) { + return $1 + $2.replace(/\n/g, '\n') + $3; + }); + html = html.replace(/\n\s*\n/g, '\n'); + html = html.replace(/\n/g, '\n'); + return _trim(html); +} +function _clearMsWord(html, htmlTags) { + html = html.replace(//ig, '') + .replace(//ig, '') + .replace(/]*>[\s\S]*?<\/style>/ig, '') + .replace(/]*>[\s\S]*?<\/script>/ig, '') + .replace(/]+>[\s\S]*?<\/w:[^>]+>/ig, '') + .replace(/]+>[\s\S]*?<\/o:[^>]+>/ig, '') + .replace(/[\s\S]*?<\/xml>/ig, '') + .replace(/<(?:table|td)[^>]*>/ig, function(full) { + return full.replace(/border-bottom:([#\w\s]+)/ig, 'border:$1'); + }); + return _formatHtml(html, htmlTags); +} +function _mediaType(src) { + if (/\.(rm|rmvb)(\?|$)/i.test(src)) { + return 'audio/x-pn-realaudio-plugin'; + } + if (/\.(swf|flv)(\?|$)/i.test(src)) { + return 'application/x-shockwave-flash'; + } + return 'video/x-ms-asf-plugin'; +} +function _mediaClass(type) { + if (/realaudio/i.test(type)) { + return 'ke-rm'; + } + if (/flash/i.test(type)) { + return 'ke-flash'; + } + return 'ke-media'; +} +function _mediaAttrs(srcTag) { + return _getAttrList(unescape(srcTag)); +} +function _mediaEmbed(attrs) { + var html = ' 0) { + style += 'width:' + width + 'px;'; + } + if (/\D/.test(height)) { + style += 'height:' + height + ';'; + } else if (height > 0) { + style += 'height:' + height + 'px;'; + } + var html = ''; + return html; +} + +function _tmpl(str, data) { + var fn = new Function("obj", + "var p=[],print=function(){p.push.apply(p,arguments);};" + + "with(obj){p.push('" + + str.replace(/[\r\t\n]/g, " ") + .split("<%").join("\t") + .replace(/((^|%>)[^\t]*)'/g, "$1\r") + .replace(/\t=(.*?)%>/g, "',$1,'") + .split("\t").join("');") + .split("%>").join("p.push('") + .split("\r").join("\\'") + "');}return p.join('');"); + return data ? fn(data) : fn; +} +K.formatUrl = _formatUrl; +K.formatHtml = _formatHtml; +K.getCssList = _getCssList; +K.getAttrList = _getAttrList; +K.mediaType = _mediaType; +K.mediaAttrs = _mediaAttrs; +K.mediaEmbed = _mediaEmbed; +K.mediaImg = _mediaImg; +K.clearMsWord = _clearMsWord; +K.tmpl = _tmpl; + + +function _contains(nodeA, nodeB) { + if (nodeA.nodeType == 9 && nodeB.nodeType != 9) { + return true; + } + while ((nodeB = nodeB.parentNode)) { + if (nodeB == nodeA) { + return true; + } + } + return false; +} +var _getSetAttrDiv = document.createElement('div'); +_getSetAttrDiv.setAttribute('className', 't'); +var _GET_SET_ATTRIBUTE = _getSetAttrDiv.className !== 't'; +function _getAttr(el, key) { + key = key.toLowerCase(); + var val = null; + if (!_GET_SET_ATTRIBUTE && el.nodeName.toLowerCase() != 'script') { + var div = el.ownerDocument.createElement('div'); + div.appendChild(el.cloneNode(false)); + var list = _getAttrList(_unescape(div.innerHTML)); + if (key in list) { + val = list[key]; + } + } else { + try { + val = el.getAttribute(key, 2); + } catch(e) { + val = el.getAttribute(key, 1); + } + } + if (key === 'style' && val !== null) { + val = _formatCss(val); + } + return val; +} +function _queryAll(expr, root) { + var exprList = expr.split(','); + if (exprList.length > 1) { + var mergedResults = []; + _each(exprList, function() { + _each(_queryAll(this, root), function() { + if (_inArray(this, mergedResults) < 0) { + mergedResults.push(this); + } + }); + }); + return mergedResults; + } + root = root || document; + function escape(str) { + if (typeof str != 'string') { + return str; + } + return str.replace(/([^\w\-])/g, '\\$1'); + } + function stripslashes(str) { + return str.replace(/\\/g, ''); + } + function cmpTag(tagA, tagB) { + return tagA === '*' || tagA.toLowerCase() === escape(tagB.toLowerCase()); + } + function byId(id, tag, root) { + var arr = [], + doc = root.ownerDocument || root, + el = doc.getElementById(stripslashes(id)); + if (el) { + if (cmpTag(tag, el.nodeName) && _contains(root, el)) { + arr.push(el); + } + } + return arr; + } + function byClass(className, tag, root) { + var doc = root.ownerDocument || root, arr = [], els, i, len, el; + if (root.getElementsByClassName) { + els = root.getElementsByClassName(stripslashes(className)); + for (i = 0, len = els.length; i < len; i++) { + el = els[i]; + if (cmpTag(tag, el.nodeName)) { + arr.push(el); + } + } + } else if (doc.querySelectorAll) { + els = doc.querySelectorAll((root.nodeName !== '#document' ? root.nodeName + ' ' : '') + tag + '.' + className); + for (i = 0, len = els.length; i < len; i++) { + el = els[i]; + if (_contains(root, el)) { + arr.push(el); + } + } + } else { + els = root.getElementsByTagName(tag); + className = ' ' + className + ' '; + for (i = 0, len = els.length; i < len; i++) { + el = els[i]; + if (el.nodeType == 1) { + var cls = el.className; + if (cls && (' ' + cls + ' ').indexOf(className) > -1) { + arr.push(el); + } + } + } + } + return arr; + } + function byName(name, tag, root) { + var arr = [], doc = root.ownerDocument || root, + els = doc.getElementsByName(stripslashes(name)), el; + for (var i = 0, len = els.length; i < len; i++) { + el = els[i]; + if (cmpTag(tag, el.nodeName) && _contains(root, el)) { + if (el.getAttribute('name') !== null) { + arr.push(el); + } + } + } + return arr; + } + function byAttr(key, val, tag, root) { + var arr = [], els = root.getElementsByTagName(tag), el; + for (var i = 0, len = els.length; i < len; i++) { + el = els[i]; + if (el.nodeType == 1) { + if (val === null) { + if (_getAttr(el, key) !== null) { + arr.push(el); + } + } else { + if (val === escape(_getAttr(el, key))) { + arr.push(el); + } + } + } + } + return arr; + } + function select(expr, root) { + var arr = [], matches; + matches = /^((?:\\.|[^.#\s\[<>])+)/.exec(expr); + var tag = matches ? matches[1] : '*'; + if ((matches = /#((?:[\w\-]|\\.)+)$/.exec(expr))) { + arr = byId(matches[1], tag, root); + } else if ((matches = /\.((?:[\w\-]|\\.)+)$/.exec(expr))) { + arr = byClass(matches[1], tag, root); + } else if ((matches = /\[((?:[\w\-]|\\.)+)\]/.exec(expr))) { + arr = byAttr(matches[1].toLowerCase(), null, tag, root); + } else if ((matches = /\[((?:[\w\-]|\\.)+)\s*=\s*['"]?((?:\\.|[^'"]+)+)['"]?\]/.exec(expr))) { + var key = matches[1].toLowerCase(), val = matches[2]; + if (key === 'id') { + arr = byId(val, tag, root); + } else if (key === 'class') { + arr = byClass(val, tag, root); + } else if (key === 'name') { + arr = byName(val, tag, root); + } else { + arr = byAttr(key, val, tag, root); + } + } else { + var els = root.getElementsByTagName(tag), el; + for (var i = 0, len = els.length; i < len; i++) { + el = els[i]; + if (el.nodeType == 1) { + arr.push(el); + } + } + } + return arr; + } + var parts = [], arr, re = /((?:\\.|[^\s>])+|[\s>])/g; + while ((arr = re.exec(expr))) { + if (arr[1] !== ' ') { + parts.push(arr[1]); + } + } + var results = []; + if (parts.length == 1) { + return select(parts[0], root); + } + var isChild = false, part, els, subResults, val, v, i, j, k, length, len, l; + for (i = 0, lenth = parts.length; i < lenth; i++) { + part = parts[i]; + if (part === '>') { + isChild = true; + continue; + } + if (i > 0) { + els = []; + for (j = 0, len = results.length; j < len; j++) { + val = results[j]; + subResults = select(part, val); + for (k = 0, l = subResults.length; k < l; k++) { + v = subResults[k]; + if (isChild) { + if (val === v.parentNode) { + els.push(v); + } + } else { + els.push(v); + } + } + } + results = els; + } else { + results = select(part, root); + } + if (results.length === 0) { + return []; + } + } + return results; +} +function _query(expr, root) { + var arr = _queryAll(expr, root); + return arr.length > 0 ? arr[0] : null; +} +K.query = _query; +K.queryAll = _queryAll; + + +function _get(val) { + return K(val)[0]; +} +function _getDoc(node) { + if (!node) { + return document; + } + return node.ownerDocument || node.document || node; +} +function _getWin(node) { + if (!node) { + return window; + } + var doc = _getDoc(node); + return doc.parentWindow || doc.defaultView; +} +function _setHtml(el, html) { + if (el.nodeType != 1) { + return; + } + var doc = _getDoc(el); + try { + el.innerHTML = '' + html; + var temp = doc.getElementById('__kindeditor_temp_tag__'); + temp.parentNode.removeChild(temp); + } catch(e) { + K(el).empty(); + K('@' + html, doc).each(function() { + el.appendChild(this); + }); + } +} +function _hasClass(el, cls) { + return _inString(cls, el.className, ' '); +} +function _setAttr(el, key, val) { + if (_IE && _V < 8 && key.toLowerCase() == 'class') { + key = 'className'; + } + el.setAttribute(key, '' + val); +} +function _removeAttr(el, key) { + if (_IE && _V < 8 && key.toLowerCase() == 'class') { + key = 'className'; + } + _setAttr(el, key, ''); + el.removeAttribute(key); +} +function _getNodeName(node) { + if (!node || !node.nodeName) { + return ''; + } + return node.nodeName.toLowerCase(); +} +function _computedCss(el, key) { + var self = this, win = _getWin(el), camelKey = _toCamel(key), val = ''; + if (win.getComputedStyle) { + var style = win.getComputedStyle(el, null); + val = style[camelKey] || style.getPropertyValue(key) || el.style[camelKey]; + } else if (el.currentStyle) { + val = el.currentStyle[camelKey] || el.style[camelKey]; + } + return val; +} +function _hasVal(node) { + return !!_VALUE_TAG_MAP[_getNodeName(node)]; +} +function _docElement(doc) { + doc = doc || document; + return _QUIRKS ? doc.body : doc.documentElement; +} +function _docHeight(doc) { + var el = _docElement(doc); + return Math.max(el.scrollHeight, el.clientHeight); +} +function _docWidth(doc) { + var el = _docElement(doc); + return Math.max(el.scrollWidth, el.clientWidth); +} +function _getScrollPos(doc) { + doc = doc || document; + var x, y; + if (_IE || _NEWIE || _OPERA) { + x = _docElement(doc).scrollLeft; + y = _docElement(doc).scrollTop; + } else { + x = _getWin(doc).scrollX; + y = _getWin(doc).scrollY; + } + return {x : x, y : y}; +} + +function KNode(node) { + this.init(node); +} +_extend(KNode, { + init : function(node) { + var self = this; + node = _isArray(node) ? node : [node]; + var length = 0; + for (var i = 0, len = node.length; i < len; i++) { + if (node[i]) { + self[i] = node[i].constructor === KNode ? node[i][0] : node[i]; + length++; + } + } + self.length = length; + self.doc = _getDoc(self[0]); + self.name = _getNodeName(self[0]); + self.type = self.length > 0 ? self[0].nodeType : null; + self.win = _getWin(self[0]); + }, + each : function(fn) { + var self = this; + for (var i = 0; i < self.length; i++) { + if (fn.call(self[i], i, self[i]) === false) { + return self; + } + } + return self; + }, + bind : function(type, fn) { + this.each(function() { + _bind(this, type, fn); + }); + return this; + }, + unbind : function(type, fn) { + this.each(function() { + _unbind(this, type, fn); + }); + return this; + }, + fire : function(type) { + if (this.length < 1) { + return this; + } + _fire(this[0], type); + return this; + }, + hasAttr : function(key) { + if (this.length < 1) { + return false; + } + return !!_getAttr(this[0], key); + }, + attr : function(key, val) { + var self = this; + if (key === undefined) { + return _getAttrList(self.outer()); + } + if (typeof key === 'object') { + _each(key, function(k, v) { + self.attr(k, v); + }); + return self; + } + if (val === undefined) { + val = self.length < 1 ? null : _getAttr(self[0], key); + return val === null ? '' : val; + } + self.each(function() { + _setAttr(this, key, val); + }); + return self; + }, + removeAttr : function(key) { + this.each(function() { + _removeAttr(this, key); + }); + return this; + }, + get : function(i) { + if (this.length < 1) { + return null; + } + return this[i || 0]; + }, + eq : function(i) { + if (this.length < 1) { + return null; + } + return this[i] ? new KNode(this[i]) : null; + }, + hasClass : function(cls) { + if (this.length < 1) { + return false; + } + return _hasClass(this[0], cls); + }, + addClass : function(cls) { + this.each(function() { + if (!_hasClass(this, cls)) { + this.className = _trim(this.className + ' ' + cls); + } + }); + return this; + }, + removeClass : function(cls) { + this.each(function() { + if (_hasClass(this, cls)) { + this.className = _trim(this.className.replace(new RegExp('(^|\\s)' + cls + '(\\s|$)'), ' ')); + } + }); + return this; + }, + html : function(val) { + var self = this; + if (val === undefined) { + if (self.length < 1 || self.type != 1) { + return ''; + } + return _formatHtml(self[0].innerHTML); + } + self.each(function() { + _setHtml(this, val); + }); + return self; + }, + text : function() { + var self = this; + if (self.length < 1) { + return ''; + } + return _IE ? self[0].innerText : self[0].textContent; + }, + hasVal : function() { + if (this.length < 1) { + return false; + } + return _hasVal(this[0]); + }, + val : function(val) { + var self = this; + if (val === undefined) { + if (self.length < 1) { + return ''; + } + return self.hasVal() ? self[0].value : self.attr('value'); + } else { + self.each(function() { + if (_hasVal(this)) { + this.value = val; + } else { + _setAttr(this, 'value' , val); + } + }); + return self; + } + }, + css : function(key, val) { + var self = this; + if (key === undefined) { + return _getCssList(self.attr('style')); + } + if (typeof key === 'object') { + _each(key, function(k, v) { + self.css(k, v); + }); + return self; + } + if (val === undefined) { + if (self.length < 1) { + return ''; + } + return self[0].style[_toCamel(key)] || _computedCss(self[0], key) || ''; + } + self.each(function() { + this.style[_toCamel(key)] = val; + }); + return self; + }, + width : function(val) { + var self = this; + if (val === undefined) { + if (self.length < 1) { + return 0; + } + return self[0].offsetWidth; + } + return self.css('width', _addUnit(val)); + }, + height : function(val) { + var self = this; + if (val === undefined) { + if (self.length < 1) { + return 0; + } + return self[0].offsetHeight; + } + return self.css('height', _addUnit(val)); + }, + opacity : function(val) { + this.each(function() { + if (this.style.opacity === undefined) { + this.style.filter = val == 1 ? '' : 'alpha(opacity=' + (val * 100) + ')'; + } else { + this.style.opacity = val == 1 ? '' : val; + } + }); + return this; + }, + data : function(key, val) { + var self = this; + key = 'kindeditor_data_' + key; + if (val === undefined) { + if (self.length < 1) { + return null; + } + return self[0][key]; + } + this.each(function() { + this[key] = val; + }); + return self; + }, + pos : function() { + var self = this, node = self[0], x = 0, y = 0; + if (node) { + if (node.getBoundingClientRect) { + var box = node.getBoundingClientRect(), + pos = _getScrollPos(self.doc); + x = box.left + pos.x; + y = box.top + pos.y; + } else { + while (node) { + x += node.offsetLeft; + y += node.offsetTop; + node = node.offsetParent; + } + } + } + return {x : _round(x), y : _round(y)}; + }, + clone : function(bool) { + if (this.length < 1) { + return new KNode([]); + } + return new KNode(this[0].cloneNode(bool)); + }, + append : function(expr) { + this.each(function() { + if (this.appendChild) { + this.appendChild(_get(expr)); + } + }); + return this; + }, + appendTo : function(expr) { + this.each(function() { + _get(expr).appendChild(this); + }); + return this; + }, + before : function(expr) { + this.each(function() { + try { + this.parentNode.insertBefore(_get(expr), this); + } catch (e) {} + }); + return this; + }, + after : function(expr) { + this.each(function() { + if (this.nextSibling) { + this.parentNode.insertBefore(_get(expr), this.nextSibling); + } else { + this.parentNode.appendChild(_get(expr)); + } + }); + return this; + }, + replaceWith : function(expr) { + var nodes = []; + this.each(function(i, node) { + _unbind(node); + var newNode = _get(expr); + node.parentNode.replaceChild(newNode, node); + nodes.push(newNode); + }); + return K(nodes); + }, + empty : function() { + var self = this; + self.each(function(i, node) { + var child = node.firstChild; + while (child) { + if (!node.parentNode) { + return; + } + var next = child.nextSibling; + child.parentNode.removeChild(child); + child = next; + } + }); + return self; + }, + remove : function(keepChilds) { + var self = this; + self.each(function(i, node) { + if (!node.parentNode) { + return; + } + _unbind(node); + if (keepChilds) { + var child = node.firstChild; + while (child) { + var next = child.nextSibling; + node.parentNode.insertBefore(child, node); + child = next; + } + } + node.parentNode.removeChild(node); + delete self[i]; + }); + self.length = 0; + return self; + }, + show : function(val) { + var self = this; + if (val === undefined) { + val = self._originDisplay || ''; + } + if (self.css('display') != 'none') { + return self; + } + return self.css('display', val); + }, + hide : function() { + var self = this; + if (self.length < 1) { + return self; + } + self._originDisplay = self[0].style.display; + return self.css('display', 'none'); + }, + outer : function() { + var self = this; + if (self.length < 1) { + return ''; + } + var div = self.doc.createElement('div'), html; + div.appendChild(self[0].cloneNode(true)); + html = _formatHtml(div.innerHTML); + div = null; + return html; + }, + isSingle : function() { + return !!_SINGLE_TAG_MAP[this.name]; + }, + isInline : function() { + return !!_INLINE_TAG_MAP[this.name]; + }, + isBlock : function() { + return !!_BLOCK_TAG_MAP[this.name]; + }, + isStyle : function() { + return !!_STYLE_TAG_MAP[this.name]; + }, + isControl : function() { + return !!_CONTROL_TAG_MAP[this.name]; + }, + contains : function(otherNode) { + if (this.length < 1) { + return false; + } + return _contains(this[0], _get(otherNode)); + }, + parent : function() { + if (this.length < 1) { + return null; + } + var node = this[0].parentNode; + return node ? new KNode(node) : null; + }, + children : function() { + if (this.length < 1) { + return new KNode([]); + } + var list = [], child = this[0].firstChild; + while (child) { + if (child.nodeType != 3 || _trim(child.nodeValue) !== '') { + list.push(child); + } + child = child.nextSibling; + } + return new KNode(list); + }, + first : function() { + var list = this.children(); + return list.length > 0 ? list.eq(0) : null; + }, + last : function() { + var list = this.children(); + return list.length > 0 ? list.eq(list.length - 1) : null; + }, + index : function() { + if (this.length < 1) { + return -1; + } + var i = -1, sibling = this[0]; + while (sibling) { + i++; + sibling = sibling.previousSibling; + } + return i; + }, + prev : function() { + if (this.length < 1) { + return null; + } + var node = this[0].previousSibling; + return node ? new KNode(node) : null; + }, + next : function() { + if (this.length < 1) { + return null; + } + var node = this[0].nextSibling; + return node ? new KNode(node) : null; + }, + scan : function(fn, order) { + if (this.length < 1) { + return; + } + order = (order === undefined) ? true : order; + function walk(node) { + var n = order ? node.firstChild : node.lastChild; + while (n) { + var next = order ? n.nextSibling : n.previousSibling; + if (fn(n) === false) { + return false; + } + if (walk(n) === false) { + return false; + } + n = next; + } + } + walk(this[0]); + return this; + } +}); +_each(('blur,focus,focusin,focusout,load,resize,scroll,unload,click,dblclick,' + + 'mousedown,mouseup,mousemove,mouseover,mouseout,mouseenter,mouseleave,' + + 'change,select,submit,keydown,keypress,keyup,error,contextmenu').split(','), function(i, type) { + KNode.prototype[type] = function(fn) { + return fn ? this.bind(type, fn) : this.fire(type); + }; +}); +var _K = K; +K = function(expr, root) { + if (expr === undefined || expr === null) { + return; + } + function newNode(node) { + if (!node[0]) { + node = []; + } + return new KNode(node); + } + if (typeof expr === 'string') { + if (root) { + root = _get(root); + } + var length = expr.length; + if (expr.charAt(0) === '@') { + expr = expr.substr(1); + } + if (expr.length !== length || /<.+>/.test(expr)) { + var doc = root ? root.ownerDocument || root : document, + div = doc.createElement('div'), list = []; + div.innerHTML = '' + expr; + for (var i = 0, len = div.childNodes.length; i < len; i++) { + var child = div.childNodes[i]; + if (child.id == '__kindeditor_temp_tag__') { + continue; + } + list.push(child); + } + return newNode(list); + } + return newNode(_queryAll(expr, root)); + } + if (expr && expr.constructor === KNode) { + return expr; + } + if (expr.toArray) { + expr = expr.toArray(); + } + if (_isArray(expr)) { + return newNode(expr); + } + return newNode(_toArray(arguments)); +}; +_each(_K, function(key, val) { + K[key] = val; +}); +K.NodeClass = KNode; +window.KindEditor = K; + + +var _START_TO_START = 0, + _START_TO_END = 1, + _END_TO_END = 2, + _END_TO_START = 3, + _BOOKMARK_ID = 0; +function _updateCollapsed(range) { + range.collapsed = (range.startContainer === range.endContainer && range.startOffset === range.endOffset); + return range; +} +function _copyAndDelete(range, isCopy, isDelete) { + var doc = range.doc, nodeList = []; + function splitTextNode(node, startOffset, endOffset) { + var length = node.nodeValue.length, centerNode; + if (isCopy) { + var cloneNode = node.cloneNode(true); + if (startOffset > 0) { + centerNode = cloneNode.splitText(startOffset); + } else { + centerNode = cloneNode; + } + if (endOffset < length) { + centerNode.splitText(endOffset - startOffset); + } + } + if (isDelete) { + var center = node; + if (startOffset > 0) { + center = node.splitText(startOffset); + range.setStart(node, startOffset); + } + if (endOffset < length) { + var right = center.splitText(endOffset - startOffset); + range.setEnd(right, 0); + } + nodeList.push(center); + } + return centerNode; + } + function removeNodes() { + if (isDelete) { + range.up().collapse(true); + } + for (var i = 0, len = nodeList.length; i < len; i++) { + var node = nodeList[i]; + if (node.parentNode) { + node.parentNode.removeChild(node); + } + } + } + var copyRange = range.cloneRange().down(); + var start = -1, incStart = -1, incEnd = -1, end = -1, + ancestor = range.commonAncestor(), frag = doc.createDocumentFragment(); + if (ancestor.nodeType == 3) { + var textNode = splitTextNode(ancestor, range.startOffset, range.endOffset); + if (isCopy) { + frag.appendChild(textNode); + } + removeNodes(); + return isCopy ? frag : range; + } + function extractNodes(parent, frag) { + var node = parent.firstChild, nextNode; + while (node) { + var testRange = new KRange(doc).selectNode(node); + start = testRange.compareBoundaryPoints(_START_TO_END, range); + if (start >= 0 && incStart <= 0) { + incStart = testRange.compareBoundaryPoints(_START_TO_START, range); + } + if (incStart >= 0 && incEnd <= 0) { + incEnd = testRange.compareBoundaryPoints(_END_TO_END, range); + } + if (incEnd >= 0 && end <= 0) { + end = testRange.compareBoundaryPoints(_END_TO_START, range); + } + if (end >= 0) { + return false; + } + nextNode = node.nextSibling; + if (start > 0) { + if (node.nodeType == 1) { + if (incStart >= 0 && incEnd <= 0) { + if (isCopy) { + frag.appendChild(node.cloneNode(true)); + } + if (isDelete) { + nodeList.push(node); + } + } else { + var childFlag; + if (isCopy) { + childFlag = node.cloneNode(false); + frag.appendChild(childFlag); + } + if (extractNodes(node, childFlag) === false) { + return false; + } + } + } else if (node.nodeType == 3) { + var textNode; + if (node == copyRange.startContainer) { + textNode = splitTextNode(node, copyRange.startOffset, node.nodeValue.length); + } else if (node == copyRange.endContainer) { + textNode = splitTextNode(node, 0, copyRange.endOffset); + } else { + textNode = splitTextNode(node, 0, node.nodeValue.length); + } + if (isCopy) { + try { + frag.appendChild(textNode); + } catch(e) {} + } + } + } + node = nextNode; + } + } + extractNodes(ancestor, frag); + if (isDelete) { + range.up().collapse(true); + } + for (var i = 0, len = nodeList.length; i < len; i++) { + var node = nodeList[i]; + if (node.parentNode) { + node.parentNode.removeChild(node); + } + } + return isCopy ? frag : range; +} +function _moveToElementText(range, el) { + var node = el; + while (node) { + var knode = K(node); + if (knode.name == 'marquee' || knode.name == 'select') { + return; + } + node = node.parentNode; + } + try { + range.moveToElementText(el); + } catch(e) {} +} +function _getStartEnd(rng, isStart) { + var doc = rng.parentElement().ownerDocument, + pointRange = rng.duplicate(); + pointRange.collapse(isStart); + var parent = pointRange.parentElement(), + nodes = parent.childNodes; + if (nodes.length === 0) { + return {node: parent.parentNode, offset: K(parent).index()}; + } + var startNode = doc, startPos = 0, cmp = -1; + var testRange = rng.duplicate(); + _moveToElementText(testRange, parent); + for (var i = 0, len = nodes.length; i < len; i++) { + var node = nodes[i]; + cmp = testRange.compareEndPoints('StartToStart', pointRange); + if (cmp === 0) { + return {node: node.parentNode, offset: i}; + } + if (node.nodeType == 1) { + var nodeRange = rng.duplicate(), dummy, knode = K(node), newNode = node; + if (knode.isControl()) { + dummy = doc.createElement('span'); + knode.after(dummy); + newNode = dummy; + startPos += knode.text().replace(/\r\n|\n|\r/g, '').length; + } + _moveToElementText(nodeRange, newNode); + testRange.setEndPoint('StartToEnd', nodeRange); + if (cmp > 0) { + startPos += nodeRange.text.replace(/\r\n|\n|\r/g, '').length; + } else { + startPos = 0; + } + if (dummy) { + K(dummy).remove(); + } + } else if (node.nodeType == 3) { + testRange.moveStart('character', node.nodeValue.length); + startPos += node.nodeValue.length; + } + if (cmp < 0) { + startNode = node; + } + } + if (cmp < 0 && startNode.nodeType == 1) { + return {node: parent, offset: K(parent.lastChild).index() + 1}; + } + if (cmp > 0) { + while (startNode.nextSibling && startNode.nodeType == 1) { + startNode = startNode.nextSibling; + } + } + testRange = rng.duplicate(); + _moveToElementText(testRange, parent); + testRange.setEndPoint('StartToEnd', pointRange); + startPos -= testRange.text.replace(/\r\n|\n|\r/g, '').length; + if (cmp > 0 && startNode.nodeType == 3) { + var prevNode = startNode.previousSibling; + while (prevNode && prevNode.nodeType == 3) { + startPos -= prevNode.nodeValue.length; + prevNode = prevNode.previousSibling; + } + } + return {node: startNode, offset: startPos}; +} +function _getEndRange(node, offset) { + var doc = node.ownerDocument || node, + range = doc.body.createTextRange(); + if (doc == node) { + range.collapse(true); + return range; + } + if (node.nodeType == 1 && node.childNodes.length > 0) { + var children = node.childNodes, isStart, child; + if (offset === 0) { + child = children[0]; + isStart = true; + } else { + child = children[offset - 1]; + isStart = false; + } + if (!child) { + return range; + } + if (K(child).name === 'head') { + if (offset === 1) { + isStart = true; + } + if (offset === 2) { + isStart = false; + } + range.collapse(isStart); + return range; + } + if (child.nodeType == 1) { + var kchild = K(child), span; + if (kchild.isControl()) { + span = doc.createElement('span'); + if (isStart) { + kchild.before(span); + } else { + kchild.after(span); + } + child = span; + } + _moveToElementText(range, child); + range.collapse(isStart); + if (span) { + K(span).remove(); + } + return range; + } + node = child; + offset = isStart ? 0 : child.nodeValue.length; + } + var dummy = doc.createElement('span'); + K(node).before(dummy); + _moveToElementText(range, dummy); + range.moveStart('character', offset); + K(dummy).remove(); + return range; +} +function _toRange(rng) { + var doc, range; + function tr2td(start) { + if (K(start.node).name == 'tr') { + start.node = start.node.cells[start.offset]; + start.offset = 0; + } + } + if (_IERANGE) { + if (rng.item) { + doc = _getDoc(rng.item(0)); + range = new KRange(doc); + range.selectNode(rng.item(0)); + return range; + } + doc = rng.parentElement().ownerDocument; + var start = _getStartEnd(rng, true), + end = _getStartEnd(rng, false); + tr2td(start); + tr2td(end); + range = new KRange(doc); + range.setStart(start.node, start.offset); + range.setEnd(end.node, end.offset); + return range; + } + var startContainer = rng.startContainer; + doc = startContainer.ownerDocument || startContainer; + range = new KRange(doc); + range.setStart(startContainer, rng.startOffset); + range.setEnd(rng.endContainer, rng.endOffset); + return range; +} + +function KRange(doc) { + this.init(doc); +} +_extend(KRange, { + init : function(doc) { + var self = this; + self.startContainer = doc; + self.startOffset = 0; + self.endContainer = doc; + self.endOffset = 0; + self.collapsed = true; + self.doc = doc; + }, + commonAncestor : function() { + function getParents(node) { + var parents = []; + while (node) { + parents.push(node); + node = node.parentNode; + } + return parents; + } + var parentsA = getParents(this.startContainer), + parentsB = getParents(this.endContainer), + i = 0, lenA = parentsA.length, lenB = parentsB.length, parentA, parentB; + while (++i) { + parentA = parentsA[lenA - i]; + parentB = parentsB[lenB - i]; + if (!parentA || !parentB || parentA !== parentB) { + break; + } + } + return parentsA[lenA - i + 1]; + }, + setStart : function(node, offset) { + var self = this, doc = self.doc; + self.startContainer = node; + self.startOffset = offset; + if (self.endContainer === doc) { + self.endContainer = node; + self.endOffset = offset; + } + return _updateCollapsed(this); + }, + setEnd : function(node, offset) { + var self = this, doc = self.doc; + self.endContainer = node; + self.endOffset = offset; + if (self.startContainer === doc) { + self.startContainer = node; + self.startOffset = offset; + } + return _updateCollapsed(this); + }, + setStartBefore : function(node) { + return this.setStart(node.parentNode || this.doc, K(node).index()); + }, + setStartAfter : function(node) { + return this.setStart(node.parentNode || this.doc, K(node).index() + 1); + }, + setEndBefore : function(node) { + return this.setEnd(node.parentNode || this.doc, K(node).index()); + }, + setEndAfter : function(node) { + return this.setEnd(node.parentNode || this.doc, K(node).index() + 1); + }, + selectNode : function(node) { + return this.setStartBefore(node).setEndAfter(node); + }, + selectNodeContents : function(node) { + var knode = K(node); + if (knode.type == 3 || knode.isSingle()) { + return this.selectNode(node); + } + var children = knode.children(); + if (children.length > 0) { + return this.setStartBefore(children[0]).setEndAfter(children[children.length - 1]); + } + return this.setStart(node, 0).setEnd(node, 0); + }, + collapse : function(toStart) { + if (toStart) { + return this.setEnd(this.startContainer, this.startOffset); + } + return this.setStart(this.endContainer, this.endOffset); + }, + compareBoundaryPoints : function(how, range) { + var rangeA = this.get(), rangeB = range.get(); + if (_IERANGE) { + var arr = {}; + arr[_START_TO_START] = 'StartToStart'; + arr[_START_TO_END] = 'EndToStart'; + arr[_END_TO_END] = 'EndToEnd'; + arr[_END_TO_START] = 'StartToEnd'; + var cmp = rangeA.compareEndPoints(arr[how], rangeB); + if (cmp !== 0) { + return cmp; + } + var nodeA, nodeB, nodeC, posA, posB; + if (how === _START_TO_START || how === _END_TO_START) { + nodeA = this.startContainer; + posA = this.startOffset; + } + if (how === _START_TO_END || how === _END_TO_END) { + nodeA = this.endContainer; + posA = this.endOffset; + } + if (how === _START_TO_START || how === _START_TO_END) { + nodeB = range.startContainer; + posB = range.startOffset; + } + if (how === _END_TO_END || how === _END_TO_START) { + nodeB = range.endContainer; + posB = range.endOffset; + } + if (nodeA === nodeB) { + var diff = posA - posB; + return diff > 0 ? 1 : (diff < 0 ? -1 : 0); + } + nodeC = nodeB; + while (nodeC && nodeC.parentNode !== nodeA) { + nodeC = nodeC.parentNode; + } + if (nodeC) { + return K(nodeC).index() >= posA ? -1 : 1; + } + nodeC = nodeA; + while (nodeC && nodeC.parentNode !== nodeB) { + nodeC = nodeC.parentNode; + } + if (nodeC) { + return K(nodeC).index() >= posB ? 1 : -1; + } + nodeC = K(nodeB).next(); + if (nodeC && nodeC.contains(nodeA)) { + return 1; + } + nodeC = K(nodeA).next(); + if (nodeC && nodeC.contains(nodeB)) { + return -1; + } + } else { + return rangeA.compareBoundaryPoints(how, rangeB); + } + }, + cloneRange : function() { + return new KRange(this.doc).setStart(this.startContainer, this.startOffset).setEnd(this.endContainer, this.endOffset); + }, + toString : function() { + var rng = this.get(), str = _IERANGE ? rng.text : rng.toString(); + return str.replace(/\r\n|\n|\r/g, ''); + }, + cloneContents : function() { + return _copyAndDelete(this, true, false); + }, + deleteContents : function() { + return _copyAndDelete(this, false, true); + }, + extractContents : function() { + return _copyAndDelete(this, true, true); + }, + insertNode : function(node) { + var self = this, + sc = self.startContainer, so = self.startOffset, + ec = self.endContainer, eo = self.endOffset, + firstChild, lastChild, c, nodeCount = 1; + if (node.nodeName.toLowerCase() === '#document-fragment') { + firstChild = node.firstChild; + lastChild = node.lastChild; + nodeCount = node.childNodes.length; + } + if (sc.nodeType == 1) { + c = sc.childNodes[so]; + if (c) { + sc.insertBefore(node, c); + if (sc === ec) { + eo += nodeCount; + } + } else { + sc.appendChild(node); + } + } else if (sc.nodeType == 3) { + if (so === 0) { + sc.parentNode.insertBefore(node, sc); + if (sc.parentNode === ec) { + eo += nodeCount; + } + } else if (so >= sc.nodeValue.length) { + if (sc.nextSibling) { + sc.parentNode.insertBefore(node, sc.nextSibling); + } else { + sc.parentNode.appendChild(node); + } + } else { + if (so > 0) { + c = sc.splitText(so); + } else { + c = sc; + } + sc.parentNode.insertBefore(node, c); + if (sc === ec) { + ec = c; + eo -= so; + } + } + } + if (firstChild) { + self.setStartBefore(firstChild).setEndAfter(lastChild); + } else { + self.selectNode(node); + } + if (self.compareBoundaryPoints(_END_TO_END, self.cloneRange().setEnd(ec, eo)) >= 1) { + return self; + } + return self.setEnd(ec, eo); + }, + surroundContents : function(node) { + node.appendChild(this.extractContents()); + return this.insertNode(node).selectNode(node); + }, + isControl : function() { + var self = this, + sc = self.startContainer, so = self.startOffset, + ec = self.endContainer, eo = self.endOffset, rng; + return sc.nodeType == 1 && sc === ec && so + 1 === eo && K(sc.childNodes[so]).isControl(); + }, + get : function(hasControlRange) { + var self = this, doc = self.doc, node, rng; + if (!_IERANGE) { + rng = doc.createRange(); + try { + rng.setStart(self.startContainer, self.startOffset); + rng.setEnd(self.endContainer, self.endOffset); + } catch (e) {} + return rng; + } + if (hasControlRange && self.isControl()) { + rng = doc.body.createControlRange(); + rng.addElement(self.startContainer.childNodes[self.startOffset]); + return rng; + } + var range = self.cloneRange().down(); + rng = doc.body.createTextRange(); + rng.setEndPoint('StartToStart', _getEndRange(range.startContainer, range.startOffset)); + rng.setEndPoint('EndToStart', _getEndRange(range.endContainer, range.endOffset)); + return rng; + }, + html : function() { + return K(this.cloneContents()).outer(); + }, + down : function() { + var self = this; + function downPos(node, pos, isStart) { + if (node.nodeType != 1) { + return; + } + var children = K(node).children(); + if (children.length === 0) { + return; + } + var left, right, child, offset; + if (pos > 0) { + left = children.eq(pos - 1); + } + if (pos < children.length) { + right = children.eq(pos); + } + if (left && left.type == 3) { + child = left[0]; + offset = child.nodeValue.length; + } + if (right && right.type == 3) { + child = right[0]; + offset = 0; + } + if (!child) { + return; + } + if (isStart) { + self.setStart(child, offset); + } else { + self.setEnd(child, offset); + } + } + downPos(self.startContainer, self.startOffset, true); + downPos(self.endContainer, self.endOffset, false); + return self; + }, + up : function() { + var self = this; + function upPos(node, pos, isStart) { + if (node.nodeType != 3) { + return; + } + if (pos === 0) { + if (isStart) { + self.setStartBefore(node); + } else { + self.setEndBefore(node); + } + } else if (pos == node.nodeValue.length) { + if (isStart) { + self.setStartAfter(node); + } else { + self.setEndAfter(node); + } + } + } + upPos(self.startContainer, self.startOffset, true); + upPos(self.endContainer, self.endOffset, false); + return self; + }, + enlarge : function(toBlock) { + var self = this; + self.up(); + function enlargePos(node, pos, isStart) { + var knode = K(node), parent; + if (knode.type == 3 || _NOSPLIT_TAG_MAP[knode.name] || !toBlock && knode.isBlock()) { + return; + } + if (pos === 0) { + while (!knode.prev()) { + parent = knode.parent(); + if (!parent || _NOSPLIT_TAG_MAP[parent.name] || !toBlock && parent.isBlock()) { + break; + } + knode = parent; + } + if (isStart) { + self.setStartBefore(knode[0]); + } else { + self.setEndBefore(knode[0]); + } + } else if (pos == knode.children().length) { + while (!knode.next()) { + parent = knode.parent(); + if (!parent || _NOSPLIT_TAG_MAP[parent.name] || !toBlock && parent.isBlock()) { + break; + } + knode = parent; + } + if (isStart) { + self.setStartAfter(knode[0]); + } else { + self.setEndAfter(knode[0]); + } + } + } + enlargePos(self.startContainer, self.startOffset, true); + enlargePos(self.endContainer, self.endOffset, false); + return self; + }, + shrink : function() { + var self = this, child, collapsed = self.collapsed; + while (self.startContainer.nodeType == 1 && (child = self.startContainer.childNodes[self.startOffset]) && child.nodeType == 1 && !K(child).isSingle()) { + self.setStart(child, 0); + } + if (collapsed) { + return self.collapse(collapsed); + } + while (self.endContainer.nodeType == 1 && self.endOffset > 0 && (child = self.endContainer.childNodes[self.endOffset - 1]) && child.nodeType == 1 && !K(child).isSingle()) { + self.setEnd(child, child.childNodes.length); + } + return self; + }, + createBookmark : function(serialize) { + var self = this, doc = self.doc, endNode, + startNode = K('', doc)[0]; + startNode.id = '__kindeditor_bookmark_start_' + (_BOOKMARK_ID++) + '__'; + if (!self.collapsed) { + endNode = startNode.cloneNode(true); + endNode.id = '__kindeditor_bookmark_end_' + (_BOOKMARK_ID++) + '__'; + } + if (endNode) { + self.cloneRange().collapse(false).insertNode(endNode).setEndBefore(endNode); + } + self.insertNode(startNode).setStartAfter(startNode); + return { + start : serialize ? '#' + startNode.id : startNode, + end : endNode ? (serialize ? '#' + endNode.id : endNode) : null + }; + }, + moveToBookmark : function(bookmark) { + var self = this, doc = self.doc, + start = K(bookmark.start, doc), end = bookmark.end ? K(bookmark.end, doc) : null; + if (!start || start.length < 1) { + return self; + } + self.setStartBefore(start[0]); + start.remove(); + if (end && end.length > 0) { + self.setEndBefore(end[0]); + end.remove(); + } else { + self.collapse(true); + } + return self; + }, + dump : function() { + console.log('--------------------'); + console.log(this.startContainer.nodeType == 3 ? this.startContainer.nodeValue : this.startContainer, this.startOffset); + console.log(this.endContainer.nodeType == 3 ? this.endContainer.nodeValue : this.endContainer, this.endOffset); + } +}); +function _range(mixed) { + if (!mixed.nodeName) { + return mixed.constructor === KRange ? mixed : _toRange(mixed); + } + return new KRange(mixed); +} +K.RangeClass = KRange; +K.range = _range; +K.START_TO_START = _START_TO_START; +K.START_TO_END = _START_TO_END; +K.END_TO_END = _END_TO_END; +K.END_TO_START = _END_TO_START; + + +function _nativeCommand(doc, key, val) { + try { + doc.execCommand(key, false, val); + } catch(e) {} +} +function _nativeCommandValue(doc, key) { + var val = ''; + try { + val = doc.queryCommandValue(key); + } catch (e) {} + if (typeof val !== 'string') { + val = ''; + } + return val; +} +function _getSel(doc) { + var win = _getWin(doc); + return _IERANGE ? doc.selection : win.getSelection(); +} +function _getRng(doc) { + var sel = _getSel(doc), rng; + try { + if (sel.rangeCount > 0) { + rng = sel.getRangeAt(0); + } else { + rng = sel.createRange(); + } + } catch(e) {} + if (_IERANGE && (!rng || (!rng.item && rng.parentElement().ownerDocument !== doc))) { + return null; + } + return rng; +} +function _singleKeyMap(map) { + var newMap = {}, arr, v; + _each(map, function(key, val) { + arr = key.split(','); + for (var i = 0, len = arr.length; i < len; i++) { + v = arr[i]; + newMap[v] = val; + } + }); + return newMap; +} +function _hasAttrOrCss(knode, map) { + return _hasAttrOrCssByKey(knode, map, '*') || _hasAttrOrCssByKey(knode, map); +} +function _hasAttrOrCssByKey(knode, map, mapKey) { + mapKey = mapKey || knode.name; + if (knode.type !== 1) { + return false; + } + var newMap = _singleKeyMap(map); + if (!newMap[mapKey]) { + return false; + } + var arr = newMap[mapKey].split(','); + for (var i = 0, len = arr.length; i < len; i++) { + var key = arr[i]; + if (key === '*') { + return true; + } + var match = /^(\.?)([^=]+)(?:=([^=]*))?$/.exec(key); + var method = match[1] ? 'css' : 'attr'; + key = match[2]; + var val = match[3] || ''; + if (val === '' && knode[method](key) !== '') { + return true; + } + if (val !== '' && knode[method](key) === val) { + return true; + } + } + return false; +} +function _removeAttrOrCss(knode, map) { + if (knode.type != 1) { + return; + } + _removeAttrOrCssByKey(knode, map, '*'); + _removeAttrOrCssByKey(knode, map); +} +function _removeAttrOrCssByKey(knode, map, mapKey) { + mapKey = mapKey || knode.name; + if (knode.type !== 1) { + return; + } + var newMap = _singleKeyMap(map); + if (!newMap[mapKey]) { + return; + } + var arr = newMap[mapKey].split(','), allFlag = false; + for (var i = 0, len = arr.length; i < len; i++) { + var key = arr[i]; + if (key === '*') { + allFlag = true; + break; + } + var match = /^(\.?)([^=]+)(?:=([^=]*))?$/.exec(key); + key = match[2]; + if (match[1]) { + key = _toCamel(key); + if (knode[0].style[key]) { + knode[0].style[key] = ''; + } + } else { + knode.removeAttr(key); + } + } + if (allFlag) { + knode.remove(true); + } +} +function _getInnerNode(knode) { + var inner = knode; + while (inner.first()) { + inner = inner.first(); + } + return inner; +} +function _isEmptyNode(knode) { + if (knode.type != 1 || knode.isSingle()) { + return false; + } + return knode.html().replace(/<[^>]+>/g, '') === ''; +} +function _mergeWrapper(a, b) { + a = a.clone(true); + var lastA = _getInnerNode(a), childA = a, merged = false; + while (b) { + while (childA) { + if (childA.name === b.name) { + _mergeAttrs(childA, b.attr(), b.css()); + merged = true; + } + childA = childA.first(); + } + if (!merged) { + lastA.append(b.clone(false)); + } + merged = false; + b = b.first(); + } + return a; +} +function _wrapNode(knode, wrapper) { + wrapper = wrapper.clone(true); + if (knode.type == 3) { + _getInnerNode(wrapper).append(knode.clone(false)); + knode.replaceWith(wrapper); + return wrapper; + } + var nodeWrapper = knode, child; + while ((child = knode.first()) && child.children().length == 1) { + knode = child; + } + child = knode.first(); + var frag = knode.doc.createDocumentFragment(); + while (child) { + frag.appendChild(child[0]); + child = child.next(); + } + wrapper = _mergeWrapper(nodeWrapper, wrapper); + if (frag.firstChild) { + _getInnerNode(wrapper).append(frag); + } + nodeWrapper.replaceWith(wrapper); + return wrapper; +} +function _mergeAttrs(knode, attrs, styles) { + _each(attrs, function(key, val) { + if (key !== 'style') { + knode.attr(key, val); + } + }); + _each(styles, function(key, val) { + knode.css(key, val); + }); +} +function _inPreElement(knode) { + while (knode && knode.name != 'body') { + if (_PRE_TAG_MAP[knode.name] || knode.name == 'div' && knode.hasClass('ke-script')) { + return true; + } + knode = knode.parent(); + } + return false; +} +function KCmd(range) { + this.init(range); +} +_extend(KCmd, { + init : function(range) { + var self = this, doc = range.doc; + self.doc = doc; + self.win = _getWin(doc); + self.sel = _getSel(doc); + self.range = range; + }, + selection : function(forceReset) { + var self = this, doc = self.doc, rng = _getRng(doc); + self.sel = _getSel(doc); + if (rng) { + self.range = _range(rng); + if (K(self.range.startContainer).name == 'html') { + self.range.selectNodeContents(doc.body).collapse(false); + } + return self; + } + if (forceReset) { + self.range.selectNodeContents(doc.body).collapse(false); + } + return self; + }, + select : function(hasDummy) { + hasDummy = _undef(hasDummy, true); + var self = this, sel = self.sel, range = self.range.cloneRange().shrink(), + sc = range.startContainer, so = range.startOffset, + ec = range.endContainer, eo = range.endOffset, + doc = _getDoc(sc), win = self.win, rng, hasU200b = false; + if (hasDummy && sc.nodeType == 1 && range.collapsed) { + if (_IERANGE) { + var dummy = K(' ', doc); + range.insertNode(dummy[0]); + rng = doc.body.createTextRange(); + try { + rng.moveToElementText(dummy[0]); + } catch(ex) {} + rng.collapse(false); + rng.select(); + dummy.remove(); + win.focus(); + return self; + } + if (_WEBKIT) { + var children = sc.childNodes; + if (K(sc).isInline() || so > 0 && K(children[so - 1]).isInline() || children[so] && K(children[so]).isInline()) { + range.insertNode(doc.createTextNode('\u200B')); + hasU200b = true; + } + } + } + if (_IERANGE) { + try { + rng = range.get(true); + rng.select(); + } catch(e) {} + } else { + if (hasU200b) { + range.collapse(false); + } + rng = range.get(true); + if (sel != null) { + sel.removeAllRanges(); + sel.addRange(rng); + } + if (doc !== document) { + var pos = K(rng.endContainer).pos(); + win.scrollTo(pos.x, pos.y); + } + } + win.focus(); + return self; + }, + wrap : function(val) { + var self = this, doc = self.doc, range = self.range, wrapper; + wrapper = K(val, doc); + if (range.collapsed) { + range.shrink(); + range.insertNode(wrapper[0]).selectNodeContents(wrapper[0]); + return self; + } + if (wrapper.isBlock()) { + var copyWrapper = wrapper.clone(true), child = copyWrapper; + while (child.first()) { + child = child.first(); + } + child.append(range.extractContents()); + range.insertNode(copyWrapper[0]).selectNode(copyWrapper[0]); + return self; + } + range.enlarge(); + var bookmark = range.createBookmark(), ancestor = range.commonAncestor(), isStart = false; + K(ancestor).scan(function(node) { + if (!isStart && node == bookmark.start) { + isStart = true; + return; + } + if (isStart) { + if (node == bookmark.end) { + return false; + } + var knode = K(node); + if (_inPreElement(knode)) { + return; + } + if (knode.type == 3 && _trim(node.nodeValue).length > 0) { + var parent; + while ((parent = knode.parent()) && parent.isStyle() && parent.children().length == 1) { + knode = parent; + } + _wrapNode(knode, wrapper); + } + } + }); + range.moveToBookmark(bookmark); + return self; + }, + split : function(isStart, map) { + var range = this.range, doc = range.doc; + var tempRange = range.cloneRange().collapse(isStart); + var node = tempRange.startContainer, pos = tempRange.startOffset, + parent = node.nodeType == 3 ? node.parentNode : node, + needSplit = false, knode; + while (parent && parent.parentNode) { + knode = K(parent); + if (map) { + if (!knode.isStyle()) { + break; + } + if (!_hasAttrOrCss(knode, map)) { + break; + } + } else { + if (_NOSPLIT_TAG_MAP[knode.name]) { + break; + } + } + needSplit = true; + parent = parent.parentNode; + } + if (needSplit) { + var dummy = doc.createElement('span'); + range.cloneRange().collapse(!isStart).insertNode(dummy); + if (isStart) { + tempRange.setStartBefore(parent.firstChild).setEnd(node, pos); + } else { + tempRange.setStart(node, pos).setEndAfter(parent.lastChild); + } + var frag = tempRange.extractContents(), + first = frag.firstChild, last = frag.lastChild; + if (isStart) { + tempRange.insertNode(frag); + range.setStartAfter(last).setEndBefore(dummy); + } else { + parent.appendChild(frag); + range.setStartBefore(dummy).setEndBefore(first); + } + var dummyParent = dummy.parentNode; + if (dummyParent == range.endContainer) { + var prev = K(dummy).prev(), next = K(dummy).next(); + if (prev && next && prev.type == 3 && next.type == 3) { + range.setEnd(prev[0], prev[0].nodeValue.length); + } else if (!isStart) { + range.setEnd(range.endContainer, range.endOffset - 1); + } + } + dummyParent.removeChild(dummy); + } + return this; + }, + remove : function(map) { + var self = this, doc = self.doc, range = self.range; + range.enlarge(); + if (range.startOffset === 0) { + var ksc = K(range.startContainer), parent; + while ((parent = ksc.parent()) && parent.isStyle() && parent.children().length == 1) { + ksc = parent; + } + range.setStart(ksc[0], 0); + ksc = K(range.startContainer); + if (ksc.isBlock()) { + _removeAttrOrCss(ksc, map); + } + var kscp = ksc.parent(); + if (kscp && kscp.isBlock()) { + _removeAttrOrCss(kscp, map); + } + } + var sc, so; + if (range.collapsed) { + self.split(true, map); + sc = range.startContainer; + so = range.startOffset; + if (so > 0) { + var sb = K(sc.childNodes[so - 1]); + if (sb && _isEmptyNode(sb)) { + sb.remove(); + range.setStart(sc, so - 1); + } + } + var sa = K(sc.childNodes[so]); + if (sa && _isEmptyNode(sa)) { + sa.remove(); + } + if (_isEmptyNode(sc)) { + range.startBefore(sc); + sc.remove(); + } + range.collapse(true); + return self; + } + self.split(true, map); + self.split(false, map); + var startDummy = doc.createElement('span'), endDummy = doc.createElement('span'); + range.cloneRange().collapse(false).insertNode(endDummy); + range.cloneRange().collapse(true).insertNode(startDummy); + var nodeList = [], cmpStart = false; + K(range.commonAncestor()).scan(function(node) { + if (!cmpStart && node == startDummy) { + cmpStart = true; + return; + } + if (node == endDummy) { + return false; + } + if (cmpStart) { + nodeList.push(node); + } + }); + K(startDummy).remove(); + K(endDummy).remove(); + sc = range.startContainer; + so = range.startOffset; + var ec = range.endContainer, eo = range.endOffset; + if (so > 0) { + var startBefore = K(sc.childNodes[so - 1]); + if (startBefore && _isEmptyNode(startBefore)) { + startBefore.remove(); + range.setStart(sc, so - 1); + if (sc == ec) { + range.setEnd(ec, eo - 1); + } + } + var startAfter = K(sc.childNodes[so]); + if (startAfter && _isEmptyNode(startAfter)) { + startAfter.remove(); + if (sc == ec) { + range.setEnd(ec, eo - 1); + } + } + } + var endAfter = K(ec.childNodes[range.endOffset]); + if (endAfter && _isEmptyNode(endAfter)) { + endAfter.remove(); + } + var bookmark = range.createBookmark(true); + _each(nodeList, function(i, node) { + _removeAttrOrCss(K(node), map); + }); + range.moveToBookmark(bookmark); + return self; + }, + commonNode : function(map) { + var range = this.range; + var ec = range.endContainer, eo = range.endOffset, + node = (ec.nodeType == 3 || eo === 0) ? ec : ec.childNodes[eo - 1]; + function find(node) { + var child = node, parent = node; + while (parent) { + if (_hasAttrOrCss(K(parent), map)) { + return K(parent); + } + parent = parent.parentNode; + } + while (child && (child = child.lastChild)) { + if (_hasAttrOrCss(K(child), map)) { + return K(child); + } + } + return null; + } + var cNode = find(node); + if (cNode) { + return cNode; + } + if (node.nodeType == 1 || (ec.nodeType == 3 && eo === 0)) { + var prev = K(node).prev(); + if (prev) { + return find(prev); + } + } + return null; + }, + commonAncestor : function(tagName) { + var range = this.range, + sc = range.startContainer, so = range.startOffset, + ec = range.endContainer, eo = range.endOffset, + startNode = (sc.nodeType == 3 || so === 0) ? sc : sc.childNodes[so - 1], + endNode = (ec.nodeType == 3 || eo === 0) ? ec : ec.childNodes[eo - 1]; + function find(node) { + while (node) { + if (node.nodeType == 1) { + if (node.tagName.toLowerCase() === tagName) { + return node; + } + } + node = node.parentNode; + } + return null; + } + var start = find(startNode), end = find(endNode); + if (start && end && start === end) { + return K(start); + } + return null; + }, + state : function(key) { + var self = this, doc = self.doc, bool = false; + try { + bool = doc.queryCommandState(key); + } catch (e) {} + return bool; + }, + val : function(key) { + var self = this, doc = self.doc, range = self.range; + function lc(val) { + return val.toLowerCase(); + } + key = lc(key); + var val = '', knode; + if (key === 'fontfamily' || key === 'fontname') { + val = _nativeCommandValue(doc, 'fontname'); + val = val.replace(/['"]/g, ''); + return lc(val); + } + if (key === 'formatblock') { + val = _nativeCommandValue(doc, key); + if (val === '') { + knode = self.commonNode({'h1,h2,h3,h4,h5,h6,p,div,pre,address' : '*'}); + if (knode) { + val = knode.name; + } + } + if (val === 'Normal') { + val = 'p'; + } + return lc(val); + } + if (key === 'fontsize') { + knode = self.commonNode({'*' : '.font-size'}); + if (knode) { + val = knode.css('font-size'); + } + return lc(val); + } + if (key === 'forecolor') { + knode = self.commonNode({'*' : '.color'}); + if (knode) { + val = knode.css('color'); + } + val = _toHex(val); + if (val === '') { + val = 'default'; + } + return lc(val); + } + if (key === 'hilitecolor') { + knode = self.commonNode({'*' : '.background-color'}); + if (knode) { + val = knode.css('background-color'); + } + val = _toHex(val); + if (val === '') { + val = 'default'; + } + return lc(val); + } + return val; + }, + toggle : function(wrapper, map) { + var self = this; + if (self.commonNode(map)) { + self.remove(map); + } else { + self.wrap(wrapper); + } + return self.select(); + }, + bold : function() { + return this.toggle('', { + span : '.font-weight=bold', + strong : '*', + b : '*' + }); + }, + italic : function() { + return this.toggle('', { + span : '.font-style=italic', + em : '*', + i : '*' + }); + }, + underline : function() { + return this.toggle('', { + span : '.text-decoration=underline', + u : '*' + }); + }, + strikethrough : function() { + return this.toggle('', { + span : '.text-decoration=line-through', + s : '*' + }); + }, + forecolor : function(val) { + return this.wrap('').select(); + }, + hilitecolor : function(val) { + return this.wrap('').select(); + }, + fontsize : function(val) { + return this.wrap('').select(); + }, + fontname : function(val) { + return this.fontfamily(val); + }, + fontfamily : function(val) { + return this.wrap('').select(); + }, + removeformat : function() { + var map = { + '*' : '.font-weight,.font-style,.text-decoration,.color,.background-color,.font-size,.font-family,.text-indent' + }, + tags = _STYLE_TAG_MAP; + _each(tags, function(key, val) { + map[key] = '*'; + }); + this.remove(map); + return this.select(); + }, + inserthtml : function(val, quickMode) { + var self = this, range = self.range; + if (val === '') { + return self; + } + function pasteHtml(range, val) { + val = '' + val; + var rng = range.get(); + if (rng.item) { + rng.item(0).outerHTML = val; + } else { + rng.pasteHTML(val); + } + var temp = range.doc.getElementById('__kindeditor_temp_tag__'); + temp.parentNode.removeChild(temp); + var newRange = _toRange(rng); + range.setEnd(newRange.endContainer, newRange.endOffset); + range.collapse(false); + self.select(false); + } + function insertHtml(range, val) { + var doc = range.doc, + frag = doc.createDocumentFragment(); + K('@' + val, doc).each(function() { + frag.appendChild(this); + }); + range.deleteContents(); + range.insertNode(frag); + range.collapse(false); + self.select(false); + } + if (_IERANGE && quickMode) { + try { + pasteHtml(range, val); + } catch(e) { + insertHtml(range, val); + } + return self; + } + insertHtml(range, val); + return self; + }, + hr : function() { + return this.inserthtml('
    '); + }, + print : function() { + this.win.print(); + return this; + }, + insertimage : function(url, title, width, height, border, align) { + title = _undef(title, ''); + border = _undef(border, 0); + var html = ''; + return self.inserthtml(html); + } + if (range.isControl()) { + var node = K(range.startContainer.childNodes[range.startOffset]); + html += '>'; + node.after(K(html, doc)); + node.next().append(node); + range.selectNode(node[0]); + return self.select(); + } + function setAttr(node, url, type) { + K(node).attr('href', url).attr('data-ke-src', url); + if (type) { + K(node).attr('target', type); + } else { + K(node).removeAttr('target'); + } + } + var sc = range.startContainer, so = range.startOffset, + ec = range.endContainer, eo = range.endOffset; + if (sc.nodeType == 1 && sc === ec && so + 1 === eo) { + var child = sc.childNodes[so]; + if (child.nodeName.toLowerCase() == 'a') { + setAttr(child, url, type); + return self; + } + } + _nativeCommand(doc, 'createlink', '__kindeditor_temp_url__'); + K('a[href="__kindeditor_temp_url__"]', doc).each(function() { + setAttr(this, url, type); + }); + return self; + }, + unlink : function() { + var self = this, doc = self.doc, range = self.range; + self.select(); + if (range.collapsed) { + var a = self.commonNode({ a : '*' }); + if (a) { + range.selectNode(a.get()); + self.select(); + } + _nativeCommand(doc, 'unlink', null); + if (_WEBKIT && K(range.startContainer).name === 'img') { + var parent = K(range.startContainer).parent(); + if (parent.name === 'a') { + parent.remove(true); + } + } + } else { + _nativeCommand(doc, 'unlink', null); + } + return self; + } +}); +_each(('formatblock,selectall,justifyleft,justifycenter,justifyright,justifyfull,insertorderedlist,' + + 'insertunorderedlist,indent,outdent,subscript,superscript').split(','), function(i, name) { + KCmd.prototype[name] = function(val) { + var self = this; + self.select(); + _nativeCommand(self.doc, name, val); + if (_IERANGE && _inArray(name, 'justifyleft,justifycenter,justifyright,justifyfull'.split(',')) >= 0) { + self.selection(); + } + if (!_IERANGE || _inArray(name, 'formatblock,selectall,insertorderedlist,insertunorderedlist'.split(',')) >= 0) { + self.selection(); + } + return self; + }; +}); +_each('cut,copy,paste'.split(','), function(i, name) { + KCmd.prototype[name] = function() { + var self = this; + if (!self.doc.queryCommandSupported(name)) { + throw 'not supported'; + } + self.select(); + _nativeCommand(self.doc, name, null); + return self; + }; +}); +function _cmd(mixed) { + if (mixed.nodeName) { + var doc = _getDoc(mixed); + mixed = _range(doc).selectNodeContents(doc.body).collapse(false); + } + return new KCmd(mixed); +} +K.CmdClass = KCmd; +K.cmd = _cmd; + + +function _drag(options) { + var moveEl = options.moveEl, + moveFn = options.moveFn, + clickEl = options.clickEl || moveEl, + beforeDrag = options.beforeDrag, + iframeFix = options.iframeFix === undefined ? true : options.iframeFix; + var docs = [document]; + if (iframeFix) { + K('iframe').each(function() { + var src = _formatUrl(this.src || '', 'absolute'); + if (/^https?:\/\//.test(src)) { + return; + } + var doc; + try { + doc = _iframeDoc(this); + } catch(e) {} + if (doc) { + var pos = K(this).pos(); + K(doc).data('pos-x', pos.x); + K(doc).data('pos-y', pos.y); + docs.push(doc); + } + }); + } + clickEl.mousedown(function(e) { + if(e.button !== 0 && e.button !== 1) { + return; + } + e.stopPropagation(); + var self = clickEl.get(), + x = _removeUnit(moveEl.css('left')), + y = _removeUnit(moveEl.css('top')), + width = moveEl.width(), + height = moveEl.height(), + pageX = e.pageX, + pageY = e.pageY; + if (beforeDrag) { + beforeDrag(); + } + function moveListener(e) { + e.preventDefault(); + var kdoc = K(_getDoc(e.target)); + var diffX = _round((kdoc.data('pos-x') || 0) + e.pageX - pageX); + var diffY = _round((kdoc.data('pos-y') || 0) + e.pageY - pageY); + moveFn.call(clickEl, x, y, width, height, diffX, diffY); + } + function selectListener(e) { + e.preventDefault(); + } + function upListener(e) { + e.preventDefault(); + K(docs).unbind('mousemove', moveListener) + .unbind('mouseup', upListener) + .unbind('selectstart', selectListener); + if (self.releaseCapture) { + self.releaseCapture(); + } + } + K(docs).mousemove(moveListener) + .mouseup(upListener) + .bind('selectstart', selectListener); + if (self.setCapture) { + self.setCapture(); + } + }); +} + +function KWidget(options) { + this.init(options); +} +_extend(KWidget, { + init : function(options) { + var self = this; + self.name = options.name || ''; + self.doc = options.doc || document; + self.win = _getWin(self.doc); + self.x = _addUnit(options.x); + self.y = _addUnit(options.y); + self.z = options.z; + self.width = _addUnit(options.width); + self.height = _addUnit(options.height); + self.div = K('
    '); + self.options = options; + self._alignEl = options.alignEl; + if (self.width) { + self.div.css('width', self.width); + } + if (self.height) { + self.div.css('height', self.height); + } + if (self.z) { + self.div.css({ + position : 'absolute', + left : self.x, + top : self.y, + 'z-index' : self.z + }); + } + if (self.z && (self.x === undefined || self.y === undefined)) { + self.autoPos(self.width, self.height); + } + if (options.cls) { + self.div.addClass(options.cls); + } + if (options.shadowMode) { + self.div.addClass('ke-shadow'); + } + if (options.css) { + self.div.css(options.css); + } + if (options.src) { + K(options.src).replaceWith(self.div); + } else { + K(self.doc.body).append(self.div); + } + if (options.html) { + self.div.html(options.html); + } + if (options.autoScroll) { + if (_IE && _V < 7 || _QUIRKS) { + var scrollPos = _getScrollPos(); + K(self.win).bind('scroll', function(e) { + var pos = _getScrollPos(), + diffX = pos.x - scrollPos.x, + diffY = pos.y - scrollPos.y; + self.pos(_removeUnit(self.x) + diffX, _removeUnit(self.y) + diffY, false); + }); + } else { + self.div.css('position', 'fixed'); + } + } + }, + pos : function(x, y, updateProp) { + var self = this; + updateProp = _undef(updateProp, true); + if (x !== null) { + x = x < 0 ? 0 : _addUnit(x); + self.div.css('left', x); + if (updateProp) { + self.x = x; + } + } + if (y !== null) { + y = y < 0 ? 0 : _addUnit(y); + self.div.css('top', y); + if (updateProp) { + self.y = y; + } + } + return self; + }, + autoPos : function(width, height) { + var x, y, self = this, + w = _removeUnit(width) || 0, + h = _removeUnit(height) || 0, + scrollPos = _getScrollPos(); + if (self._alignEl) { + var knode = K(self._alignEl), + pos = knode.pos(), + diffX = _round(knode[0].clientWidth / 2 - w / 2), + diffY = _round(knode[0].clientHeight / 2 - h / 2); + x = diffX < 0 ? pos.x : pos.x + diffX; + } else { + var docEl = _docElement(self.doc); + x = _round(scrollPos.x + (docEl.clientWidth - w) / 2); + y = _round(scrollPos.y + (docEl.clientHeight - h) / 2); + } + if (K.options.dialogOffset > 0) { + y = scrollPos.y + 20; + } + if (!(_IE && _V < 7 || _QUIRKS)) { + x -= scrollPos.x; + y -= scrollPos.y; + } + return self.pos(x, y); + }, + remove : function() { + var self = this; + if (_IE && _V < 7 || _QUIRKS) { + K(self.win).unbind('scroll'); + } + self.div.remove(); + _each(self, function(i) { + self[i] = null; + }); + return this; + }, + show : function() { + this.div.show(); + return this; + }, + hide : function() { + this.div.hide(); + return this; + }, + draggable : function(options) { + var self = this; + options = options || {}; + options.moveEl = self.div; + options.moveFn = function(x, y, width, height, diffX, diffY) { + if ((x = x + diffX) < 0) { + x = 0; + } + if ((y = y + diffY) < 0) { + y = 0; + } + self.pos(x, y); + }; + _drag(options); + return self; + } +}); +function _widget(options) { + return new KWidget(options); +} +K.WidgetClass = KWidget; +K.widget = _widget; + + +function _iframeDoc(iframe) { + iframe = _get(iframe); + return iframe.contentDocument || iframe.contentWindow.document; +} +var html, _direction = ''; +if ((html = document.getElementsByTagName('html'))) { + _direction = html[0].dir; +} +function _getInitHtml(options) { + var themesPath = _undef(options.themesPath, ''), + bodyClass = options.bodyClass, + cssPath = options.cssPath, + jsPath = options.jsPath, + cssData = options.cssData; + var arr = [ + (_direction === '' ? '' : ''), + '', + ''); + if (!_isArray(cssPath)) { + cssPath = [cssPath]; + } + if (_inArray(K.basePath+'themes/app.css', cssPath) < 0) { + cssPath.push(K.basePath+'themes/app.css'); + } + _each(cssPath, function(i, path) { + if (path) { + arr.push(''); + } + }); + if (cssData) { + arr.push(''); + } + arr.push(''); + if (!_isArray(jsPath)) { + jsPath = [jsPath]; + } + _each(jsPath, function(i, path) { + if (path) { + arr.push(''); + } + }); + arr.push(''); + return arr.join('\n'); +} +function _elementVal(knode, val) { + if (knode.hasVal()) { + if (val === undefined) { + var html = knode.val(); + html = html.replace(/(<(?:p|p\s[^>]*)>) *(<\/p>)/ig, ''); + return html; + } + return knode.val(val); + } + return knode.html(val); +} + +function KEdit(options) { + this.init(options); +} +_extend(KEdit, KWidget, { + init : function(options) { + var self = this; + KEdit.parent.init.call(self, options); + self.srcElement = K(options.srcElement); + self.div.addClass('ke-edit'); + self.designMode = _undef(options.designMode, true); + self.beforeGetHtml = options.beforeGetHtml; + self.beforeSetHtml = options.beforeSetHtml; + self.afterSetHtml = options.afterSetHtml; + var isDocumentDomain = location.protocol != 'res:' && location.host.replace(/:\d+/, '') !== document.domain, + srcScript = ('document.open();' + + (isDocumentDomain ? 'document.domain="' + document.domain + '";' : '') + + 'document.close();'), + iframeSrc = _IE ? ' src="javascript:void(function(){' + encodeURIComponent(srcScript) + '}())"' : ''; + self.iframe = K('').css('width', '100%'); + self.textarea = K('').css('width', '100%'); + self.tabIndex = isNaN(parseInt(options.tabIndex, 10)) ? self.srcElement.attr('tabindex') : parseInt(options.tabIndex, 10); + self.iframe.attr('tabindex', self.tabIndex); + self.textarea.attr('tabindex', self.tabIndex); + if (self.width) { + self.setWidth(self.width); + } + if (self.height) { + self.setHeight(self.height); + } + if (self.designMode) { + self.textarea.hide(); + } else { + self.iframe.hide(); + } + function ready() { + var doc = _iframeDoc(self.iframe); + doc.open(); + if (isDocumentDomain) { + doc.domain = document.domain; + } + doc.write(_getInitHtml(self.options)); + doc.close(); + self.win = self.iframe[0].contentWindow; + self.doc = doc; + var cmd = _cmd(doc); + self.afterChange(function(e) { + cmd.selection(); + }); + if (_WEBKIT) { + K(doc).click(function(e) { + if (K(e.target).name === 'img') { + cmd.selection(true); + cmd.range.selectNode(e.target); + cmd.select(); + } + }); + } + if (_IE) { + self._mousedownHandler = function() { + var newRange = cmd.range.cloneRange(); + newRange.shrink(); + if (newRange.isControl()) { + self.blur(); + } + }; + K(document).mousedown(self._mousedownHandler); + K(doc).keydown(function(e) { + if (e.which == 8) { + cmd.selection(); + var rng = cmd.range; + if (rng.isControl()) { + rng.collapse(true); + K(rng.startContainer.childNodes[rng.startOffset]).remove(); + e.preventDefault(); + } + } + }); + } + self.cmd = cmd; + self.html(_elementVal(self.srcElement)); + if (_IE) { + doc.body.disabled = true; + doc.body.contentEditable = true; + doc.body.removeAttribute('disabled'); + } else { + doc.designMode = 'on'; + } + if (options.afterCreate) { + options.afterCreate.call(self); + } + } + if (isDocumentDomain) { + self.iframe.bind('load', function(e) { + self.iframe.unbind('load'); + if (_IE) { + ready(); + } else { + setTimeout(ready, 0); + } + }); + } + self.div.append(self.iframe); + self.div.append(self.textarea); + self.srcElement.hide(); + !isDocumentDomain && ready(); + }, + setWidth : function(val) { + var self = this; + val = _addUnit(val); + self.width = val; + self.div.css('width', val); + return self; + }, + setHeight : function(val) { + var self = this; + val = _addUnit(val); + self.height = val; + self.div.css('height', val); + self.iframe.css('height', val); + if ((_IE && _V < 8) || _QUIRKS) { + val = _addUnit(_removeUnit(val) - 2); + } + self.textarea.css('height', val); + return self; + }, + remove : function() { + var self = this, doc = self.doc; + K(doc.body).unbind(); + K(doc).unbind(); + K(self.win).unbind(); + if (self._mousedownHandler) { + K(document).unbind('mousedown', self._mousedownHandler); + } + _elementVal(self.srcElement, self.html()); + self.srcElement.show(); + self.iframe.unbind(); + self.textarea.unbind(); + KEdit.parent.remove.call(self); + }, + html : function(val, isFull) { + var self = this, doc = self.doc; + if (self.designMode) { + var body = doc.body; + if (val === undefined) { + if (isFull) { + val = '' + body.parentNode.innerHTML + ''; + } else { + val = body.innerHTML; + } + if (self.beforeGetHtml) { + val = self.beforeGetHtml(val); + } + if (_GECKO && val == '
    ') { + val = ''; + } + return val; + } + if (self.beforeSetHtml) { + val = self.beforeSetHtml(val); + } + if (_IE && _V >= 9) { + val = val.replace(/(<.*?checked=")checked(".*>)/ig, '$1$2'); + } + K(body).html(val); + if (self.afterSetHtml) { + self.afterSetHtml(); + } + return self; + } + if (val === undefined) { + return self.textarea.val(); + } + self.textarea.val(val); + return self; + }, + design : function(bool) { + var self = this, val; + if (bool === undefined ? !self.designMode : bool) { + if (!self.designMode) { + val = self.html(); + self.designMode = true; + self.textarea.hide(); + self.html(val); + var iframe = self.iframe; + var height = _removeUnit(self.height); + iframe.height(height - 2); + iframe.show(); + setTimeout(function() { + iframe.height(height); + }, 0); + } + } else { + if (self.designMode) { + val = self.html(); + self.designMode = false; + self.html(val); + self.iframe.hide(); + self.textarea.show(); + } + } + return self.focus(); + }, + focus : function() { + var self = this; + self.designMode ? self.win.focus() : self.textarea[0].focus(); + return self; + }, + blur : function() { + var self = this; + if (_IE) { + var input = K('', self.div); + self.div.append(input); + input[0].focus(); + input.remove(); + } else { + self.designMode ? self.win.blur() : self.textarea[0].blur(); + } + return self; + }, + afterChange : function(fn) { + var self = this, doc = self.doc, body = doc.body; + K(doc).keyup(function(e) { + if (!e.ctrlKey && !e.altKey && _CHANGE_KEY_MAP[e.which]) { + fn(e); + } + }); + K(doc).mouseup(fn).contextmenu(fn); + K(self.win).blur(fn); + function timeoutHandler(e) { + setTimeout(function() { + fn(e); + }, 1); + } + K(body).bind('paste', timeoutHandler); + K(body).bind('cut', timeoutHandler); + return self; + } +}); +function _edit(options) { + return new KEdit(options); +} +K.EditClass = KEdit; +K.edit = _edit; +K.iframeDoc = _iframeDoc; + + +function _selectToolbar(name, fn) { + var self = this, + knode = self.get(name); + if (knode) { + if (knode.hasClass('ke-disabled')) { + return; + } + fn(knode); + } +} + +function KToolbar(options) { + this.init(options); +} +_extend(KToolbar, KWidget, { + init : function(options) { + var self = this; + KToolbar.parent.init.call(self, options); + self.disableMode = _undef(options.disableMode, false); + self.noDisableItemMap = _toMap(_undef(options.noDisableItems, [])); + self._itemMap = {}; + self.div.addClass('ke-toolbar').bind('contextmenu,mousedown,mousemove', function(e) { + e.preventDefault(); + }).attr('unselectable', 'on'); + function find(target) { + var knode = K(target); + if (knode.hasClass('ke-outline')) { + return knode; + } + if (knode.hasClass('ke-toolbar-icon')) { + return knode.parent(); + } + } + function hover(e, method) { + var knode = find(e.target); + if (knode) { + if (knode.hasClass('ke-disabled')) { + return; + } + if (knode.hasClass('ke-selected')) { + return; + } + knode[method]('ke-on'); + } + } + self.div.mouseover(function(e) { + hover(e, 'addClass'); + }) + .mouseout(function(e) { + hover(e, 'removeClass'); + }) + .click(function(e) { + var knode = find(e.target); + if (knode) { + if (knode.hasClass('ke-disabled')) { + return; + } + self.options.click.call(this, e, knode.attr('data-name')); + } + }); + }, + get : function(name) { + if (this._itemMap[name]) { + return this._itemMap[name]; + } + return (this._itemMap[name] = K('span.ke-icon-' + name, this.div).parent()); + }, + select : function(name) { + _selectToolbar.call(this, name, function(knode) { + knode.addClass('ke-selected'); + }); + return self; + }, + unselect : function(name) { + _selectToolbar.call(this, name, function(knode) { + knode.removeClass('ke-selected').removeClass('ke-on'); + }); + return self; + }, + enable : function(name) { + var self = this, + knode = name.get ? name : self.get(name); + if (knode) { + knode.removeClass('ke-disabled'); + knode.opacity(1); + } + return self; + }, + disable : function(name) { + var self = this, + knode = name.get ? name : self.get(name); + if (knode) { + knode.removeClass('ke-selected').addClass('ke-disabled'); + knode.opacity(0.5); + } + return self; + }, + disableAll : function(bool, noDisableItems) { + var self = this, map = self.noDisableItemMap, item; + if (noDisableItems) { + map = _toMap(noDisableItems); + } + if (bool === undefined ? !self.disableMode : bool) { + K('span.ke-outline', self.div).each(function() { + var knode = K(this), + name = knode[0].getAttribute('data-name', 2); + if (!map[name]) { + self.disable(knode); + } + }); + self.disableMode = true; + } else { + K('span.ke-outline', self.div).each(function() { + var knode = K(this), + name = knode[0].getAttribute('data-name', 2); + if (!map[name]) { + self.enable(knode); + } + }); + self.disableMode = false; + } + return self; + } +}); +function _toolbar(options) { + return new KToolbar(options); +} +K.ToolbarClass = KToolbar; +K.toolbar = _toolbar; + + +function KMenu(options) { + this.init(options); +} +_extend(KMenu, KWidget, { + init : function(options) { + var self = this; + options.z = options.z || 811213; + KMenu.parent.init.call(self, options); + self.centerLineMode = _undef(options.centerLineMode, true); + self.div.addClass('ke-menu ke-menu-'+options.themeType).bind('click,mousedown', function(e){ + e.stopPropagation(); + }).attr('unselectable', 'on'); + }, + addItem : function(item) { + var self = this; + if (item.title === '-') { + self.div.append(K('
    ')); + return; + } + var itemDiv = K('
    '), + leftDiv = K('
    '), + rightDiv = K('
    '), + height = _addUnit(item.height), + iconClass = _undef(item.iconClass, ''); + self.div.append(itemDiv); + if (height) { + itemDiv.css('height', height); + rightDiv.css('line-height', height); + } + var centerDiv; + if (self.centerLineMode) { + centerDiv = K('
    '); + if (height) { + centerDiv.css('height', height); + } + } + itemDiv.mouseover(function(e) { + K(this).addClass('ke-menu-item-on'); + if (centerDiv) { + centerDiv.addClass('ke-menu-item-center-on'); + } + }) + .mouseout(function(e) { + K(this).removeClass('ke-menu-item-on'); + if (centerDiv) { + centerDiv.removeClass('ke-menu-item-center-on'); + } + }) + .click(function(e) { + item.click.call(K(this)); + e.stopPropagation(); + }) + .append(leftDiv); + if (centerDiv) { + itemDiv.append(centerDiv); + } + itemDiv.append(rightDiv); + if (item.checked) { + iconClass = 'ke-icon-checked'; + } + if (iconClass !== '') { + leftDiv.html(''); + } + rightDiv.html(item.title); + return self; + }, + remove : function() { + var self = this; + if (self.options.beforeRemove) { + self.options.beforeRemove.call(self); + } + K('.ke-menu-item', self.div[0]).unbind(); + KMenu.parent.remove.call(self); + return self; + } +}); +function _menu(options) { + return new KMenu(options); +} +K.MenuClass = KMenu; +K.menu = _menu; + + +function KColorPicker(options) { + this.init(options); +} +_extend(KColorPicker, KWidget, { + init : function(options) { + var self = this; + options.z = options.z || 811213; + KColorPicker.parent.init.call(self, options); + var colors = options.colors || [ + ['#E53333', '#E56600', '#FF9900', '#64451D', '#DFC5A4', '#FFE500'], + ['#009900', '#006600', '#99BB00', '#B8D100', '#60D978', '#00D5FF'], + ['#337FE5', '#003399', '#4C33E5', '#9933E5', '#CC33E5', '#EE33EE'], + ['#FFFFFF', '#CCCCCC', '#999999', '#666666', '#333333', '#000000'] + ]; + self.selectedColor = (options.selectedColor || '').toLowerCase(); + self._cells = []; + self.div.addClass('ke-colorpicker').bind('click,mousedown', function(e){ + e.stopPropagation(); + }).attr('unselectable', 'on'); + var table = self.doc.createElement('table'); + self.div.append(table); + table.className = 'ke-colorpicker-table'; + table.cellPadding = 0; + table.cellSpacing = 0; + table.border = 0; + var row = table.insertRow(0), cell = row.insertCell(0); + cell.colSpan = colors[0].length; + self._addAttr(cell, '', 'ke-colorpicker-cell-top'); + for (var i = 0; i < colors.length; i++) { + row = table.insertRow(i + 1); + for (var j = 0; j < colors[i].length; j++) { + cell = row.insertCell(j); + self._addAttr(cell, colors[i][j], 'ke-colorpicker-cell'); + } + } + }, + _addAttr : function(cell, color, cls) { + var self = this; + cell = K(cell).addClass(cls); + if (self.selectedColor === color.toLowerCase()) { + cell.addClass('ke-colorpicker-cell-selected'); + } + cell.attr('title', color || self.options.noColor); + cell.mouseover(function(e) { + K(this).addClass('ke-colorpicker-cell-on'); + }); + cell.mouseout(function(e) { + K(this).removeClass('ke-colorpicker-cell-on'); + }); + cell.click(function(e) { + e.stop(); + self.options.click.call(K(this), color); + }); + if (color) { + cell.append(K('
    ').css('background-color', color)); + } else { + cell.html(self.options.noColor); + } + K(cell).attr('unselectable', 'on'); + self._cells.push(cell); + }, + remove : function() { + var self = this; + _each(self._cells, function() { + this.unbind(); + }); + KColorPicker.parent.remove.call(self); + return self; + } +}); +function _colorpicker(options) { + return new KColorPicker(options); +} +K.ColorPickerClass = KColorPicker; +K.colorpicker = _colorpicker; + + +function KUploadButton(options) { + this.init(options); +} +_extend(KUploadButton, { + init : function(options) { + var self = this, + button = K(options.button), + fieldName = options.fieldName || 'file', + url = options.url || '', + title = button.val(), + extraParams = options.extraParams || {}, + cls = button[0].className || '', + target = options.target || 'kindeditor_upload_iframe_' + new Date().getTime(); + options.afterError = options.afterError || function(str) { + K.options.errorMsgHandler(str, "error"); + }; + var hiddenElements = []; + for(var k in extraParams){ + hiddenElements.push(''); + } + var html = [ + '
    ', + (options.target ? '' : ''), + (options.form ? '
    ' : '
    '), + '', + hiddenElements.join(''), + '', + '', + '', + (options.form ? '
    ' : ''), + '
    '].join(''); + var div = K(html, button.doc); + button.hide(); + button.before(div); + self.div = div; + self.button = button; + self.iframe = options.target ? K('iframe[name="' + target + '"]') : K('iframe', div); + self.form = options.form ? K(options.form) : K('form', div); + self.fileBox = K('.ke-upload-file', div); + var width = options.width || K('.ke-button-common', div).width(); + K('.ke-upload-area', div).width(width); + self.options = options; + }, + submit : function() { + var self = this, + iframe = self.iframe; + iframe.bind('load', function() { + iframe.unbind(); + var tempForm = document.createElement('form'); + self.fileBox.before(tempForm); + K(tempForm).append(self.fileBox); + tempForm.reset(); + K(tempForm).remove(true); + var doc = K.iframeDoc(iframe), + pre = doc.getElementsByTagName('pre')[0], + str = '', data; + if (pre) { + str = pre.innerHTML; + } else { + str = doc.body.innerHTML; + } + str = _unescape(str); + iframe[0].src = 'javascript:false'; + try { + data = K.json(str); + } catch (e) { + self.options.afterError.call(self, '' + doc.body.parentNode.innerHTML + ''); + } + if (data) { + self.options.afterUpload.call(self, data); + } + }); + self.form[0].submit(); + return self; + }, + remove : function() { + var self = this; + if (self.fileBox) { + self.fileBox.unbind(); + } + self.iframe.remove(); + self.div.remove(); + self.button.show(); + return self; + } +}); +function _uploadbutton(options) { + return new KUploadButton(options); +} +K.UploadButtonClass = KUploadButton; +K.uploadbutton = _uploadbutton; + + +function _createButton(arg) { + arg = arg || {}; + var name = arg.name || '', + btn = K(''+name+''); + if (arg.click) { + btn.click(arg.click); + } + return btn; +} + +function KDialog(options) { + this.init(options); +} +_extend(KDialog, KWidget, { + init : function(options) { + var self = this; + options.z = options.z || 811213; + options.shadowMode = false; + options.autoScroll = _undef(options.autoScroll, true); + KDialog.parent.init.call(self, options); + var title = options.title, + body = K(options.body, self.doc), + previewBtn = options.previewBtn, + yesBtn = options.yesBtn, + noBtn = options.noBtn, + closeBtn = options.closeBtn, + showMask = _undef(options.showMask, true); + self.div.addClass('ke-dialog ke-animated').bind('click,mousedown', function(e){ + e.stopPropagation(); + }); + var contentDiv = K('
    ').appendTo(self.div); + var headerDiv = K('
    '); + contentDiv.append(headerDiv); + headerDiv.html(title); + self.closeIcon = K('').click(closeBtn.click); + headerDiv.append(self.closeIcon); + self.draggable({ + clickEl : headerDiv, + beforeDrag : options.beforeDrag + }); + var bodyDiv = K('
    '); + contentDiv.append(bodyDiv); + bodyDiv.append(body); + var footerDiv = K(''); + if (previewBtn || yesBtn || noBtn) { + self.div.append(footerDiv); + contentDiv.height(self.div.height() - footerDiv.height()); + } + _each([ + { btn : previewBtn, name : 'preview' }, + { btn : yesBtn, name : 'yes' }, + { btn : noBtn, name : 'no' } + ], function() { + if (this.btn) { + var button = _createButton(this.btn); + button.addClass('ke-dialog-' + this.name); + footerDiv.append(button); + } + }); + if (self.height) { + bodyDiv.height(_removeUnit(self.height) - headerDiv.height() - footerDiv.height()); + } + self.div.width(self.div.width()); + self.div.height(self.div.height()); + self.mask = null; + if (showMask) { + var docEl = _docElement(self.doc), + docWidth = Math.max(docEl.scrollWidth, docEl.clientWidth), + docHeight = Math.max(docEl.scrollHeight, docEl.clientHeight); + self.mask = _widget({ + x : 0, + y : 0, + z : self.z - 1, + cls : 'ke-dialog-mask', + width : docWidth, + height : docHeight + }); + } + self.autoPos(self.div.width(), self.div.height()); + self.footerDiv = footerDiv; + self.bodyDiv = bodyDiv; + self.headerDiv = headerDiv; + self.isLoading = false; + }, + setMaskIndex : function(z) { + var self = this; + self.mask.div.css('z-index', z); + }, + showLoading : function(msg) { + msg = _undef(msg, ''); + var self = this, body = self.bodyDiv; + self.loading = K('
    ' + msg + '
    ') + .width(body.width()).height(body.height()) + .css('top', self.headerDiv.height() + 'px'); + body.css('visibility', 'hidden').after(self.loading); + self.isLoading = true; + return self; + }, + hideLoading : function() { + this.loading && this.loading.remove(); + this.bodyDiv.css('visibility', 'visible'); + this.isLoading = false; + return this; + }, + remove : function() { + var self = this; + if (self.options.beforeRemove) { + self.options.beforeRemove.call(self); + } + self.mask && self.mask.remove(); + self.iframeMask && self.iframeMask.remove(); + self.closeIcon.unbind(); + K('input', self.div).unbind(); + K('button', self.div).unbind(); + self.footerDiv.unbind(); + self.bodyDiv.unbind(); + self.headerDiv.unbind(); + K('iframe', self.div).each(function() { + K(this).remove(); + }); + KDialog.parent.remove.call(self); + return self; + } +}); +function _dialog(options) { + return new KDialog(options); +} +K.DialogClass = KDialog; +K.dialog = _dialog; + + +function _tabs(options) { + var self = _widget(options), + remove = self.remove, + afterSelect = options.afterSelect, + div = self.div, + liList = []; + div.addClass('ke-tabs') + .bind('contextmenu,mousedown,mousemove', function(e) { + e.preventDefault(); + }); + var ul = K('
      '); + div.append(ul); + self.add = function(tab) { + var li = K('
    • ' + tab.title + '
    • '); + li.data('tab', tab); + liList.push(li); + ul.append(li); + }; + self.selectedIndex = 0; + self.select = function(index) { + self.selectedIndex = index; + _each(liList, function(i, li) { + li.unbind(); + if (i === index) { + li.addClass('ke-tabs-li-selected'); + K(li.data('tab').panel).show(''); + } else { + li.removeClass('ke-tabs-li-selected').removeClass('ke-tabs-li-on') + .mouseover(function() { + K(this).addClass('ke-tabs-li-on'); + }) + .mouseout(function() { + K(this).removeClass('ke-tabs-li-on'); + }) + .click(function() { + self.select(i); + }); + K(li.data('tab').panel).hide(); + } + }); + if (afterSelect) { + afterSelect.call(self, index); + } + }; + self.remove = function() { + _each(liList, function() { + this.remove(); + }); + ul.remove(); + remove.call(self); + }; + return self; +} +K.tabs = _tabs; + + +function _loadScript(url, fn) { + if (K.options.resLoadCache[url]) { + return; + } + var head = document.getElementsByTagName('head')[0] || (_QUIRKS ? document.body : document.documentElement), + script = document.createElement('script'); + head.appendChild(script); + K.options.resLoadCache[url] = 1; + script.src = url; + script.charset = 'utf-8'; + script.onload = script.onreadystatechange = function() { + if (!this.readyState || this.readyState === 'loaded') { + if (fn) { + fn(); + } + script.onload = script.onreadystatechange = null; + head.removeChild(script); + } + }; +} + +function _chopQuery(url) { + var index = url.indexOf('?'); + return index > 0 ? url.substr(0, index) : url; +} +function _loadStyle(url) { + if (K.options.resLoadCache[url]) { + return; + } + var head = document.getElementsByTagName('head')[0] || (_QUIRKS ? document.body : document.documentElement), + link = document.createElement('link'), + absoluteUrl = _chopQuery(_formatUrl(url, 'absolute')); + var links = K('link[rel="stylesheet"]', head); + for (var i = 0, len = links.length; i < len; i++) { + if (_chopQuery(_formatUrl(links[i].href, 'absolute')) === absoluteUrl) { + return; + } + } + head.appendChild(link); + K.options.resLoadCache[url] = 1; + link.href = url; + link.rel = 'stylesheet'; +} +function _ajax(url, fn, method, param, dataType) { + method = method || 'GET'; + dataType = dataType || 'json'; + var xhr = window.XMLHttpRequest ? new window.XMLHttpRequest() : new ActiveXObject('Microsoft.XMLHTTP'); + xhr.open(method, url, true); + xhr.onreadystatechange = function () { + if (xhr.readyState == 4 && xhr.status == 200) { + if (fn) { + var data = _trim(xhr.responseText); + if (dataType == 'json') { + data = _json(data); + } + fn(data); + } + } + }; + if (method == 'POST') { + var params = []; + _each(param, function(key, val) { + params.push(encodeURIComponent(key) + '=' + encodeURIComponent(val)); + }); + try { + xhr.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded'); + } catch (e) {} + xhr.send(params.join('&')); + } else { + xhr.send(null); + } +} +K.loadScript = _loadScript; +K.loadStyle = _loadStyle; +K.ajax = _ajax; + + +var _plugins = {}; +function _plugin(name, fn) { + if (name === undefined) { + return _plugins; + } + if (!fn) { + return _plugins[name]; + } + _plugins[name] = fn; +} +var _language = {}; +function _parseLangKey(key) { + var match, ns = 'core'; + if ((match = /^(\w+)\.(\w+)$/.exec(key))) { + ns = match[1]; + key = match[2]; + } + return { ns : ns, key : key }; +} +function _lang(mixed, langType) { + langType = langType === undefined ? K.options.langType : langType; + if (typeof mixed === 'string') { + if (!_language[langType]) { + return 'no language'; + } + var pos = mixed.length - 1; + if (mixed.substr(pos) === '.') { + return _language[langType][mixed.substr(0, pos)]; + } + var obj = _parseLangKey(mixed); + return _language[langType][obj.ns][obj.key]; + } + _each(mixed, function(key, val) { + var obj = _parseLangKey(key); + if (!_language[langType]) { + _language[langType] = {}; + } + if (!_language[langType][obj.ns]) { + _language[langType][obj.ns] = {}; + } + _language[langType][obj.ns][obj.key] = val; + }); +} + +function _getImageFromRange(range, fn) { + if (range.collapsed) { + return; + } + range = range.cloneRange().up(); + var sc = range.startContainer, so = range.startOffset; + if (!_WEBKIT && !range.isControl()) { + return; + } + var img = K(sc.childNodes[so]); + if (!img || img.name != 'img') { + return; + } + if (fn(img)) { + return img; + } +} +function _bindContextmenuEvent() { + var self = this, doc = self.edit.doc; + K(doc).contextmenu(function(e) { + if (self.menu) { + self.hideMenu(); + } + if (!self.useContextmenu) { + e.preventDefault(); + return; + } + if (self._contextmenus.length === 0) { + return; + } + var maxWidth = 0, items = []; + _each(self._contextmenus, function() { + if (this.title == '-') { + items.push(this); + return; + } + if (this.cond && this.cond()) { + items.push(this); + if (this.width && this.width > maxWidth) { + maxWidth = this.width; + } + } + }); + while (items.length > 0 && items[0].title == '-') { + items.shift(); + } + while (items.length > 0 && items[items.length - 1].title == '-') { + items.pop(); + } + var prevItem = null; + _each(items, function(i) { + if (this.title == '-' && prevItem.title == '-') { + delete items[i]; + } + prevItem = this; + }); + if (items.length > 0) { + e.preventDefault(); + var pos = K(self.edit.iframe).pos(), + menu = _menu({ + x : pos.x + e.clientX, + themeType : self.themeType, + y : pos.y + e.clientY, + width : maxWidth, + css : { visibility: 'hidden' }, + shadowMode : self.shadowMode + }); + _each(items, function() { + if (this.title) { + menu.addItem(this); + } + }); + var docEl = _docElement(menu.doc), + menuHeight = menu.div.height(); + if (e.clientY + menuHeight >= docEl.clientHeight - 100) { + menu.pos(menu.x, _removeUnit(menu.y) - menuHeight); + } + menu.div.css('visibility', 'visible'); + self.menu = menu; + } + }); +} +function _bindNewlineEvent() { + var self = this, doc = self.edit.doc, newlineTag = self.newlineTag; + if (_IE && newlineTag !== 'br') { + return; + } + if (_GECKO && _V < 3 && newlineTag !== 'p') { + return; + } + if (_OPERA && _V < 9) { + return; + } + var brSkipTagMap = _toMap('h1,h2,h3,h4,h5,h6,pre,li'), + pSkipTagMap = _toMap('p,h1,h2,h3,h4,h5,h6,pre,li,blockquote'); + function getAncestorTagName(range) { + var ancestor = K(range.commonAncestor()); + while (ancestor) { + if (ancestor.type == 1 && !ancestor.isStyle()) { + break; + } + ancestor = ancestor.parent(); + } + return ancestor.name; + } + K(doc).keydown(function(e) { + if (e.which == 39) { + if (self.__startOffset == self.cmd.range.startOffset) { + var tagName = getAncestorTagName(self.cmd.range); + if (tagName != 'body') { + self.appendHtml('
      ') + } + } else { + self.__startOffset = self.cmd.range.startOffset + } + return; + } + if (e.which != 13 || e.shiftKey || e.ctrlKey || e.altKey) { + return; + } + self.cmd.selection(); + var tagName = getAncestorTagName(self.cmd.range); + if (tagName == 'marquee' || tagName == 'select') { + return; + } + if (newlineTag === 'br' && !brSkipTagMap[tagName]) { + e.preventDefault(); + self.insertHtml('
      ' + (_IE && _V < 9 ? '' : '\u200B')); + return; + } + if (!pSkipTagMap[tagName]) { + _nativeCommand(doc, 'formatblock', '

      '); + } + }); + K(doc).keyup(function(e) { + if (e.which != 13 || e.shiftKey || e.ctrlKey || e.altKey) { + return; + } + if (newlineTag == 'br') { + return; + } + if (_GECKO) { + var root = self.cmd.commonAncestor('p'); + var a = self.cmd.commonAncestor('a'); + if (a && a.text() == '') { + a.remove(true); + self.cmd.range.selectNodeContents(root[0]).collapse(true); + self.cmd.select(); + } + return; + } + self.cmd.selection(); + var tagName = getAncestorTagName(self.cmd.range); + if (tagName == 'marquee' || tagName == 'select') { + return; + } + if (!pSkipTagMap[tagName]) { + _nativeCommand(doc, 'formatblock', '

      '); + } + var div = self.cmd.commonAncestor('div'); + if (div) { + var p = K('

      '), + child = div[0].firstChild; + while (child) { + var next = child.nextSibling; + p.append(child); + child = next; + } + div.before(p); + div.remove(); + self.cmd.range.selectNodeContents(p[0]); + self.cmd.select(); + } + }); +} +function _bindTabEvent() { + var self = this, doc = self.edit.doc; + K(doc).keydown(function(e) { + if (e.which == 9) { + e.preventDefault(); + if (self.afterTab) { + self.afterTab.call(self, e); + return; + } + var cmd = self.cmd, range = cmd.range; + range.shrink(); + if (range.collapsed && range.startContainer.nodeType == 1) { + range.insertNode(K('@ ', doc)[0]); + cmd.select(); + } + self.insertHtml('    '); + } + }); +} +function _bindFocusEvent() { + var self = this; + K(self.edit.textarea[0], self.edit.win).focus(function(e) { + if (self.afterFocus) { + self.afterFocus.call(self, e); + } + }).blur(function(e) { + if (self.afterBlur) { + self.afterBlur.call(self, e); + } + }); +} +function _removeBookmarkTag(html) { + return _trim(html.replace(/]*id="?__kindeditor_bookmark_\w+_\d+__"?[^>]*><\/span>/ig, '')); +} +function _removeTempTag(html) { + return html.replace(/]+class="?__kindeditor_paste__"?[^>]*>[\s\S]*?<\/div>/ig, ''); +} +function _addBookmarkToStack(stack, bookmark) { + if (stack.length === 0) { + stack.push(bookmark); + return; + } + var prev = stack[stack.length - 1]; + if (_removeBookmarkTag(bookmark.html) !== _removeBookmarkTag(prev.html)) { + stack.push(bookmark); + } +} + +function _undoToRedo(fromStack, toStack) { + var self = this, edit = self.edit, + body = edit.doc.body, + range, bookmark; + if (fromStack.length === 0) { + return self; + } + if (edit.designMode) { + range = self.cmd.range; + bookmark = range.createBookmark(true); + bookmark.html = body.innerHTML; + } else { + bookmark = { + html : body.innerHTML + }; + } + _addBookmarkToStack(toStack, bookmark); + var prev = fromStack.pop(); + if (_removeBookmarkTag(bookmark.html) === _removeBookmarkTag(prev.html) && fromStack.length > 0) { + prev = fromStack.pop(); + } + if (edit.designMode) { + edit.html(prev.html); + if (prev.start) { + range.moveToBookmark(prev); + self.select(); + } + } else { + K(body).html(_removeBookmarkTag(prev.html)); + } + return self; +} +function KEditor(options) { + var self = this; + self.options = {}; + function setOption(key, val) { + if (KEditor.prototype[key] === undefined) { + self[key] = val; + } + self.options[key] = val; + } + _each(options, function(key, val) { + setOption(key, options[key]); + }); + _each(K.options, function(key, val) { + if (self[key] === undefined) { + setOption(key, val); + } + }); + var se = K(self.srcElement || '', + '
      '].join(''), + dialog = self.createDialog({ + name : name, + width : 450, + title : self.lang(name), + body : html, + yesBtn : { + name : self.lang('yes'), + click : function(e) { + var type = K('.ke-select', dialog.div).val(), + code = textarea.val(), + cls = type === '' ? '' : 'language-' + type, + html = '
      ' + K.escape(code) + '

      '; + if (K.trim(code) === '') { + K.options.errorMsgHandler(lang.pleaseInput, "error"); + textarea[0].focus(); + return; + } + self.insertHtml(html).hideDialog().focus(); + } + } + }), + textarea = K('textarea', dialog.div); + textarea[0].focus(); + }); +}); + +/******************************************************************************* +* KindEditor - WYSIWYG HTML Editor for Internet +* Copyright (C) 2006-2011 kindsoft.net +* +* @author Roddy +* @site http://www.kindsoft.net/ +* @licence http://www.kindsoft.net/license.php +*******************************************************************************/ +KindEditor.plugin('emoticons', function(K) { + var self = this, name = 'emoticons', + path = (self.emoticonsPath || self.pluginsPath + 'emoticons/images/'), + allowPreview = self.allowPreviewEmoticons === undefined ? true : self.allowPreviewEmoticons, + currentPageNum = 1; + self.clickToolbar(name, function() { + var rows = 5, cols = 9, total = 135, startNum = 0, + cells = rows * cols, pages = Math.ceil(total / cells), + colsHalf = Math.floor(cols / 2), + wrapperDiv = K('
      '), + elements = [], + menu = self.createMenu({ + name : name, + beforeRemove : function() { + removeEvent(); + } + }); + menu.div.append(wrapperDiv); + var previewDiv, previewImg; + if (allowPreview) { + previewDiv = K('
      ').css('right', 0); + previewImg = K(''); + wrapperDiv.append(previewDiv); + previewDiv.append(previewImg); + } + function bindCellEvent(cell, j, num) { + if (previewDiv) { + cell.mouseover(function() { + if (j > colsHalf) { + previewDiv.css('left', 0); + previewDiv.css('right', ''); + } else { + previewDiv.css('left', ''); + previewDiv.css('right', 0); + } + previewImg.attr('src', path + num + '.gif'); + K(this).addClass('ke-on'); + }); + } else { + cell.mouseover(function() { + K(this).addClass('ke-on'); + }); + } + cell.mouseout(function() { + K(this).removeClass('ke-on'); + }); + cell.click(function(e) { + self.insertHtml('').hideMenu().focus(); + e.stop(); + }); + } + function createEmoticonsTable(pageNum, parentDiv) { + var table = document.createElement('table'); + parentDiv.append(table); + if (previewDiv) { + K(table).mouseover(function() { + previewDiv.show('block'); + }); + K(table).mouseout(function() { + previewDiv.hide(); + }); + elements.push(K(table)); + } + table.className = 'ke-table'; + table.cellPadding = 0; + table.cellSpacing = 0; + table.border = 0; + var num = (pageNum - 1) * cells + startNum; + for (var i = 0; i < rows; i++) { + var row = table.insertRow(i); + for (var j = 0; j < cols; j++) { + var cell = K(row.insertCell(j)); + cell.addClass('ke-cell'); + bindCellEvent(cell, j, num); + var span = K('') + .css('background-position', '-' + (24 * num) + 'px 0px') + .css('background-image', 'url(' + path + 'static.gif)'); + cell.append(span); + elements.push(cell); + num++; + } + } + return table; + } + var table = createEmoticonsTable(currentPageNum, wrapperDiv); + function removeEvent() { + K.each(elements, function() { + this.unbind(); + }); + } + var pageDiv; + function bindPageEvent(el, pageNum) { + el.click(function(e) { + removeEvent(); + table.parentNode.removeChild(table); + pageDiv.remove(); + table = createEmoticonsTable(pageNum, wrapperDiv); + createPageTable(pageNum); + currentPageNum = pageNum; + e.stop(); + }); + } + function createPageTable(currentPageNum) { + pageDiv = K('
      '); + wrapperDiv.append(pageDiv); + for (var pageNum = 1; pageNum <= pages; pageNum++) { + if (currentPageNum !== pageNum) { + var a = K('[' + pageNum + ']'); + bindPageEvent(a, pageNum); + pageDiv.append(a); + elements.push(a); + } else { + pageDiv.append(K('@[' + pageNum + ']')); + } + pageDiv.append(K('@ ')); + } + } + createPageTable(currentPageNum); + }); +}); + + +KindEditor.plugin('filemanager', function(K) { + var self = this; + var fileManagerJson = K.undef(self.fileManagerJson, self.basePath + 'php/file_manager_json.php'); + var lang = self.lang('filemanager.'); + if(typeof jQuery == 'undefined') { + K.options.errorMsgHandler(lang.depJQueryError, "error"); + return; + } else { + K.loadScript(K.options.pluginsPath+"filemanager/FManager.js"); + K.loadStyle(K.options.pluginsPath+"multiimage/css/upload.css"); + } + self.plugin.filemanagerDialog = function(options) { + var clickFn = options.clickFn; + new FManager({ + list_url : fileManagerJson, + lang : lang, + fileType : options.dirName, + top : self.dialogOffset, + callback : function(data) { + clickFn.call(this, data[0]); + } + }); + } +}); + +/******************************************************************************* +* KindEditor - WYSIWYG HTML Editor for Internet +* Copyright (C) 2006-2011 kindsoft.net +* +* @author Roddy +* @site http://www.kindsoft.net/ +* @licence http://www.kindsoft.net/license.php +*******************************************************************************/ +KindEditor.plugin('flash', function(K) { + var self = this, name = 'flash', lang = self.lang(name + '.'), + allowFlashUpload = K.undef(self.allowFlashUpload, true), + allowFileManager = K.undef(self.allowFileManager, false), + formatUploadUrl = K.undef(self.formatUploadUrl, true), + extraParams = K.undef(self.extraFileUploadParams, {}), + filePostName = K.undef(self.filePostName, 'imgFile'), + uploadJson = K.undef(self.uploadJson, self.basePath + 'php/upload_json.php'); + self.plugin.flash = { + edit : function() { + var html = [ + '
      ', + '
      ', + '', + '
      ', + '  ', + '  ', + '', + '', + '', + '
      ', + '
      ', + '
      ', + '', + '
      ', + ' ', + '
      ', + '
      ', + '
      ', + '', + '
      ', + ' ', + '
      ', + '
      ', + '
      ' + ].join(''); + var dialog = self.createDialog({ + name : name, + width : 450, + title : self.lang(name), + body : html, + yesBtn : { + name : self.lang('yes'), + click : function(e) { + var url = K.trim(urlBox.val()), + width = widthBox.val(), + height = heightBox.val(); + if (url == 'http://' || K.invalidUrl(url)) { + K.options.errorMsgHandler(self.lang('invalidUrl'), "error"); + urlBox[0].focus(); + return; + } + if (!/^\d*$/.test(width)) { + K.options.errorMsgHandler(self.lang('invalidWidth'), "error"); + widthBox[0].focus(); + return; + } + if (!/^\d*$/.test(height)) { + K.options.errorMsgHandler(self.lang('invalidHeight'), "error"); + heightBox[0].focus(); + return; + } + var html = K.mediaImg(self.themesPath + 'common/blank.gif', { + src : url, + type : K.mediaType('.swf'), + width : width, + height : height, + quality : 'high' + }); + self.insertHtml(html).hideDialog().focus(); + } + } + }), + div = dialog.div, + urlBox = K('[name="url"]', div), + viewServerBtn = K('[name="viewServer"]', div), + widthBox = K('[name="width"]', div), + heightBox = K('[name="height"]', div); + urlBox.val('http://'); + if (allowFlashUpload) { + var uploadbutton = K.uploadbutton({ + button : K('.ke-upload-button', div)[0], + fieldName : filePostName, + extraParams : extraParams, + url : K.addParam(uploadJson, 'fileType=flash'), + afterUpload : function(data) { + dialog.hideLoading(); + if (data.code === "000") { + var url = data.data.url; + if (formatUploadUrl) { + url = K.formatUrl(url, 'absolute'); + } + urlBox.val(url); + if (self.afterUpload) { + self.afterUpload.call(self, url, data, name); + } + K.options.errorMsgHandler(self.lang('uploadSuccess'), "ok"); + } else { + K.options.errorMsgHandler(data.message, "error"); + } + }, + afterError : function(html) { + dialog.hideLoading(); + self.errorDialog(html); + } + }); + uploadbutton.fileBox.change(function(e) { + dialog.showLoading(self.lang('uploadLoading')); + uploadbutton.submit(); + }); + } else { + K('.ke-upload-button', div).hide(); + } + if (allowFileManager) { + viewServerBtn.click(function(e) { + self.loadPlugin('filemanager', function() { + self.plugin.filemanagerDialog({ + dirName : 'flash', + clickFn : function(url) { + K('[name="url"]', div).val(url); + if (self.afterSelectFile) { + self.afterSelectFile.call(self, url); + } + } + }); + }); + }); + } else { + K('[name="url"]').css("width", "250px"); + viewServerBtn.hide(); + } + var img = self.plugin.getSelectedFlash(); + if (img) { + var attrs = K.mediaAttrs(img.attr('data-ke-tag')); + urlBox.val(attrs.src); + widthBox.val(K.removeUnit(img.css('width')) || attrs.width || 0); + heightBox.val(K.removeUnit(img.css('height')) || attrs.height || 0); + } + urlBox[0].focus(); + urlBox[0].select(); + }, + 'delete' : function() { + self.plugin.getSelectedFlash().remove(); + self.addBookmark(); + } + }; + self.clickToolbar(name, self.plugin.flash.edit); +}); + +/******************************************************************************* +* KindEditor - WYSIWYG HTML Editor for Internet +* Copyright (C) 2006-2011 kindsoft.net +* +* @author Roddy +* @site http://www.kindsoft.net/ +* @licence http://www.kindsoft.net/license.php +*******************************************************************************/ +KindEditor.plugin('image', function(K) { + var self = this, name = 'image', + allowImageUpload = K.undef(self.allowImageUpload, true), + allowImageRemote = K.undef(self.allowImageRemote, true), + formatUploadUrl = K.undef(self.formatUploadUrl, true), + allowFileManager = K.undef(self.allowFileManager, false), + uploadJson = K.undef(self.uploadJson, self.basePath + 'php/upload_json.php'), + imageTabIndex = K.undef(self.imageTabIndex, 0), + imgPath = self.pluginsPath + 'image/images/', + extraParams = K.undef(self.extraFileUploadParams, {}), + filePostName = K.undef(self.filePostName, 'imgFile'), + fillDescAfterUploadImage = K.undef(self.fillDescAfterUploadImage, false), + lang = self.lang(name + '.'); + self.plugin.imageDialog = function(options) { + var imageUrl = options.imageUrl, + imageWidth = K.undef(options.imageWidth, ''), + imageHeight = K.undef(options.imageHeight, ''), + imageTitle = K.undef(options.imageTitle, ''), + imageAlign = K.undef(options.imageAlign, ''), + showRemote = K.undef(options.showRemote, true), + showLocal = K.undef(options.showLocal, true), + tabIndex = K.undef(options.tabIndex, 0), + clickFn = options.clickFn; + var target = 'kindeditor_upload_iframe_' + new Date().getTime(); + var hiddenElements = []; + for(var k in extraParams){ + hiddenElements.push(''); + } + var html = [ + '
      ', + '
      ', + '', + '', + '
      ' + ].join(''); + var dialogWidth = showLocal || allowFileManager ? 450 : 400, + dialogHeight = showLocal && showRemote ? 310 : 260; + var dialog = self.createDialog({ + name : name, + width : dialogWidth, + height : dialogHeight, + title : self.lang(name), + body : html, + yesBtn : { + name : self.lang('yes'), + click : function(e) { + if (dialog.isLoading) { + return; + } + if (showLocal && showRemote && tabs && tabs.selectedIndex === 1 || !showRemote) { + if (uploadbutton.fileBox.val() == '') { + K.options.errorMsgHandler(self.lang('pleaseSelectFile'), "error"); + return; + } + dialog.showLoading(self.lang('uploadLoading')); + uploadbutton.submit(); + localUrlBox.val(''); + return; + } + var url = K.trim(urlBox.val()), + width = widthBox.val(), + height = heightBox.val(), + title = titleBox.val(), + align = ''; + alignBox.each(function() { + if (this.checked) { + align = this.value; + return false; + } + }); + if (url == 'http://' || K.invalidUrl(url)) { + K.options.errorMsgHandler(self.lang('invalidUrl'), "error"); + urlBox[0].focus(); + return; + } + if (!/^\d*$/.test(width)) { + K.options.errorMsgHandler(self.lang('invalidWidth'), "error"); + widthBox[0].focus(); + return; + } + if (!/^\d*$/.test(height)) { + K.options.errorMsgHandler(self.lang('invalidHeight'), "error"); + heightBox[0].focus(); + return; + } + clickFn.call(self, url, title, width, height, 0, align); + } + }, + beforeRemove : function() { + viewServerBtn.unbind(); + widthBox.unbind(); + heightBox.unbind(); + refreshBtn.unbind(); + } + }), + div = dialog.div; + var urlBox = K('[name="url"]', div), + localUrlBox = K('[name="localUrl"]', div), + viewServerBtn = K('[name="viewServer"]', div), + widthBox = K('.tab1 [name="width"]', div), + heightBox = K('.tab1 [name="height"]', div), + refreshBtn = K('.ke-refresh-btn', div), + titleBox = K('.tab1 [name="title"]', div), + alignBox = K('.tab1 [name="align"]', div); + var tabs; + if (showRemote && showLocal) { + tabs = K.tabs({ + src : K('.tabs', div), + afterSelect : function(i) {} + }); + tabs.add({ + title : lang.remoteImage, + panel : K('.tab1', div) + }); + tabs.add({ + title : lang.localImage, + panel : K('.tab2', div) + }); + tabs.select(tabIndex); + } else if (showRemote) { + K('.tab1', div).show(); + } else if (showLocal) { + K('.tab2', div).show(); + } + var uploadbutton = K.uploadbutton({ + button : K('.ke-upload-button', div)[0], + fieldName : filePostName, + form : K('.ke-form', div), + target : target, + width: 60, + afterUpload : function(data) { + dialog.hideLoading(); + if (data.code == "000") { + K.options.errorMsgHandler(self.lang('uploadSuccess'), "ok"); + var url = data.data.url; + if (formatUploadUrl) { + url = K.formatUrl(url, 'absolute'); + } + if (!fillDescAfterUploadImage) { + clickFn.call(self, url, data.title, data.width, data.height, data.border, data.align); + } else { + K(".ke-dialog-row ke-clearfix #remoteUrl", div).val(url); + K(".ke-tabs-li", div)[0].click(); + K(".ke-refresh-btn", div).click(); + } + } else { + K.options.errorMsgHandler(data.message, "error"); + } + }, + afterError : function(html) { + dialog.hideLoading(); + self.errorDialog(html); + } + }); + uploadbutton.fileBox.change(function(e) { + localUrlBox.val(uploadbutton.fileBox.val()); + }); + if (allowFileManager) { + viewServerBtn.click(function(e) { + self.loadPlugin('filemanager', function() { + self.plugin.filemanagerDialog({ + dirName : 'image', + clickFn : function(url) { + K('[name="url"]', div).val(url); + if (self.afterSelectFile) { + self.afterSelectFile.call(self, url); + } + } + }); + }); + }); + } else { + viewServerBtn.hide(); + } + var originalWidth = 0, originalHeight = 0; + function setSize(width, height) { + widthBox.val(width); + heightBox.val(height); + originalWidth = width; + originalHeight = height; + } + refreshBtn.click(function(e) { + var tempImg = K('', document).css({ + position : 'absolute', + visibility : 'hidden', + top : 0, + left : '-1000px' + }); + tempImg.bind('load', function() { + setSize(tempImg.width(), tempImg.height()); + tempImg.remove(); + }); + K(document.body).append(tempImg); + }); + widthBox.change(function(e) { + if (originalWidth > 0) { + heightBox.val(Math.round(originalHeight / originalWidth * parseInt(this.value, 10))); + } + }); + heightBox.change(function(e) { + if (originalHeight > 0) { + widthBox.val(Math.round(originalWidth / originalHeight * parseInt(this.value, 10))); + } + }); + urlBox.val(options.imageUrl); + setSize(options.imageWidth, options.imageHeight); + titleBox.val(options.imageTitle); + alignBox.each(function() { + if (this.value === options.imageAlign) { + this.checked = true; + return false; + } + }); + if (showRemote && tabIndex === 0) { + urlBox[0].focus(); + urlBox[0].select(); + } + return dialog; + }; + self.plugin.image = { + edit : function() { + var img = self.plugin.getSelectedImage(); + self.plugin.imageDialog({ + imageUrl : img ? img.attr('data-ke-src') : 'http://', + imageWidth : img ? img.width() : '', + imageHeight : img ? img.height() : '', + imageTitle : img ? img.attr('title') : '', + imageAlign : img ? img.attr('align') : '', + showRemote : allowImageRemote, + showLocal : allowImageUpload, + tabIndex: img ? 0 : imageTabIndex, + clickFn : function(url, title, width, height, border, align) { + if (img) { + img.attr('src', url); + img.attr('data-ke-src', url); + img.attr('width', width); + img.attr('height', height); + img.attr('title', title); + img.attr('align', align); + img.attr('alt', title); + } else { + self.exec('insertimage', url, title, width, height, border, align); + } + setTimeout(function() { + self.hideDialog().focus(); + }, 0); + } + }); + }, + 'delete' : function() { + var target = self.plugin.getSelectedImage(); + if (target.parent().name == 'a') { + target = target.parent(); + } + target.remove(); + self.addBookmark(); + } + }; + self.clickToolbar(name, self.plugin.image.edit); +}); + +/******************************************************************************* +* KindEditor - WYSIWYG HTML Editor for Internet +* Copyright (C) 2006-2011 kindsoft.net +* +* @author Roddy +* @site http://www.kindsoft.net/ +* @licence http://www.kindsoft.net/license.php +*******************************************************************************/ +KindEditor.plugin('insertfile', function(K) { + var self = this, name = 'insertfile', + allowFileUpload = K.undef(self.allowFileUpload, true), + allowFileManager = K.undef(self.allowFileManager, false), + formatUploadUrl = K.undef(self.formatUploadUrl, true), + uploadJson = K.undef(self.uploadJson, self.basePath + 'php/upload_json.php'), + extraParams = K.undef(self.extraFileUploadParams, {}), + filePostName = K.undef(self.filePostName, 'imgFile'), + lang = self.lang(name + '.'); + self.plugin.fileDialog = function(options) { + var fileUrl = K.undef(options.fileUrl, 'http://'), + fileTitle = K.undef(options.fileTitle, ''), + clickFn = options.clickFn; + var html = [ + '
      ', + '
      ', + '', + '
      ', + '  ', + '  ', + '', + '', + '', + '
      ', + '
      ', + '
      ', + '', + '
      ', + '
      ', + '
      ', + '
      ', + '', + '' + ].join(''); + var dialog = self.createDialog({ + name : name, + width : 450, + title : self.lang(name), + body : html, + yesBtn : { + name : self.lang('yes'), + click : function(e) { + var url = K.trim(urlBox.val()), + title = titleBox.val(); + if (url == 'http://' || K.invalidUrl(url)) { + K.options.errorMsgHandler(self.lang('invalidUrl'), "error"); + urlBox[0].focus(); + return; + } + if (K.trim(title) === '') { + title = url; + } + clickFn.call(self, url, title); + } + } + }), + div = dialog.div; + var urlBox = K('[name="url"]', div), + viewServerBtn = K('[name="viewServer"]', div), + titleBox = K('[name="title"]', div); + if (allowFileUpload) { + var uploadbutton = K.uploadbutton({ + button : K('.ke-upload-button', div)[0], + fieldName : filePostName, + url : K.addParam(uploadJson, 'fileType=file'), + extraParams : extraParams, + afterUpload : function(data) { + dialog.hideLoading(); + if (data.code === "000") { + var url = data.data.url; + if (formatUploadUrl) { + url = K.formatUrl(url, 'absolute'); + } + urlBox.val(url); + if (self.afterUpload) { + self.afterUpload.call(self, url, data, name); + } + K.options.errorMsgHandler(self.lang('uploadSuccess'), "ok"); + } else { + K.options.errorMsgHandler(data.message, "error"); + } + }, + afterError : function(html) { + dialog.hideLoading(); + self.errorDialog(html); + } + }); + uploadbutton.fileBox.change(function(e) { + dialog.showLoading(self.lang('uploadLoading')); + uploadbutton.submit(); + }); + } else { + K('.ke-upload-button', div).hide(); + } + if (allowFileManager) { + viewServerBtn.click(function(e) { + self.loadPlugin('filemanager', function() { + self.plugin.filemanagerDialog({ + viewType : 'LIST', + dirName : 'file', + clickFn : function(url) { + K('[name="url"]', div).val(url); + if (self.afterSelectFile) { + self.afterSelectFile.call(self, url); + } + } + }); + }); + }); + } else { + K("#keUrl").css("width", "250px"); + viewServerBtn.hide(); + } + urlBox.val(fileUrl); + titleBox.val(fileTitle); + urlBox[0].focus(); + urlBox[0].select(); + }; + self.clickToolbar(name, function() { + self.plugin.fileDialog({ + clickFn : function(url, title) { + var html = '' + title + ''; + self.insertHtml(html).hideDialog().focus(); + } + }); + }); +}); + +/******************************************************************************* +* KindEditor - WYSIWYG HTML Editor for Internet +* Copyright (C) 2006-2011 kindsoft.net +* +* @author Roddy +* @site http://www.kindsoft.net/ +* @licence http://www.kindsoft.net/license.php +*******************************************************************************/ +KindEditor.plugin('lineheight', function(K) { + var self = this, name = 'lineheight', lang = self.lang(name + '.'); + self.clickToolbar(name, function() { + var curVal = '', commonNode = self.cmd.commonNode({'*' : '.line-height'}); + if (commonNode) { + curVal = commonNode.css('line-height'); + } + var menu = self.createMenu({ + name : name, + width : 150 + }); + K.each(lang.lineHeight, function(i, row) { + K.each(row, function(key, val) { + menu.addItem({ + title : val, + checked : curVal === key, + click : function() { + self.cmd.toggle('', { + span : '.line-height=' + key + }); + self.updateState(); + self.addBookmark(); + self.hideMenu(); + } + }); + }); + }); + }); +}); + +/******************************************************************************* +* KindEditor - WYSIWYG HTML Editor for Internet +* Copyright (C) 2006-2011 kindsoft.net +* +* @author Roddy +* @site http://www.kindsoft.net/ +* @licence http://www.kindsoft.net/license.php +*******************************************************************************/ +KindEditor.plugin('link', function(K) { + var self = this, name = 'link'; + self.plugin.link = { + edit : function() { + var lang = self.lang(name + '.'), + html = ['
      ', + '
      ', + '', + '
      ', + '', + '
      ', + '
      ', + '
      ', + '', + '
      ', + '', + '
      ', + '
      ', + '
      '].join(""), + dialog = self.createDialog({ + name : name, + width : 450, + title : self.lang(name), + body : html, + yesBtn : { + name : self.lang('yes'), + click : function(e) { + var url = K.trim(urlBox.val()); + if (url == 'http://' || K.invalidUrl(url)) { + K.options.errorMsgHandler(self.lang('invalidUrl'), "error"); + urlBox[0].focus(); + return; + } + self.exec('createlink', url, typeBox.val()).hideDialog().focus(); + } + } + }), + div = dialog.div, + urlBox = K('input[name="url"]', div), + typeBox = K('select[name="type"]', div); + urlBox.val('http://'); + typeBox[0].options[0] = new Option(lang.newWindow, '_blank'); + typeBox[0].options[1] = new Option(lang.selfWindow, ''); + self.cmd.selection(); + var a = self.plugin.getSelectedLink(); + if (a) { + self.cmd.range.selectNode(a[0]); + self.cmd.select(); + urlBox.val(a.attr('data-ke-src')); + typeBox.val(a.attr('target')); + } + urlBox[0].focus(); + urlBox[0].select(); + }, + 'delete' : function() { + self.exec('unlink', null); + } + }; + self.clickToolbar(name, self.plugin.link.edit); +}); + +/******************************************************************************* +* KindEditor - WYSIWYG HTML Editor for Internet +* Copyright (C) 2006-2011 kindsoft.net +* +* @author Roddy +* @site http://www.kindsoft.net/ +* @licence http://www.kindsoft.net/license.php +*******************************************************************************/ +KindEditor.plugin('media', function(K) { + var self = this, name = 'media', lang = self.lang(name + '.'), + allowMediaUpload = K.undef(self.allowMediaUpload, false), + allowFileManager = K.undef(self.allowFileManager, false), + formatUploadUrl = K.undef(self.formatUploadUrl, true), + extraParams = K.undef(self.extraFileUploadParams, {}), + filePostName = K.undef(self.filePostName, 'imgFile'), + uploadJson = K.undef(self.uploadJson, self.basePath + 'php/upload_json.php'); + self.plugin.media = { + edit : function() { + var html = [ + '
      ', + '
      ', + '', + '
      ', + '  ', + '  ', + '', + '', + '', + '
      ', + '
      ', + '
      ', + '', + '
      ', + '', + '
      ', + '
      ', + '
      ', + '', + '
      ', + '', + '
      ', + '
      ', + '
      ', + '', + '
      ', + ' ', + '
      ', + '
      ', + '
      ' + ].join(''); + var dialog = self.createDialog({ + name : name, + width : 450, + height : 260, + title : self.lang(name), + body : html, + yesBtn : { + name : self.lang('yes'), + click : function(e) { + var url = K.trim(urlBox.val()), + width = widthBox.val(), + height = heightBox.val(); + if (url == 'http://' || K.invalidUrl(url)) { + K.options.errorMsgHandler(self.lang('invalidUrl'), "error"); + urlBox[0].focus(); + return; + } + if (!/^\d*$/.test(width)) { + K.options.errorMsgHandler(self.lang('invalidWidth'), "error"); + widthBox[0].focus(); + return; + } + if (!/^\d*$/.test(height)) { + K.options.errorMsgHandler(self.lang('invalidHeight'), "error"); + heightBox[0].focus(); + return; + } + var html = K.mediaImg(self.themesPath + 'common/blank.gif', { + src : url, + type : K.mediaType(url), + width : width, + height : height, + autostart : autostartBox[0].checked ? 'true' : 'false', + loop : 'true' + }); + self.insertHtml(html).hideDialog().focus(); + } + } + }), + div = dialog.div, + urlBox = K('[name="url"]', div), + viewServerBtn = K('[name="viewServer"]', div), + widthBox = K('[name="width"]', div), + heightBox = K('[name="height"]', div), + autostartBox = K('[name="autostart"]', div); + urlBox.val('http://'); + if (allowMediaUpload) { + var uploadbutton = K.uploadbutton({ + button : K('.ke-upload-button', div)[0], + fieldName : filePostName, + extraParams : extraParams, + url : K.addParam(uploadJson, 'fileType=media'), + afterUpload : function(data) { + dialog.hideLoading(); + if (data.code == "000") { + var url = data.data.url; + if (formatUploadUrl) { + url = K.formatUrl(url, 'absolute'); + } + urlBox.val(url); + if (self.afterUpload) { + self.afterUpload.call(self, url, data, name); + } + K.options.errorMsgHandler(self.lang('uploadSuccess'), "ok"); + } else { + K.options.errorMsgHandler(data.message, "error", "error"); + } + }, + afterError : function(html) { + dialog.hideLoading(); + self.errorDialog(html); + } + }); + uploadbutton.fileBox.change(function(e) { + dialog.showLoading(self.lang('uploadLoading')); + uploadbutton.submit(); + }); + } else { + K('.ke-upload-button', div).hide(); + } + if (allowMediaUpload && allowFileManager) { + viewServerBtn.click(function(e) { + self.loadPlugin('filemanager', function() { + self.plugin.filemanagerDialog({ + dirName : 'media', + clickFn : function(url) { + K('[name="url"]', div).val(url); + if (self.afterSelectFile) { + self.afterSelectFile.call(self, url); + } + } + }); + }); + }); + } else { + K("#keUrl").css("width", "280px"); + viewServerBtn.hide(); + } + var img = self.plugin.getSelectedMedia(); + if (img) { + var attrs = K.mediaAttrs(img.attr('data-ke-tag')); + urlBox.val(attrs.src); + widthBox.val(K.removeUnit(img.css('width')) || attrs.width || 0); + heightBox.val(K.removeUnit(img.css('height')) || attrs.height || 0); + autostartBox[0].checked = (attrs.autostart === 'true'); + } + urlBox[0].focus(); + urlBox[0].select(); + }, + 'delete' : function() { + self.plugin.getSelectedMedia().remove(); + self.addBookmark(); + } + }; + self.clickToolbar(name, self.plugin.media.edit); +}); + + +KindEditor.plugin('multiimage', function(K) { + var self = this, name = 'multiimage', + uploadJson = K.undef(self.uploadJson, self.basePath + 'php/upload_json.php'), + fileManagerJson = K.undef(self.fileManagerJson, self.basePath + 'php/file_manager_json.php'), + imageSizeLimit = K.undef(self.imageSizeLimit, 2048), + imageFileTypes = K.undef(self.imageFileTypes, 'jpg|png|gif|jpeg'), + imageUploadLimit = K.undef(self.imageUploadLimit, 20), + filePostName = K.undef(self.filePostName, 'imgFile'), + extraParams = K.undef(self.extraFileUploadParams, {}), + lang = self.lang(name + '.'); + if(typeof jQuery == 'undefined') { + K.options.errorMsgHandler(lang.depJQueryError, "error"); + return; + } else { + K.loadScript(K.options.pluginsPath+name+"/BUpload.js"); + K.loadStyle(K.options.pluginsPath+name+"/css/upload.css"); + } + K.locker = function () { + var docWidth = Math.max(document.documentElement.clientWidth, document.body.clientWidth); + var docHeight = Math.max(document.documentElement.clientHeight, document.body.clientHeight, $(document).height()) + document.documentElement.scrollTop; + return K.widget({ + x : 0, + y : 0, + cls : 'ke-dialog-lock', + width : docWidth, + height : docHeight + }); + } + self.plugin.multiImageDialog = function(options) { + var clickFn = options.clickFn; + var locker = K.locker(); + locker.show(); + var dialog = new BUpload({ + src : filePostName, + upload_url : uploadJson, + list_url : fileManagerJson, + max_filesize : imageSizeLimit, + max_filenum : imageUploadLimit, + ext_allow : imageFileTypes, + extra_params : extraParams, + lang : lang, + top : self.dialogOffset, + fileType : "image", + errorHandler : K.options.errorMsgHandler, + callback : function(data) { + clickFn.call(this, data); + }, + close : function () { + locker.remove(); + } + }); + return dialog; + }; + self.clickToolbar(name, function() { + self.plugin.multiImageDialog({ + clickFn : function (urlList) { + if (urlList.length === 0) { + return; + } + K.each(urlList, function(i, data) { + if (self.afterUpload) { + self.afterUpload.call(self, data, data, 'multiimage'); + } + self.exec('insertimage', data); + }); + setTimeout(function() { + self.hideDialog().focus(); + }, 0); + } + }); + }); +}); + +/******************************************************************************* +* KindEditor - WYSIWYG HTML Editor for Internet +* Copyright (C) 2006-2011 kindsoft.net +* +* @author Roddy +* @site http://www.kindsoft.net/ +* @licence http://www.kindsoft.net/license.php +*******************************************************************************/ +KindEditor.plugin('graft', function(K) { + var self = this, name = 'graft', + uploadJson = K.undef(self.uploadJson, self.basePath + 'php/upload_json.php'), + allowUploadGraft = K.undef(self.allowUploadGraft, true), + lang = self.lang(name + '.'); + if(typeof jQuery == 'undefined') { + K.options.errorMsgHandler(lang.depJQueryError, "error"); + return; + } else { + K.loadStyle(K.options.pluginsPath+"graft/css/scrawl.css"); + K.loadScript(K.options.pluginsPath+"graft/scrawl.js"); + } + self.plugin.graftDialog = function(options) { + var clickFn = options.clickFn; + var html = [ + '
      ', + '
      ', + '
      ', + '你的浏览器不支持 canvas 绘图', + '
      ', + '
      ', + '
      ', + '', + '', + '', + '
      ', + '
      ', + '
      ', + '
      ', + '', + '', + '', + '', + '', + '', + '', + '', + '', + '', + '', + '', + '', + '', + '', + '', + '', + '', + '
      ', + '
      ', + '', + '1', + '3', + '5', + '7', + '
      ', + '
      ', + '', + '5', + '10', + '15', + '20', + '
      ', + '
      ', + '', + '2', + '4', + '6', + '8', + '
      ', + '
      ', + '', + '', + '初始化设置', + '', + '
      ', + '
      ', + '
      ', + '', + '添加背景', + '', + '
      ', + '
      ', + '
      ', + '', + '', + '删除背景', + '', + '
      ', + '
      ' + ].join(''); + var dialog = self.createDialog({ + name : name, + width : 750, + height : 440, + title : self.lang(name), + body : html, + yesBtn : { + name : lang.btnText, + click : function(e) { + if (dialog.isLoading) { + return; + } + if (canvas.isEmpty()) { + K.options.errorMsgHandler(lang.empty, "error"); + return; + } + canvas.save(function(data) { + if (allowUploadGraft) { + dialog.showLoading(self.lang('uploadLoading')); + $.post(uploadJson, { + img_base64_data : data, + fileType : "image", + base64 : 1 + }, function(res) { + dialog.hideLoading(); + if (res.code == "000") { + K.options.errorMsgHandler(lang.uploadSuccess, "ok"); + clickFn.call(self, res.data.url); + self.hideDialog().focus(); + } else { + K.options.errorMsgHandler(lang.uploadFaild, "error"); + } + }, "json"); + } else { + clickFn.call(self, data); + self.hideDialog().focus(); + } + }); + } + } + }); + var canvas = new Canvas({ + canvasId : "canvas-borad", + width : 600, + height : 320 + }); + }; + self.clickToolbar(name, function() { + self.plugin.graftDialog({ + clickFn : function(url) { + self.exec('insertimage', url); + } + }); + }); +}); + +/******************************************************************************* +* KindEditor - WYSIWYG HTML Editor for Internet +* Copyright (C) 2006-2011 kindsoft.net +* +* @author Roddy +* @site http://www.kindsoft.net/ +* @licence http://www.kindsoft.net/license.php +*******************************************************************************/ +KindEditor.plugin('pagebreak', function(K) { + var self = this; + var name = 'pagebreak'; + var pagebreakHtml = K.undef(self.pagebreakHtml, '
      '); + self.clickToolbar(name, function() { + var cmd = self.cmd, range = cmd.range; + self.focus(); + var tail = self.newlineTag == 'br' || K.WEBKIT ? '' : ''; + self.insertHtml(pagebreakHtml + tail); + if (tail !== '') { + var p = K('#__kindeditor_tail_tag__', self.edit.doc); + range.selectNodeContents(p[0]); + p.removeAttr('id'); + cmd.select(); + } + }); +}); + +/******************************************************************************* +* KindEditor - WYSIWYG HTML Editor for Internet +* Copyright (C) 2006-2011 kindsoft.net +* +* @author Roddy +* @site http://www.kindsoft.net/ +* @licence http://www.kindsoft.net/license.php +*******************************************************************************/ +KindEditor.plugin('plainpaste', function(K) { + var self = this, name = 'plainpaste'; + self.clickToolbar(name, function() { + var lang = self.lang(name + '.'), + html = '
      ' + + '
      ' + lang.comment + '
      ' + + '' + + '
      ', + dialog = self.createDialog({ + name : name, + width : 450, + title : self.lang(name), + body : html, + yesBtn : { + name : self.lang('yes'), + click : function(e) { + var html = textarea.val(); + html = K.escape(html); + html = html.replace(/ {2}/g, '  '); + if (self.newlineTag == 'p') { + html = html.replace(/^/, '

      ').replace(/$/, '

      ').replace(/\n/g, '

      '); + } else { + html = html.replace(/\n/g, '
      $&'); + } + self.insertHtml(html).hideDialog().focus(); + } + } + }), + textarea = K('textarea', dialog.div); + textarea[0].focus(); + }); +}); + +/******************************************************************************* +* KindEditor - WYSIWYG HTML Editor for Internet +* Copyright (C) 2006-2011 kindsoft.net +* +* @author Roddy +* @site http://www.kindsoft.net/ +* @licence http://www.kindsoft.net/license.php +*******************************************************************************/ +KindEditor.plugin('preview', function(K) { + var self = this, name = 'preview', undefined; + self.clickToolbar(name, function() { + var lang = self.lang(name + '.'), + width = document.documentElement.clientWidth * 0.9, + height = document.documentElement.clientHeight - 160, + html = '

      ' + + '' + + '
      ', + dialog = self.createDialog({ + name : name, + width : width, + title : self.lang(name), + body : html + }), + iframe = K('iframe', dialog.div), + doc = K.iframeDoc(iframe); + doc.open(); + var cssPath = self.options.cssPath; + var jsPath = self.options.jsPath; + var arr = [ + '', + '', + ''); + if (!K.isArray(cssPath)) { + cssPath = [cssPath]; + } + if (K.inArray(self.options.pluginsPath+'code/prism.css', cssPath) < 0) { + cssPath.push(self.options.pluginsPath+'code/prism.css'); + } + K.each(cssPath, function(i, path) { + if (path) { + arr.push(''); + } + }); + if (self.options.cssData) { + arr.push(''); + } + arr.push(''); + arr.push(self.fullHtml()); + if (!K.isArray(jsPath)) { + jsPath = [jsPath]; + } + if (K.inArray(self.options.pluginsPath+'code/prism.js', jsPath) < 0) { + jsPath.push(self.options.pluginsPath+'code/prism.js'); + } + K.each(jsPath, function(i, path) { + if (path) { + arr.push(''); + } + }); + arr.push(''); + doc.write(arr.join('\n')); + doc.close(); + K(doc.body).css('background-color', '#FFF'); + iframe[0].contentWindow.focus(); + }); +}); + +/******************************************************************************* +* KindEditor - WYSIWYG HTML Editor for Internet +* Copyright (C) 2006-2011 kindsoft.net +* +* @author Roddy +* @site http://www.kindsoft.net/ +* @licence http://www.kindsoft.net/license.php +*******************************************************************************/ +KindEditor.plugin('quickformat', function(K) { + var self = this, name = 'quickformat', + blockMap = K.toMap('blockquote,center,div,h1,h2,h3,h4,h5,h6,p'); + function getFirstChild(knode) { + var child = knode.first(); + while (child && child.first()) { + child = child.first(); + } + return child; + } + self.clickToolbar(name, function() { + self.focus(); + var doc = self.edit.doc, + range = self.cmd.range, + child = K(doc.body).first(), next, + nodeList = [], subList = [], + bookmark = range.createBookmark(true); + while(child) { + next = child.next(); + var firstChild = getFirstChild(child); + if (!firstChild || firstChild.name != 'img') { + if (blockMap[child.name]) { + child.html(child.html().replace(/^(\s| | )+/ig, '')); + child.css('text-indent', '2em'); + } else { + subList.push(child); + } + if (!next || (blockMap[next.name] || blockMap[child.name] && !blockMap[next.name])) { + if (subList.length > 0) { + nodeList.push(subList); + } + subList = []; + } + } + child = next; + } + K.each(nodeList, function(i, subList) { + var wrapper = K('

      ', doc); + subList[0].before(wrapper); + K.each(subList, function(i, knode) { + wrapper.append(knode); + }); + }); + range.moveToBookmark(bookmark); + self.addBookmark(); + }); +}); + +/******************************************************************************* +* KindEditor - WYSIWYG HTML Editor for Internet +* Copyright (C) 2006-2011 kindsoft.net +* +* @author Roddy +* @site http://www.kindsoft.net/ +* @licence http://www.kindsoft.net/license.php +*******************************************************************************/ +KindEditor.plugin('table', function(K) { + var self = this, name = 'table', lang = self.lang(name + '.'), zeroborder = 'ke-zeroborder'; + var borderColor = K.undef(self.options.tableBorderColor, '#cccccc'); + function _setColor(box, color) { + color = color.toUpperCase(); + box.css('background-color', color); + box.css('color', color === '#000000' ? '#FFFFFF' : '#000000'); + box.html(color); + } + var pickerList = []; + function _initColorPicker(dialogDiv, colorBox) { + colorBox.bind('click,mousedown', function(e){ + e.stopPropagation(); + }); + function removePicker() { + K.each(pickerList, function() { + this.remove(); + }); + pickerList = []; + K(document).unbind('click,mousedown', removePicker); + dialogDiv.unbind('click,mousedown', removePicker); + } + colorBox.click(function(e) { + removePicker(); + var box = K(this), + pos = box.pos(); + var picker = K.colorpicker({ + x : pos.x, + y : pos.y + box.height(), + z : 811214, + selectedColor : K(this).html(), + colors : self.colorTable, + noColor : self.lang('noColor'), + shadowMode : self.shadowMode, + click : function(color) { + _setColor(box, color); + removePicker(); + } + }); + pickerList.push(picker); + K(document).bind('click,mousedown', removePicker); + dialogDiv.bind('click,mousedown', removePicker); + }); + } + function _getCellIndex(table, row, cell) { + var rowSpanCount = 0; + for (var i = 0, len = row.cells.length; i < len; i++) { + if (row.cells[i] == cell) { + break; + } + rowSpanCount += row.cells[i].rowSpan - 1; + } + return cell.cellIndex - rowSpanCount; + } + self.plugin.table = { + prop : function(isInsert) { + var html = [ + '
      ', + '
      ', + '', + '
      ', + lang.rows + '   ', + lang.cols + ' ', + '
      ', + '
      ', + '
      ', + '', + '
      ', + lang.width + '   ', + '   ', + lang.height + '   ', + '', + '
      ', + '
      ', + '
      ', + '', + '
      ', + lang.padding + '   ', + lang.spacing + ' ', + '
      ', + '
      ', + '
      ', + '', + '
      ', + '', + '
      ', + '
      ', + '
      ', + '', + '
      ', + lang.borderWidth + '   ', + lang.borderColor + ' ', + '
      ', + '
      ', + '
      ', + '', + '
      ', + '', + '
      ', + '
      ', + '
      ' + ].join(''); + var bookmark = self.cmd.range.createBookmark(); + var dialog = self.createDialog({ + name : name, + width : 500, + title : self.lang(name), + body : html, + beforeRemove : function() { + colorBox.unbind(); + }, + yesBtn : { + name : self.lang('yes'), + click : function(e) { + var rows = rowsBox.val(), + cols = colsBox.val(), + width = widthBox.val(), + height = heightBox.val(), + widthType = widthTypeBox.val(), + heightType = heightTypeBox.val(), + padding = paddingBox.val(), + spacing = spacingBox.val(), + align = alignBox.val(), + border = borderBox.val(), + borderColor = K(colorBox[0]).html() || '', + bgColor = K(colorBox[1]).html() || ''; + if (rows == 0 || !/^\d+$/.test(rows)) { + K.options.errorMsgHandler(self.lang('invalidRows'), "error"); + rowsBox[0].focus(); + return; + } + if (cols == 0 || !/^\d+$/.test(cols)) { + K.options.errorMsgHandler(self.lang('invalidRows'), "error"); + colsBox[0].focus(); + return; + } + if (!/^\d*$/.test(width)) { + K.options.errorMsgHandler(self.lang('invalidWidth'), "error"); + widthBox[0].focus(); + return; + } + if (!/^\d*$/.test(height)) { + K.options.errorMsgHandler(self.lang('invalidHeight'), "error"); + heightBox[0].focus(); + return; + } + if (!/^\d*$/.test(padding)) { + K.options.errorMsgHandler(self.lang('invalidPadding'), "error"); + paddingBox[0].focus(); + return; + } + if (!/^\d*$/.test(spacing)) { + K.options.errorMsgHandler(self.lang('invalidSpacing'), "error"); + spacingBox[0].focus(); + return; + } + if (!/^\d*$/.test(border)) { + K.options.errorMsgHandler(self.lang('invalidBorder'), "error"); + borderBox[0].focus(); + return; + } + if (table) { + if (width !== '') { + table.width(width + widthType); + } else { + table.css('width', ''); + } + if (table[0].width !== undefined) { + table.removeAttr('width'); + } + if (height !== '') { + table.height(height + heightType); + } else { + table.css('height', ''); + } + if (table[0].height !== undefined) { + table.removeAttr('height'); + } + table.css('background-color', bgColor); + if (table[0].bgColor !== undefined) { + table.removeAttr('bgColor'); + } + if (padding !== '') { + table[0].cellPadding = padding; + } else { + table.removeAttr('cellPadding'); + } + if (spacing !== '') { + table[0].cellSpacing = spacing; + } else { + table.removeAttr('cellSpacing'); + } + if (align !== '') { + table[0].align = align; + } else { + table.removeAttr('align'); + } + if (border !== '') { + table.attr('border', border); + } else { + table.removeAttr('border'); + } + if (border === '' || border === '0') { + table.addClass(zeroborder); + } else { + table.removeClass(zeroborder); + } + if (borderColor !== '') { + table.attr('borderColor', borderColor); + } else { + table.removeAttr('borderColor'); + } + self.hideDialog().focus(); + self.cmd.range.moveToBookmark(bookmark); + self.cmd.select(); + self.addBookmark(); + return; + } + var style = ''; + if (width !== '') { + style += 'width:' + width + widthType + ';'; + } + if (height !== '') { + style += 'height:' + height + heightType + ';'; + } + if (bgColor !== '') { + style += 'background-color:' + bgColor + ';'; + } + var html = '') + ''; + } + html += ''; + } + html += '
      '; + if (!K.IE) { + html += '
      '; + } + function getAncestorTag(range) { + var ancestor = K(range.commonAncestor()); + while (ancestor) { + if (ancestor.type == 1 && !ancestor.isStyle()) { + break; + } + ancestor = ancestor.parent(); + } + return ancestor; + } + var tag = getAncestorTag(self.cmd.range); + if (tag.name == 'p') { + tag.before(K(html)); + tag.remove(); + self.cmd.selection(); + self.insertHtml('
      '); + self.select().hideDialog().focus(); + } else { + self.insertHtml(html); + self.select().hideDialog().focus(); + self.addBookmark(); + } + } + } + }), + div = dialog.div, + rowsBox = K('[name="rows"]', div).val(3), + colsBox = K('[name="cols"]', div).val(2), + widthBox = K('[name="width"]', div).val(100), + heightBox = K('[name="height"]', div), + widthTypeBox = K('[name="widthType"]', div), + heightTypeBox = K('[name="heightType"]', div), + paddingBox = K('[name="padding"]', div).val(0), + spacingBox = K('[name="spacing"]', div).val(0), + alignBox = K('[name="align"]', div), + borderBox = K('[name="border"]', div).val(1), + colorBox = K('.ke-input-color', div); + _initColorPicker(div, colorBox.eq(0)); + _initColorPicker(div, colorBox.eq(1)); + _setColor(colorBox.eq(1), ''); + rowsBox[0].focus(); + rowsBox[0].select(); + var table; + if (isInsert) { + return; + } + table = self.plugin.getSelectedTable(); + if (table) { + rowsBox.val(table[0].rows.length); + colsBox.val(table[0].rows.length > 0 ? table[0].rows[0].cells.length : 0); + rowsBox.attr('disabled', true); + colsBox.attr('disabled', true); + var match, + tableWidth = table[0].style.width || table[0].width, + tableHeight = table[0].style.height || table[0].height; + if (tableWidth !== undefined && (match = /^(\d+)((?:px|%)*)$/.exec(tableWidth))) { + widthBox.val(match[1]); + widthTypeBox.val(match[2]); + } else { + widthBox.val(''); + } + if (tableHeight !== undefined && (match = /^(\d+)((?:px|%)*)$/.exec(tableHeight))) { + heightBox.val(match[1]); + heightTypeBox.val(match[2]); + } + paddingBox.val(table[0].cellPadding || ''); + spacingBox.val(table[0].cellSpacing || ''); + alignBox.val(table[0].align || ''); + borderBox.val(table[0].border === undefined ? '' : table[0].border); + _setColor(colorBox.eq(0), K.toHex(table.attr('borderColor') || '')); + _setColor(colorBox.eq(1), K.toHex(table[0].style.backgroundColor || table[0].bgColor || '')); + widthBox[0].focus(); + widthBox[0].select(); + } + }, + cellprop : function() { + var html = [ + '
      ', + '
      ', + '', + lang.width + '   ', + '   ', + lang.height + '   ', + '', + '
      ', + '
      ', + '', + lang.textAlign + ' ', + lang.verticalAlign + ' ', + '
      ', + '
      ', + '', + lang.borderWidth + '   ', + lang.borderColor + ' ', + '
      ', + '
      ', + '', + '', + '
      ', + '
      ' + ].join(''); + var bookmark = self.cmd.range.createBookmark(); + var dialog = self.createDialog({ + name : name, + width : 500, + title : self.lang('tablecell'), + body : html, + beforeRemove : function() { + colorBox.unbind(); + }, + yesBtn : { + name : self.lang('yes'), + click : function(e) { + var width = widthBox.val(), + height = heightBox.val(), + widthType = widthTypeBox.val(), + heightType = heightTypeBox.val(), + padding = paddingBox.val(), + spacing = spacingBox.val(), + textAlign = textAlignBox.val(), + verticalAlign = verticalAlignBox.val(), + border = borderBox.val(), + borderColor = K(colorBox[0]).html() || '', + bgColor = K(colorBox[1]).html() || ''; + if (!/^\d*$/.test(width)) { + K.options.errorMsgHandler(self.lang('invalidWidth'), "error"); + widthBox[0].focus(); + return; + } + if (!/^\d*$/.test(height)) { + K.options.errorMsgHandler(self.lang('invalidHeight'), "error"); + heightBox[0].focus(); + return; + } + if (!/^\d*$/.test(border)) { + K.options.errorMsgHandler(self.lang('invalidBorder'), "error"); + borderBox[0].focus(); + return; + } + cell.css({ + width : width !== '' ? (width + widthType) : '', + height : height !== '' ? (height + heightType) : '', + 'background-color' : bgColor, + 'text-align' : textAlign, + 'vertical-align' : verticalAlign, + 'border-width' : border, + 'border-style' : border !== '' ? 'solid' : '', + 'border-color' : borderColor + }); + self.hideDialog().focus(); + self.cmd.range.moveToBookmark(bookmark); + self.cmd.select(); + self.addBookmark(); + } + } + }), + div = dialog.div, + widthBox = K('[name="width"]', div).val(100), + heightBox = K('[name="height"]', div), + widthTypeBox = K('[name="widthType"]', div), + heightTypeBox = K('[name="heightType"]', div), + paddingBox = K('[name="padding"]', div).val(0), + spacingBox = K('[name="spacing"]', div).val(0), + textAlignBox = K('[name="textAlign"]', div), + verticalAlignBox = K('[name="verticalAlign"]', div), + borderBox = K('[name="border"]', div).val(1), + colorBox = K('.ke-input-color', div); + _initColorPicker(div, colorBox.eq(0)); + _initColorPicker(div, colorBox.eq(1)); + _setColor(colorBox.eq(1), ''); + widthBox[0].focus(); + widthBox[0].select(); + var cell = self.plugin.getSelectedCell(); + var match, + cellWidth = cell[0].style.width || cell[0].width || '', + cellHeight = cell[0].style.height || cell[0].height || ''; + if ((match = /^(\d+)((?:px|%)*)$/.exec(cellWidth))) { + widthBox.val(match[1]); + widthTypeBox.val(match[2]); + } else { + widthBox.val(''); + } + if ((match = /^(\d+)((?:px|%)*)$/.exec(cellHeight))) { + heightBox.val(match[1]); + heightTypeBox.val(match[2]); + } + textAlignBox.val(cell[0].style.textAlign || ''); + verticalAlignBox.val(cell[0].style.verticalAlign || ''); + var border = cell[0].style.borderWidth || ''; + if (border) { + border = parseInt(border); + } + borderBox.val(border); + _setColor(colorBox.eq(0), K.toHex(cell[0].style.borderColor || '')); + _setColor(colorBox.eq(1), K.toHex(cell[0].style.backgroundColor || '')); + widthBox[0].focus(); + widthBox[0].select(); + }, + insert : function() { + this.prop(true); + }, + 'delete' : function() { + var table = self.plugin.getSelectedTable(); + self.cmd.range.setStartBefore(table[0]).collapse(true); + self.cmd.select(); + table.remove(); + self.addBookmark(); + }, + colinsert : function(offset) { + var table = self.plugin.getSelectedTable()[0], + row = self.plugin.getSelectedRow()[0], + cell = self.plugin.getSelectedCell()[0], + index = cell.cellIndex + offset; + index += table.rows[0].cells.length - row.cells.length; + for (var i = 0, len = table.rows.length; i < len; i++) { + var newRow = table.rows[i], + newCell = newRow.insertCell(index); + newCell.innerHTML = K.IE ? '' : '
      '; + index = _getCellIndex(table, newRow, newCell); + } + self.cmd.range.selectNodeContents(cell).collapse(true); + self.cmd.select(); + self.addBookmark(); + }, + colinsertleft : function() { + this.colinsert(0); + }, + colinsertright : function() { + this.colinsert(1); + }, + rowinsert : function(offset) { + var table = self.plugin.getSelectedTable()[0], + row = self.plugin.getSelectedRow()[0], + cell = self.plugin.getSelectedCell()[0]; + var rowIndex = row.rowIndex; + if (offset === 1) { + rowIndex = row.rowIndex + (cell.rowSpan - 1) + offset; + } + var newRow = table.insertRow(rowIndex); + for (var i = 0, len = row.cells.length; i < len; i++) { + if (row.cells[i].rowSpan > 1) { + len -= row.cells[i].rowSpan - 1; + } + var newCell = newRow.insertCell(i); + if (offset === 1 && row.cells[i].colSpan > 1) { + newCell.colSpan = row.cells[i].colSpan; + } + newCell.innerHTML = K.IE ? '' : '
      '; + } + for (var j = rowIndex; j >= 0; j--) { + var cells = table.rows[j].cells; + if (cells.length > i) { + for (var k = cell.cellIndex; k >= 0; k--) { + if (cells[k].rowSpan > 1) { + cells[k].rowSpan += 1; + } + } + break; + } + } + self.cmd.range.selectNodeContents(cell).collapse(true); + self.cmd.select(); + self.addBookmark(); + }, + rowinsertabove : function() { + this.rowinsert(0); + }, + rowinsertbelow : function() { + this.rowinsert(1); + }, + rowmerge : function() { + var table = self.plugin.getSelectedTable()[0], + row = self.plugin.getSelectedRow()[0], + cell = self.plugin.getSelectedCell()[0], + rowIndex = row.rowIndex, + nextRowIndex = rowIndex + cell.rowSpan, + nextRow = table.rows[nextRowIndex]; + if (table.rows.length <= nextRowIndex) { + return; + } + var cellIndex = cell.cellIndex; + if (nextRow.cells.length <= cellIndex) { + return; + } + var nextCell = nextRow.cells[cellIndex]; + if (cell.colSpan !== nextCell.colSpan) { + return; + } + cell.rowSpan += nextCell.rowSpan; + nextRow.deleteCell(cellIndex); + self.cmd.range.selectNodeContents(cell).collapse(true); + self.cmd.select(); + self.addBookmark(); + }, + colmerge : function() { + var table = self.plugin.getSelectedTable()[0], + row = self.plugin.getSelectedRow()[0], + cell = self.plugin.getSelectedCell()[0], + rowIndex = row.rowIndex, + cellIndex = cell.cellIndex, + nextCellIndex = cellIndex + 1; + if (row.cells.length <= nextCellIndex) { + return; + } + var nextCell = row.cells[nextCellIndex]; + if (cell.rowSpan !== nextCell.rowSpan) { + return; + } + cell.colSpan += nextCell.colSpan; + row.deleteCell(nextCellIndex); + self.cmd.range.selectNodeContents(cell).collapse(true); + self.cmd.select(); + self.addBookmark(); + }, + rowsplit : function() { + var table = self.plugin.getSelectedTable()[0], + row = self.plugin.getSelectedRow()[0], + cell = self.plugin.getSelectedCell()[0], + rowIndex = row.rowIndex; + if (cell.rowSpan === 1) { + return; + } + var cellIndex = _getCellIndex(table, row, cell); + for (var i = 1, len = cell.rowSpan; i < len; i++) { + var newRow = table.rows[rowIndex + i], + newCell = newRow.insertCell(cellIndex); + if (cell.colSpan > 1) { + newCell.colSpan = cell.colSpan; + } + newCell.innerHTML = K.IE ? '' : '
      '; + cellIndex = _getCellIndex(table, newRow, newCell); + } + K(cell).removeAttr('rowSpan'); + self.cmd.range.selectNodeContents(cell).collapse(true); + self.cmd.select(); + self.addBookmark(); + }, + colsplit : function() { + var table = self.plugin.getSelectedTable()[0], + row = self.plugin.getSelectedRow()[0], + cell = self.plugin.getSelectedCell()[0], + cellIndex = cell.cellIndex; + if (cell.colSpan === 1) { + return; + } + for (var i = 1, len = cell.colSpan; i < len; i++) { + var newCell = row.insertCell(cellIndex + i); + if (cell.rowSpan > 1) { + newCell.rowSpan = cell.rowSpan; + } + newCell.innerHTML = K.IE ? '' : '
      '; + } + K(cell).removeAttr('colSpan'); + self.cmd.range.selectNodeContents(cell).collapse(true); + self.cmd.select(); + self.addBookmark(); + }, + coldelete : function() { + var table = self.plugin.getSelectedTable()[0], + row = self.plugin.getSelectedRow()[0], + cell = self.plugin.getSelectedCell()[0], + index = cell.cellIndex; + for (var i = 0, len = table.rows.length; i < len; i++) { + var newRow = table.rows[i], + newCell = newRow.cells[index]; + if (newCell.colSpan > 1) { + newCell.colSpan -= 1; + if (newCell.colSpan === 1) { + K(newCell).removeAttr('colSpan'); + } + } else { + newRow.deleteCell(index); + } + if (newCell.rowSpan > 1) { + i += newCell.rowSpan - 1; + } + } + if (row.cells.length === 0) { + self.cmd.range.setStartBefore(table).collapse(true); + self.cmd.select(); + K(table).remove(); + } else { + self.cmd.selection(true); + } + self.addBookmark(); + }, + rowdelete : function() { + var table = self.plugin.getSelectedTable()[0], + row = self.plugin.getSelectedRow()[0], + cell = self.plugin.getSelectedCell()[0], + rowIndex = row.rowIndex; + for (var i = cell.rowSpan - 1; i >= 0; i--) { + table.deleteRow(rowIndex + i); + } + if (table.rows.length === 0) { + self.cmd.range.setStartBefore(table).collapse(true); + self.cmd.select(); + K(table).remove(); + } else { + self.cmd.selection(true); + } + self.addBookmark(); + } + }; + self.clickToolbar(name, self.plugin.table.prop); +}); + +/******************************************************************************* +* KindEditor - WYSIWYG HTML Editor for Internet +* Copyright (C) 2006-2011 kindsoft.net +* +* @author Roddy +* @site http://www.kindsoft.net/ +* @licence http://www.kindsoft.net/license.php +*******************************************************************************/ +KindEditor.plugin('template', function(K) { + var self = this, name = 'template', lang = self.lang(name + '.'), + htmlPath = self.pluginsPath + name + '/html/'; + function getFilePath(fileName) { + return htmlPath + fileName + '?ver=' + encodeURIComponent(K.DEBUG ? K.TIME : K.VERSION); + } + self.clickToolbar(name, function() { + var lang = self.lang(name + '.'), + arr = ['
      ', + '
      ', + '
      ', + lang. selectTemplate + ' ', + ' ', + '
      ', + '
      ', + '', + '
      '].join(''); + var dialog = self.createDialog({ + name : name, + width : 500, + title : self.lang(name), + body : html, + yesBtn : { + name : self.lang('yes'), + click : function(e) { + var doc = K.iframeDoc(iframe); + self[checkbox[0].checked ? 'html' : 'insertHtml'](doc.body.innerHTML).hideDialog().focus(); + } + } + }); + var selectBox = K('select', dialog.div), + checkbox = K('[name="replaceFlag"]', dialog.div), + iframe = K('iframe', dialog.div); + checkbox[0].checked = true; + iframe.attr('src', getFilePath(selectBox.val())); + selectBox.change(function() { + iframe.attr('src', getFilePath(this.value)); + }); + }); +}); + +/******************************************************************************* +* KindEditor - WYSIWYG HTML Editor for Internet +* Copyright (C) 2006-2011 kindsoft.net +* +* @author Roddy +* @site http://www.kindsoft.net/ +* @licence http://www.kindsoft.net/license.php +*******************************************************************************/ +KindEditor.plugin('wordpaste', function(K) { + var self = this, name = 'wordpaste'; + self.clickToolbar(name, function() { + var lang = self.lang(name + '.'), + html = '
      ' + + '
      ' + lang.comment + '
      ' + + '' + + '
      ', + dialog = self.createDialog({ + name : name, + width : 450, + title : self.lang(name), + body : html, + yesBtn : { + name : self.lang('yes'), + click : function(e) { + var str = doc.body.innerHTML; + str = K.clearMsWord(str, self.filterMode ? self.htmlTags : K.options.htmlTags); + self.insertHtml(str).hideDialog().focus(); + } + } + }), + div = dialog.div, + iframe = K('iframe', div), + doc = K.iframeDoc(iframe); + if (!K.IE) { + doc.designMode = 'on'; + } + doc.open(); + doc.write('WordPaste'); + doc.write(''); + if (!K.IE) { + doc.write('
      '); + } + doc.write(''); + doc.close(); + if (K.IE) { + doc.body.contentEditable = 'true'; + } + iframe[0].contentWindow.focus(); + }); +}); + + +KindEditor.plugin('fixtoolbar', function (K) { + var self = this; + if (!self.fixToolBar) { + return; + } + function init() { + var toolbar = K('.ke-toolbar'); + var originY = toolbar.pos().y; + K(window).bind('scroll', function () { + if (toolbar.css('position') == 'fixed') { + if(document.body.scrollTop - originY < 0){ + toolbar.css('position', 'static'); + toolbar.css('top', 'auto'); + } + } else { + if (toolbar.pos().y - document.body.scrollTop < 0) { + toolbar.css('position', 'fixed'); + toolbar.css('top', 0); + } + } + }); + } + if (self.isCreated) { + init(); + } else { + self.afterCreate(init); + } +}); diff --git a/tools/NKeditor/README.md b/tools/NKeditor/README.md new file mode 100644 index 00000000..3347d021 --- /dev/null +++ b/tools/NKeditor/README.md @@ -0,0 +1,98 @@ +> # 再一次温馨提示:建议有问题请提 issue 不要在评论区提, 评论区的内容一般没有及时看就被其他消息掩盖了,很容易被忽略看不到。 +# NKeditor +NKedtior是基于 kindeditor 进行二次开发的项目 +kindeditor 是一款优秀的开源在线编辑器。轻量级且功能强大,代码量却不到百度的ueditor编辑器的一半。可惜已经4年没有更新了,由于业务的需求我们在kindeditor的基础上开发了 NKeditor, 主要做了一下工作: +1. 调整编辑器和弹出 dialog 的样式,美化了UI +2. 重写图片上传和批量图片上传插件,使用 html5 上传代替了 flash,实现了待上传图片预览,优化用户体验 +3. 修复一些已知的bug,如 ajax 提交无法获取内容等 +4. 新增涂鸦等功能 + +再次感谢 kindeditor 的开发者,为我们提供了如此优秀的在线编辑器,让我们能在前人的基础上继续贡献自己的微薄之力。 + +# 关于版本号 +NKeditor 沿用了 kindeditor 最后发布的版本号 v4.1.11,所以NKeditor 发布的第一个稳定版本是 v4.2.0, 以后的版本都是在 v4.2.0 版本的基础上发布的。 + +# 在线演示 + +### http://d.r9it.com/nkeditor/ + +# 部署和构建 +1. npm install -g grunt-cli +2. 切换到 NKeditor 根目录,执行 npm install +3. 编译 : 执行 grunt +4. 如果要打包的话,执行 grunt zip,就会把编辑器的有关的的文件全部打包放入 dist 文件夹中,解压之后你就会得到一个干净的编辑器了。直接访问 index.html 进行预览。 + +# java版本接入 +在本人的另一个 spring-boot 开源项目 https://gitee.com/blackfox/spring-boot-demo 中做了集成,' +这里顺便介绍一下 spring-boot-demo 项目,就是用 spring-boot 结合国产前端框架 AmazeUI 做了一个后台基础开发框架,集成了mybatis Mapper3, 分页插件, +并集成了 shiro 实现了 RBAC 权限管理系统,可谓开箱即用,分分钟搭建好一个高大上的后台管理系统。 + +clone 下来,导入数据库,更改application.yml的数据库配置,就可以直接运行了,登录进去就可以体验了。 +不过java版本目前只实现了七牛云的文件上传和管理,原生的没有做实现。 + +# 使用说明 +1. 批量图片上传的插件依赖 jQuery-1.7 以上的版本,jquery需要自己手动引入,编辑器没有默认引入的,这样避免加载了你不需要的脚本库导致页面加载变慢 +2. 文件上传实现了 php 传统方式和七牛云图片上传,默认推荐使用七牛云,使用很简单,而且免费(企业版收费)。demo 上使用的是我的个人空间,多人测试的时候上传速度和并发都有很大的限制,如果大家测试的时候觉得慢,可以改成自己的七牛空间或者使用本地上传。 +5. 七牛云的 SDK 依赖 composer 构建,所以如果使用七牛云上传的话请在 php/qiniu 目录下执行 __composer install__ +4. 还有就是 demo 中我的七牛存储空间仅供大家测试使用,请不要上传有违法律法规和道德规范的图片和文件资源,你懂的 O(∩_∩)O~。 +3. 后端上传和文件管理代码我只是写了简单的 demo, 没有做安全处理之类,请谨慎使用,仅做参考。 + +NKeditor 更新记录 +======== + +### version 5.0.4 +* 修复代码高亮的预览的 Bug +* 新增日文语言包 + +### version 5.0.3 +* 删除了图片搜索和图片抓取功能 +* 增加代码高亮支持,新增编辑辅助功能 +* 新增插入引用(quote)插件,支持插入引用 +* 修复文件管理的无法获取七牛服务器文件列表的 bug +* 美化表格控件,使用 bootstrap 表格样式 +* 美化内容预览插件,支持预览时候代码高亮,支持在预览页面引入自定义的 css 样式和 javascript 脚本 +* 修复 IE 下涂鸦上传失败的 bug + +### version 5.0.2 +* 修复字体,颜色等下拉菜单图标的位置的bug +* 修复搜索相对路径的bug issue [https://gitee.com/blackfox/kindeditor/issues/IFLFS](https://gitee +.com/blackfox/kindeditor/issues/IFLFS),感谢 @mean2015 的反馈 +* 重构了通用图片上传和图片列表的API,优化图片的存储和列表算法 issue [https://gitee.com/blackfox/kindeditor/issues/IFHXZ](https://gitee +.com/blackfox/kindeditor/issues/IFHXZ), 感谢 @快乐的langYa 的反馈。 + +在 + +### version 5.0.1 +* 鉴于很多网友反馈新版的皮肤很丑,吓得宝宝赶紧修正了皮肤,更改图标尺寸和间距,使编辑器看起来不那么拥挤, 更改了样式,图标参参考了 "wysiwyg-editor", 看起来确实好多了,感谢 @ +公孙二狗 同学的推荐。 +* 删除了一些非主流色调的皮肤,恢复并保留了原版的皮肤,如果还是觉得原版皮肤好看的,可以通过设置 themeType:"default" 来加载原版的皮肤。 +* 新增了java 版本的接入 demo https://gitee.com/blackfox/spring-boot-demo. +* 修复了一些已知的bug + +### version 5.0.0 +大版本更新,使用 sass 重写了全部的 css 代码,方便维护了,重写了皮肤,而且提供了5套皮肤供自由选择,修复了 N 个bug。 +* 修复切换源代码再返回就看不到图标了的bug, 感谢开源中国用户 “吴小华” 同学的反馈 +* 修复 [#IFA3P](https://gitee.com/blackfox/kindeditor/issues/IFA3P) 提出的bug,弹出框和语言包的问题,提供新的 options 参数 dialogOffset 用来设置弹出框的位置。默认为 0 ,即居中显示。 +* 应广大网友的强烈要求,紧急更新了一套皮肤,默认使用了 svg 矢量图标,对于IE浏览器,使用 png 图标进行了兼容,不过清晰度没有 svg 那么高(这个是必须要的) +* 新增 tableBorderColor 配置选项,设置表格的默认边框,并把表格的默认边框颜色设置为 #cccccc + + +### version 4.2.2 +* 修复在有滚动条的时候,批量文件上传的弹框定位到不可见区域的bug +* 给弹框新增 css3 animation 动画特效 +* 优化 loadStyle(), loadScript() 方法,新增缓存,避免同样的css和js资源被多次加载 +* 精简了项目,将类似的css的css,js合并复用,减少资源加载 +* 修复在伪静态php框架中,获取js相对路径出错而导致资源加载失败的bug + +### version 4.2.1 +* 修改语言包的加载方式,默认加载中文语言包,不用再手动通过 script 去加载,现在使用 NKeditor 只需要引入一个 NKeditor-all-min.js 就可以了 +* 精简资源,比较大的插件js,css 代码全部压缩,加载 min 版的静态资源。 +* 新增 [YYGraft](https://gitee.com/blackfox/scrawl)在线涂鸦工具插件,可以愉快的添加涂鸦了。 +* 修改图片上传类,支持 base64 图片上传 + +### version 4.2.0(接原来kindeditor版本) +* 调整了编辑器和弹出 dialog 的样式,美化了UI +* 重写了图片上传和批量图片上传插件,使用 html5 上传代替了 flash,实现了待上传图片预览,优化用户体验 +* 添加七牛云上传支持,并封装了上传工具 +* 修复了一些已知的bug,如 ajax 提交无法获取内容等 + diff --git a/tools/NKeditor/index.html b/tools/NKeditor/index.html new file mode 100644 index 00000000..648f0c20 --- /dev/null +++ b/tools/NKeditor/index.html @@ -0,0 +1,201 @@ + + + + + NKeditor 在线编辑器 PHP demo + + + + + +
      + + + + +
      +
      +
      + +
      +
      +
      +
      + +
      +
      +
      +
      + +
      +
      +
      +
      + +
      +
      +
      +
      + +
      +
      +
      + +
      +
      + +
      + +
      + +
      + + + + + + + + + + + diff --git a/tools/NKeditor/lang/ar.js b/tools/NKeditor/lang/ar.js new file mode 100644 index 00000000..6eb4b7e3 --- /dev/null +++ b/tools/NKeditor/lang/ar.js @@ -0,0 +1,242 @@ +/******************************************************************************* +* KindEditor - WYSIWYG HTML Editor for Internet +* Copyright (C) 2006-2011 kindsoft.net +* +* @author Roddy +* @site http://www.kindsoft.net/ +* @licence http://www.kindsoft.net/license.php +* Arabic Translation By daif alotaibi (http://daif.net/) +*******************************************************************************/ + +KindEditor.lang({ + source : 'عرض المصدر', + preview : 'معاينة الصفحة', + undo : 'تراجع(Ctrl+Z)', + redo : 'إعادة التراجع(Ctrl+Y)', + cut : 'قص(Ctrl+X)', + copy : 'نسخ(Ctrl+C)', + paste : 'لصق(Ctrl+V)', + plainpaste : 'لصق كنص عادي', + wordpaste : 'لصق من مايكروسفت ورد', + selectall : 'تحديد الكل', + justifyleft : 'محاذاه لليسار', + justifycenter : 'محاذاه للوسط', + justifyright : 'محاذاه لليمين', + justifyfull : 'محاذاه تلقائية', + insertorderedlist : 'قائمة مرقمه', + insertunorderedlist : 'قائمة نقطية', + indent : 'إزاحه النص', + outdent : 'إلغاء الازاحة', + subscript : 'أسفل النص', + superscript : 'أعلى النص', + formatblock : 'Paragraph format', + fontname : 'نوع الخط', + fontsize : 'حجم الخط', + forecolor : 'لون النص', + hilitecolor : 'لون خلفية النص', + bold : 'عريض(Ctrl+B)', + italic : 'مائل(Ctrl+I)', + underline : 'خط تحت النص(Ctrl+U)', + strikethrough : 'خط على النص', + removeformat : 'إزالة التنسيق', + image : 'إدراج صورة', + multiimage : 'Multi image', + flash : 'إدراج فلاش', + media : 'إدراج وسائط متعددة', + table : 'إدراج جدول', + tablecell : 'خلية', + hr : 'إدراج خط أفقي', + emoticons : 'إدراج وجه ضاحك', + link : 'رابط', + unlink : 'إزالة الرابط', + fullscreen : 'محرر ملئ الشاشة', + about : 'حول', + print : 'طباعة', + filemanager : 'مدير الملفات', + code : 'إدراج نص برمجي', + map : 'خرائط قووقل', + baidumap : 'خرائط قووقل', + lineheight : 'إرتفاع السطر', + clearhtml : 'مسح كود HTML', + pagebreak : 'إدراج فاصل صفحات', + quickformat : 'تنسيق سريع', + insertfile : 'إدراج ملف', + template : 'إدراج قالب', + anchor : 'رابط', + yes : 'موافق', + no : 'إلغاء', + close : 'إغلاق', + editImage : 'خصائص الصورة', + deleteImage : 'حذفالصورة', + editFlash : 'خصائص الفلاش', + deleteFlash : 'حذف الفلاش', + editMedia : 'خصائص الوسائط', + deleteMedia : 'حذف الوسائط', + editLink : 'خصائص الرابط', + deleteLink : 'إزالة الرابط', + editAnchor : 'Anchor properties', + deleteAnchor : 'Delete Anchor', + tableprop : 'خصائص الجدول', + tablecellprop : 'خصائص الخلية', + tableinsert : 'إدراج جدول', + tabledelete : 'حذف جدول', + tablecolinsertleft : 'إدراج عمود لليسار', + tablecolinsertright : 'إدراج عمود لليسار', + tablerowinsertabove : 'إدراج صف للأعلى', + tablerowinsertbelow : 'إدراج صف للأسفل', + tablerowmerge : 'دمج للأسفل', + tablecolmerge : 'دمج لليمين', + tablerowsplit : 'تقسم الصف', + tablecolsplit : 'تقسيم العمود', + tablecoldelete : 'حذف العمود', + tablerowdelete : 'حذف الصف', + noColor : 'إفتراضي', + pleaseSelectFile : 'Please select file.', + invalidImg : "الرجاء إدخال رابط صحيح.\nالملفات المسموح بها: jpg,gif,bmp,png", + invalidMedia : "الرجاء إدخال رابط صحيح.\nالملفات المسموح بها: swf,flv,mp3,wav,wma,wmv,mid,avi,mpg,asf,rm,rmvb", + invalidWidth : "العرض يجب أن يكون رقم.", + invalidHeight : "الإرتفاع يجب أن يكون رقم.", + invalidBorder : "عرض الحد يجب أن يكون رقم.", + invalidUrl : "الرجاء إدخال رابط حيح.", + invalidRows : 'صفوف غير صحيح.', + invalidCols : 'أعمدة غير صحيحة.', + invalidPadding : 'The padding must be number.', + invalidSpacing : 'The spacing must be number.', + invalidJson : 'Invalid JSON string.', + uploadSuccess : 'تم رفع الملف بنجاح.', + cutError : 'حاليا غير مدعومة من المتصفح, إستخدم إختصار لوحة المفاتيح (Ctrl+X).', + copyError : 'حاليا غير مدعومة من المتصفح, إستخدم إختصار لوحة المفاتيح (Ctrl+C).', + pasteError : 'حاليا غير مدعومة من المتصفح, إستخدم إختصار لوحة المفاتيح (Ctrl+V).', + ajaxLoading : 'Loading ...', + uploadLoading : 'Uploading ...', + uploadError : 'Upload Error', + 'plainpaste.comment' : 'إستخدم إختصار لوحة المفاتيح (Ctrl+V) للصق داخل النافذة.', + 'wordpaste.comment' : 'إستخدم إختصار لوحة المفاتيح (Ctrl+V) للصق داخل النافذة.', + 'code.pleaseInput' : 'Please input code.', + 'link.url' : 'الرابط', + 'link.linkType' : 'الهدف', + 'link.newWindow' : 'نافذة جديدة', + 'link.selfWindow' : 'نفس النافذة', + 'flash.url' : 'الرابط', + 'flash.width' : 'العرض', + 'flash.height' : 'الإرتفاع', + 'flash.upload' : 'رفع', + 'flash.viewServer' : 'أستعراض', + 'media.url' : 'الرابط', + 'media.width' : 'العرض', + 'media.height' : 'الإرتفاع', + 'media.autostart' : 'تشغيل تلقائي', + 'media.upload' : 'رفع', + 'media.viewServer' : 'أستعراض', + 'image.remoteImage' : 'إدراج الرابط', + 'image.localImage' : 'رفع', + 'image.remoteUrl' : 'الرابط', + 'image.localUrl' : 'الملف', + 'image.size' : 'الحجم', + 'image.width' : 'العرض', + 'image.height' : 'الإرتفاع', + 'image.resetSize' : 'إستعادة الأبعاد', + 'image.align' : 'محاذاة', + 'image.defaultAlign' : 'الإفتراضي', + 'image.leftAlign' : 'اليسار', + 'image.rightAlign' : 'اليمين', + 'image.imgTitle' : 'العنوان', + 'image.upload' : 'أستعراض', + 'image.viewServer' : 'أستعراض', + 'multiimage.uploadDesc' : 'Allows users to upload <%=uploadLimit%> images, single image size not exceeding <%=sizeLimit%>', + 'multiimage.startUpload' : 'Start upload', + 'multiimage.clearAll' : 'Clear all', + 'multiimage.insertAll' : 'Insert all', + 'multiimage.queueLimitExceeded' : 'Queue limit exceeded.', + 'multiimage.fileExceedsSizeLimit' : 'File exceeds size limit.', + 'multiimage.zeroByteFile' : 'Zero byte file.', + 'multiimage.invalidFiletype' : 'Invalid file type.', + 'multiimage.unknownError' : 'Unknown upload error.', + 'multiimage.pending' : 'Pending ...', + 'multiimage.uploadError' : 'Upload error', + 'filemanager.emptyFolder' : 'فارغ', + 'filemanager.moveup' : 'المجلد الأب', + 'filemanager.viewType' : 'العرض: ', + 'filemanager.viewImage' : 'مصغرات', + 'filemanager.listImage' : 'قائمة', + 'filemanager.orderType' : 'الترتيب: ', + 'filemanager.fileName' : 'بالإسم', + 'filemanager.fileSize' : 'بالحجم', + 'filemanager.fileType' : 'بالنوع', + 'insertfile.url' : 'الرابط', + 'insertfile.title' : 'العنوان', + 'insertfile.upload' : 'رفع', + 'insertfile.viewServer' : 'أستعراض', + 'table.cells' : 'خلايا', + 'table.rows' : 'صفوف', + 'table.cols' : 'أعمدة', + 'table.size' : 'الأبعاد', + 'table.width' : 'العرض', + 'table.height' : 'الإرتفاع', + 'table.percent' : '%', + 'table.px' : 'px', + 'table.space' : 'الخارج', + 'table.padding' : 'الداخل', + 'table.spacing' : 'الفراغات', + 'table.align' : 'محاذاه', + 'table.textAlign' : 'افقى', + 'table.verticalAlign' : 'رأسي', + 'table.alignDefault' : 'إفتراضي', + 'table.alignLeft' : 'يسار', + 'table.alignCenter' : 'وسط', + 'table.alignRight' : 'يمين', + 'table.alignTop' : 'أعلى', + 'table.alignMiddle' : 'منتصف', + 'table.alignBottom' : 'أسفل', + 'table.alignBaseline' : 'Baseline', + 'table.border' : 'الحدود', + 'table.borderWidth' : 'العرض', + 'table.borderColor' : 'اللون', + 'table.backgroundColor' : 'الخلفية', + 'map.address' : 'العنوان: ', + 'map.search' : 'بحث', + 'baidumap.address' : 'العنوان: ', + 'baidumap.search' : 'بحث', + 'baidumap.insertDynamicMap' : 'Dynamic Map', + 'anchor.name' : 'إسم الرابط', + 'formatblock.formatBlock' : { + h1 : 'عنوان 1', + h2 : 'عنوان 2', + h3 : 'عنوان 3', + h4 : 'عنوان 4', + p : 'عادي' + }, + 'fontname.fontName' : { + 'Arial' : 'Arial', + 'Arial Black' : 'Arial Black', + 'Comic Sans MS' : 'Comic Sans MS', + 'Courier New' : 'Courier New', + 'Garamond' : 'Garamond', + 'Georgia' : 'Georgia', + 'Tahoma' : 'Tahoma', + 'Times New Roman' : 'Times New Roman', + 'Trebuchet MS' : 'Trebuchet MS', + 'Verdana' : 'Verdana' + }, + 'lineheight.lineHeight' : [ + {'1' : 'إرتفاع السطر 1'}, + {'1.5' : 'إرتفاع السطر 1.5'}, + {'2' : 'إرتفاع السطر 2'}, + {'2.5' : 'إرتفاع السطر 2.5'}, + {'3' : 'إرتفاع السطر 3'} + ], + 'template.selectTemplate' : 'قالب', + 'template.replaceContent' : 'إستبدال المحتوى الحالي', + 'template.fileList' : { + '1.html' : 'صورة ونص', + '2.html' : 'جدول', + '3.html' : 'قائمة' + } +}, 'ar'); + +KindEditor.each(KindEditor.options.items, function(i, name) { + if (name == 'baidumap') { + KindEditor.options.items[i] = 'map'; + } +}); +KindEditor.options.langType = 'ar'; \ No newline at end of file diff --git a/tools/NKeditor/lang/en.js b/tools/NKeditor/lang/en.js new file mode 100644 index 00000000..dbaa616b --- /dev/null +++ b/tools/NKeditor/lang/en.js @@ -0,0 +1,243 @@ +/******************************************************************************* +* KindEditor - WYSIWYG HTML Editor for Internet +* Copyright (C) 2006-2011 kindsoft.net +* +* @author Roddy +* @site http://www.kindsoft.net/ +* @licence http://www.kindsoft.net/license.php +*******************************************************************************/ + +KindEditor.lang({ + source : 'Source', + preview : 'Preview', + undo : 'Undo(Ctrl+Z)', + redo : 'Redo(Ctrl+Y)', + cut : 'Cut(Ctrl+X)', + copy : 'Copy(Ctrl+C)', + paste : 'Paste(Ctrl+V)', + plainpaste : 'Paste as plain text', + wordpaste : 'Paste from Word', + selectall : 'Select all', + justifyleft : 'Align left', + justifycenter : 'Align center', + justifyright : 'Align right', + justifyfull : 'Align full', + insertorderedlist : 'Ordered list', + insertunorderedlist : 'Unordered list', + indent : 'Increase indent', + outdent : 'Decrease indent', + subscript : 'Subscript', + superscript : 'Superscript', + formatblock : 'Paragraph format', + fontname : 'Font family', + fontsize : 'Font size', + forecolor : 'Text color', + hilitecolor : 'Highlight color', + bold : 'Bold(Ctrl+B)', + italic : 'Italic(Ctrl+I)', + underline : 'Underline(Ctrl+U)', + strikethrough : 'Strikethrough', + removeformat : 'Remove format', + image : 'Image', + multiimage : 'Multi image', + flash : 'Flash', + media : 'Embeded media', + table : 'Table', + tablecell : 'Cell', + hr : 'Insert horizontal line', + emoticons : 'Insert emoticon', + link : 'Link', + unlink : 'Unlink', + fullscreen : 'Toggle fullscreen mode', + about : 'About', + print : 'Print', + filemanager : 'File Manager', + code : 'Insert code', + map : 'Google Maps', + baidumap : 'Baidu Maps', + lineheight : 'Line height', + clearhtml : 'Clear HTML code', + pagebreak : 'Insert Page Break', + quickformat : 'Quick Format', + insertfile : 'Insert file', + template : 'Insert Template', + anchor : 'Anchor', + yes : 'OK', + no : 'Cancel', + close : 'Close', + editImage : 'Image properties', + deleteImage : 'Delete image', + editFlash : 'Flash properties', + deleteFlash : 'Delete flash', + editMedia : 'Media properties', + deleteMedia : 'Delete media', + editLink : 'Link properties', + deleteLink : 'Unlink', + editAnchor : 'Anchor properties', + deleteAnchor : 'Delete Anchor', + tableprop : 'Table properties', + tablecellprop : 'Cell properties', + tableinsert : 'Insert table', + tabledelete : 'Delete table', + tablecolinsertleft : 'Insert column left', + tablecolinsertright : 'Insert column right', + tablerowinsertabove : 'Insert row above', + tablerowinsertbelow : 'Insert row below', + tablerowmerge : 'Merge down', + tablecolmerge : 'Merge right', + tablerowsplit : 'Split row', + tablecolsplit : 'Split column', + tablecoldelete : 'Delete column', + tablerowdelete : 'Delete row', + noColor : 'Default', + pleaseSelectFile : 'Please select file.', + invalidImg : "Please type valid URL.\nAllowed file extension: jpg,gif,bmp,png", + invalidMedia : "Please type valid URL.\nAllowed file extension: swf,flv,mp3,wav,wma,wmv,mid,avi,mpg,asf,rm,rmvb", + invalidWidth : "The width must be number.", + invalidHeight : "The height must be number.", + invalidBorder : "The border must be number.", + invalidUrl : "Please type valid URL.", + invalidRows : 'Invalid rows.', + invalidCols : 'Invalid columns.', + invalidPadding : 'The padding must be number.', + invalidSpacing : 'The spacing must be number.', + invalidJson : 'Invalid JSON string.', + uploadSuccess : 'Upload success.', + cutError : 'Currently not supported by your browser, use keyboard shortcut(Ctrl+X) instead.', + copyError : 'Currently not supported by your browser, use keyboard shortcut(Ctrl+C) instead.', + pasteError : 'Currently not supported by your browser, use keyboard shortcut(Ctrl+V) instead.', + ajaxLoading : 'Loading ...', + uploadLoading : 'Uploading ...', + uploadError : 'Upload Error', + 'plainpaste.comment' : 'Use keyboard shortcut(Ctrl+V) to paste the text into the window.', + 'wordpaste.comment' : 'Use keyboard shortcut(Ctrl+V) to paste the text into the window.', + 'code.pleaseInput' : 'Please input code.', + 'link.url' : 'URL', + 'link.linkType' : 'Target', + 'link.newWindow' : 'New window', + 'link.selfWindow' : 'Same window', + 'flash.url' : 'URL', + 'flash.width' : 'Width', + 'flash.height' : 'Height', + 'flash.upload' : 'Upload', + 'flash.viewServer' : 'Browse', + 'media.url' : 'URL', + 'media.width' : 'Width', + 'media.height' : 'Height', + 'media.autostart' : 'Auto start', + 'media.upload' : 'Upload', + 'media.viewServer' : 'Browse', + 'image.remoteImage' : 'Insert URL', + 'image.localImage' : 'Upload', + 'image.remoteUrl' : 'URL', + 'image.localUrl' : 'File', + 'image.size' : 'Size', + 'image.width' : 'Width', + 'image.height' : 'Height', + 'image.resetSize' : 'Reset dimensions', + 'image.align' : 'Align', + 'image.defaultAlign' : 'Default', + 'image.leftAlign' : 'Left', + 'image.rightAlign' : 'Right', + 'image.imgTitle' : 'Title', + 'image.upload' : 'Browse', + 'image.viewServer' : 'Browse', + 'multiimage.uploadDesc' : 'Allows users to upload <%=uploadLimit%> images, single image size not exceeding <%=sizeLimit%>', + 'multiimage.startUpload' : 'Start upload', + 'multiimage.clearAll' : 'Clear all', + 'multiimage.insertAll' : 'Insert all', + 'multiimage.queueLimitExceeded' : 'Queue limit exceeded.', + 'multiimage.fileExceedsSizeLimit' : 'File exceeds size limit.', + 'multiimage.zeroByteFile' : 'Zero byte file.', + 'multiimage.invalidFiletype' : 'Invalid file type.', + 'multiimage.unknownError' : 'Unknown upload error.', + 'multiimage.pending' : 'Pending ...', + 'multiimage.uploadError' : 'Upload error', + 'filemanager.emptyFolder' : 'Blank', + 'filemanager.moveup' : 'Parent folder', + 'filemanager.viewType' : 'Display: ', + 'filemanager.viewImage' : 'Thumbnails', + 'filemanager.listImage' : 'List', + 'filemanager.orderType' : 'Sorting: ', + 'filemanager.fileName' : 'By name', + 'filemanager.fileSize' : 'By size', + 'filemanager.fileType' : 'By type', + 'insertfile.url' : 'URL', + 'insertfile.title' : 'Title', + 'insertfile.upload' : 'Upload', + 'insertfile.viewServer' : 'Browse', + 'table.cells' : 'Cells', + 'table.rows' : 'Rows', + 'table.cols' : 'Columns', + 'table.size' : 'Dimensions', + 'table.width' : 'Width', + 'table.height' : 'Height', + 'table.percent' : '%', + 'table.px' : 'px', + 'table.space' : 'Space', + 'table.padding' : 'Padding', + 'table.spacing' : 'Spacing', + 'table.align' : 'Align', + 'table.textAlign' : 'Horizontal', + 'table.verticalAlign' : 'Vertical', + 'table.alignDefault' : 'Default', + 'table.alignLeft' : 'Left', + 'table.alignCenter' : 'Center', + 'table.alignRight' : 'Right', + 'table.alignTop' : 'Top', + 'table.alignMiddle' : 'Middle', + 'table.alignBottom' : 'Bottom', + 'table.alignBaseline' : 'Baseline', + 'table.border' : 'Border', + 'table.borderWidth' : 'Width', + 'table.borderColor' : 'Color', + 'table.backgroundColor' : 'Background', + 'map.address' : 'Address: ', + 'map.search' : 'Search', + 'baidumap.address' : 'Address: ', + 'baidumap.search' : 'Search', + 'baidumap.insertDynamicMap' : 'Dynamic Map', + 'anchor.name' : 'Anchor name', + 'formatblock.formatBlock' : { + h1 : 'Heading 1', + h2 : 'Heading 2', + h3 : 'Heading 3', + h4 : 'Heading 4', + p : 'Normal' + }, + 'fontname.fontName' : { + 'Arial' : 'Arial', + 'Arial Black' : 'Arial Black', + 'Comic Sans MS' : 'Comic Sans MS', + 'Courier New' : 'Courier New', + 'Garamond' : 'Garamond', + 'Georgia' : 'Georgia', + 'Tahoma' : 'Tahoma', + 'Times New Roman' : 'Times New Roman', + 'Trebuchet MS' : 'Trebuchet MS', + 'Verdana' : 'Verdana' + }, + 'lineheight.lineHeight' : [ + {'1' : 'Line height 1'}, + {'1.5' : 'Line height 1.5'}, + {'2' : 'Line height 2'}, + {'2.5' : 'Line height 2.5'}, + {'3' : 'Line height 3'} + ], + 'template.selectTemplate' : 'Template', + 'template.replaceContent' : 'Replace current content', + 'template.fileList' : { + '1.html' : 'Image and Text', + '2.html' : 'Table', + '3.html' : 'List' + } +}, 'en'); + +//自动加载代码美化的js插件 +// KindEditor.loadScript(KindEditor.options.pluginsPath+"code/prettify.js"); +// KindEditor.each(KindEditor.options.items, function(i, name) { +// if (name == 'code') { +// KindEditor.options.items[i] = 'map'; +// } +// }); +KindEditor.options.langType = 'en'; diff --git a/tools/NKeditor/lang/ja-JP.js b/tools/NKeditor/lang/ja-JP.js new file mode 100644 index 00000000..7806d089 --- /dev/null +++ b/tools/NKeditor/lang/ja-JP.js @@ -0,0 +1,234 @@ +/******************************************************************************* +* @author 您的名字 お名前 +*******************************************************************************/ + +KindEditor.lang({ + source : 'HTMLコード', + preview : 'プレビュー', + undo : '戻る(Ctrl+Z)', + redo : '進む(Ctrl+Y)', + cut : 'カット(Ctrl+X)', + copy : 'コピー(Ctrl+C)', + paste : '貼り付け(Ctrl+V)', + plainpaste : 'フォーマットされていないテキストとして貼り付ける', + wordpaste : '「word」ドからペースト', + selectall : 'すべて選択(Ctrl+A)', + justifyleft : '左揃え', + justifycenter : '中央揃え', + justifyright : '右揃え', + justifyfull : '両端揃え', + insertorderedlist : '番号', + insertunorderedlist : '箇条書き', + indent : 'インデントを増やす', + outdent : 'インデントを減らす', + subscript : '下付き', + superscript : '上付き', + formatblock : '段落', + fontname : 'フォント', + fontsize : 'フォントサイズ', + forecolor : 'フォントカラー', + hilitecolor : 'テキストの背景', + bold : '太字(Ctrl+B)', + italic : '斜体(Ctrl+I)', + underline : '下線(Ctrl+U)', + strikethrough : '取り消し線', + removeformat : 'フォーマットを削除', + image : '画像', + multiimage : '一括画像アップロード', + flash : 'Flash', + media : 'ビデオとオーディオ', + table : 'テーブル', + tablecell : 'セル', + hr : '水平線を挿入する', + emoticons : '絵文字を挿入する', + link : 'ハイパーリンク', + unlink : 'ハイパーリンクをキャンセル', + fullscreen : 'フルスクリーン表示', + about : 'について', + print : 'プリント(Ctrl+P)', + filemanager : 'ファイルスペース', + code : 'プログラムコードを挿入', + map : 'Googleマップ', + baidumap : 'Baiduマップ', + lineheight : '行間隔', + clearhtml : 'HTMLコードをクリア', + pagebreak : 'ページ区切りの挿入', + quickformat : 'ワンクリックレイアウト', + insertfile : 'ファイルの挿入', + template : 'テンプレートの挿入', + anchor : 'アンカー', + yes : 'はい', + no : 'いいえ', + close : '閉じる', + editImage : 'イメージプロパティ', + deleteImage : 'イメージを削除', + editFlash : 'Flashプロパティ', + deleteFlash : 'Flashを削除', + editMedia : 'ビデオとオーディオのプロパティ', + deleteMedia : 'ビデオとオーディオを削除', + editLink : 'ハイパーリンク属性', + deleteLink : 'ハイパーリンクを削除', + editAnchor : 'アンカー属性', + deleteAnchor : 'アンカーを削除', + tableprop : 'テーブル属性', + tablecellprop : 'セル属性', + tableinsert : 'テーブルを挿入', + tabledelete : 'テーブルを削除', + tablecolinsertleft : '左に列を挿入する', + tablecolinsertright : '右に列を挿入する', + tablerowinsertabove : '上に行を挿入する', + tablerowinsertbelow : '下に行を挿入する', + tablerowmerge : '下にセルをマージする', + tablecolmerge : '右にセルをマージする', + tablerowsplit : '行を分割', + tablecolsplit : '列を分割', + tablecoldelete : '列を削除', + tablerowdelete : '行を削除', + noColor : '色なし', + pleaseSelectFile : 'ファイルを選択してください。', + invalidImg : "有効なURLアドレスを入力してください。\ n jpg、gif、bmp、png形式のみが許可されています。", + invalidMedia : "有効なURLアドレスを入力してください。swf,flv,mp3,wav,wma,wmv,mid,avi,mpg,asf,rm,rmvb形式のみが許可されています。", + invalidWidth : "幅は数字でなければなりません。", + invalidHeight : "高さは数字でなければなりません。", + invalidBorder : "ボーダーは数字でなければなりません。", + invalidUrl : "有効なURLアドレスを入力してください。", + invalidRows : '行数は必須項目で、0以上の数字を入力してください。', + invalidCols : '列数は必須項目で、0以上の数字を入力してください。', + invalidPadding : 'マージンは数字でなければなりません。', + invalidSpacing : 'スペースは数字でなければなりません。', + invalidJson : 'サーバーエラー。', + uploadSuccess : 'アップロード成功。', + cutError : 'ブラウザのセキュリティ設定によってカット操作を使用できないので、ショートカットキー(Ctrl + X)を使用してください。', + copyError : 'ブラウザのセキュリティ設定によってコピー操作をできないので、ショートカットキー(Ctrl + C)を使用してください。', + pasteError : 'ブラウザのセキュリティ設定によって貼り付け操作をできないので、ショートカットキー(Ctrl + V)を使用してください。', + ajaxLoading : '読み込み中、お待ちください...', + uploadLoading : 'アップロード、しばらくお待ちください...', + uploadError : 'アップロードエラー', + 'plainpaste.comment' : 'ショートカットキー(Ctrl + V)でコンテンツを下のボックスに貼り付けてください。', + 'wordpaste.comment' : 'ショートカットキー(Ctrl + V)でコンテンツを下のボックスに貼り付けてください。', + 'code.pleaseInput' : 'プログラムコードを入力してください。 ', + 'link.url' : 'URL', + 'link.linkType' : 'タイプを開く', + 'link.newWindow' : '新しいウィンドウ', + 'link.selfWindow' : '現在のウィンドウ', + 'flash.url' : 'URL', + 'flash.width' : '幅', + 'flash.height' : '高さ', + 'flash.upload' : 'アップロード', + 'flash.viewServer' : 'ファイルスペース', + 'media.url' : 'URL', + 'media.width' : '幅', + 'media.height' : '高さ', + 'media.autostart' : '自動再生', + 'media.upload' : 'アップロード', + 'media.viewServer' : 'ファイルスペース', + 'image.remoteImage' : 'ネットワークイメージ', + 'image.localImage' : 'ローカルアップロード', + 'image.remoteUrl' : 'イメージアドレス ', + 'image.localUrl' : 'アップロードファイル', + 'image.size' : 'イメージサイズ', + 'image.width' : '幅', + 'image.height' : '高さ', + 'image.resetSize' : 'リセットサイズ', + 'image.align' : '配置', + 'image.defaultAlign' : 'デフォルト', + 'image.leftAlign' : '左揃え', + 'image.rightAlign' : '右揃え', + 'image.imgTitle' : '画像の説明', + 'image.upload' : 'ブラウズ...', + 'image.viewServer' : 'イメージスペース', + 'multiimage.uploadDesc' : 'ユーザーが<%= uploadLimit%>画像を同時にアップロードできますが、画像の容量は<%= sizeLimit%>を超えることができません', + 'multiimage.startUpload' : 'アップロード', + 'multiimage.clearAll' : 'すべてクリア', + 'multiimage.insertAll' : 'すべて挿入', + 'multiimage.queueLimitExceeded' : 'ファイルの数が上限を超えています。', + 'multiimage.fileExceedsSizeLimit' : 'ファイルサイズが制限を超えています。', + 'multiimage.zeroByteFile' : '空のファイルをアップロードできません。 ', + 'multiimage.invalidFiletype' : 'ファイル形式は正しくありません。', + 'multiimage.unknownError' : 'エラー、アップロードできません。', + 'multiimage.pending' : 'アップロード待ち', + 'multiimage.uploadError' : 'アップロード失敗', + 'filemanager.emptyFolder' : '空のフォルダ', + 'filemanager.moveup' : '前のフォルダに移動', + 'filemanager.viewType' : '表示モード:', + 'filemanager.viewImage' : 'サムネイル', + 'filemanager.listImage' : '詳細', + 'filemanager.orderType' : '並べ替え:', + 'filemanager.fileName' : 'ネーム', + 'filemanager.fileSize' : 'サイズ', + 'filemanager.fileType' : 'タイプ', + 'insertfile.url' : 'URL', + 'insertfile.title' : 'ファイルの説明', + 'insertfile.upload' : 'アップロード', + 'insertfile.viewServer' : 'ファイルスペース', + 'table.cells' : 'セル番号', + 'table.rows' : '行数', + 'table.cols' : '列数', + 'table.size' : 'サイズ', + 'table.width' : '幅', + 'table.height' : '高さ', + 'table.percent' : '%', + 'table.px' : 'px', + 'table.space' : 'テーブルスペース', + 'table.padding' : 'パッディング', + 'table.spacing' : 'スペース', + 'table.align' : '配置', + 'table.textAlign' : '水平配置', + 'table.verticalAlign' : '垂直配置', + 'table.alignDefault' : 'デフォルト', + 'table.alignLeft' : '左揃え', + 'table.alignCenter' : '中央揃え', + 'table.alignRight' : '右揃え', + 'table.alignTop' : 'トップ', + 'table.alignMiddle' : 'ミドル', + 'table.alignBottom' : 'ボトム', + 'table.alignBaseline' : 'ベースライン', + 'table.border' : 'ボーダー', + 'table.borderWidth' : 'ボーダー', + 'table.borderColor' : 'カラー', + 'table.backgroundColor' : '背景色', + 'map.address' : 'アドレス: ', + 'map.search' : '検索', + 'baidumap.address' : 'アドレス: ', + 'baidumap.search' : '検索', + 'baidumap.insertDynamicMap' : 'ダイナミックマップの挿入', + 'anchor.name' : 'アンカー名', + + 'formatblock.formatBlock' : { + h1 : '見出し1', + h2 : '見出し2', + h3 : '見出し3', + h4 : '見出し4', + p : '正 文' + }, + 'fontname.fontName' : { + 'SimSun' : '明朝体', + 'NSimSun' : '新宋体', + 'FangSong_GB2312' : '仿宋_GB2312', + 'KaiTi_GB2312' : '楷書体_GB2312', + 'SimHei' : 'ゴチック体', + 'Microsoft YaHei' : 'Msyh', + 'Arial' : 'Arial', + 'Arial Black' : 'Arial Black', + 'Times New Roman' : 'Times New Roman', + 'Courier New' : 'Courier New', + 'Tahoma' : 'Tahoma', + 'Verdana' : 'Verdana' + }, + 'lineheight.lineHeight' : [ + {'1' : '行間1倍'}, + {'1.5' : '行間1.5倍'}, + {'2' : '行間2倍'}, + {'2.5' : '行間2.5倍'}, + {'3' : '行間3倍'} + ], + 'template.selectTemplate' : 'オプションテンプレート', + 'template.replaceContent' : '現在のコンテンツを置き換える', + 'template.fileList' : { + '1.html' : 'イメージとテキスト', + '2.html' : '表', + '3.html' : '段落番号' + } +}, 'ja-JP'); + +KindEditor.options.langType = 'ja-JP'; \ No newline at end of file diff --git a/tools/NKeditor/lang/ko.js b/tools/NKeditor/lang/ko.js new file mode 100644 index 00000000..bf5eb225 --- /dev/null +++ b/tools/NKeditor/lang/ko.js @@ -0,0 +1,246 @@ +/******************************************************************************* +* KindEditor - WYSIWYG HTML Editor for Internet +* Copyright (C) 2006-2011 kindsoft.net +* +* @author Composite +* @site http://www.kindsoft.net/ +* @licence http://www.kindsoft.net/license.php +*******************************************************************************/ + +KindEditor.lang({ + source : '소스', + preview : '미리보기', + undo : '작업취소(Ctrl+Z)', + redo : '작업재개(Ctrl+Y)', + cut : '잘라내기(Ctrl+X)', + copy : '복사(Ctrl+C)', + paste : '붙여넣기(Ctrl+V)', + plainpaste : '일반 텍스트로 붙여넣기', + wordpaste : '워드 문서로 붙여넣기', + selectall : '전체 선택', + justifyleft : '왼쪽 정렬', + justifycenter : '가운데 정렬', + justifyright : '오른쪽 정렬', + justifyfull : '양쪽 정렬', + insertorderedlist : '순서 목록', + insertunorderedlist : '비순서 목록', + indent : '들여쓰기', + outdent : '내어쓰기', + subscript : '아랫첨자', + superscript : '윗첨자', + formatblock : '문단 형식', + fontname : '글꼴', + fontsize : '글자 크기', + forecolor : '글자색', + hilitecolor : '강조색', + bold : '굵게(Ctrl+B)', + italic : '이텔릭(Ctrl+I)', + underline : '빝줄(Ctrl+U)', + strikethrough : '취소선', + removeformat : '형식 제거', + image : '이미지 추가', + multiimage : '여러 이미지 추가', + flash : '플래시 추가', + media : '미디어 추가', + table : '표', + tablecell : '열', + hr : '구분선 추가', + emoticons : '이모티콘 추가', + link : '링크', + unlink : '링크 제거', + fullscreen : '전체 화면 모드', + about : '이 에디터는...', + print : '인쇄', + filemanager : '파일 관리자', + code : '코드 추가', + map : '구글 맵 추가', + baidumap : '바이두 맵 추가', + lineheight : '행 간격', + clearhtml : 'HTML 코드 정리', + pagebreak : '페이지 구분 추가', + quickformat : '빠른 형식', + insertfile : '파일 추가', + template : '템플릿 추가', + anchor : '책갈피', + yes : '확인', + no : '취소', + close : '닫기', + editImage : '이미지 속성', + deleteImage : '이미지 삭제', + editFlash : '플래시 속성', + deleteFlash : '플래시 삭제', + editMedia : '미디어 속성', + deleteMedia : '미디어 삭제', + editLink : '링크 속성', + deleteLink : '링크 삭제', + editAnchor : 'Anchor properties', + deleteAnchor : 'Delete Anchor', + tableprop : '표 속성', + tablecellprop : '열 속성', + tableinsert : '표 추가', + tabledelete : '표 삭제', + tablecolinsertleft : '왼쪽으로 열 추가', + tablecolinsertright : '오른쪽으로 열 추가', + tablerowinsertabove : '위쪽으로 열 추가', + tablerowinsertbelow : '아래쪽으로 열 추가', + tablerowmerge : '아래로 병합', + tablecolmerge : '오른쪽으로 병합', + tablerowsplit : '행 나누기', + tablecolsplit : '열 나누기', + tablecoldelete : '열 삭제', + tablerowdelete : '행 삭제', + noColor : '기본색', + pleaseSelectFile : '파일 선택', + invalidImg : "올바른 주소를 입력하세요.\njpg,gif,bmp,png 형식이 가능합니다.", + invalidMedia : "올바른 주소를 입력하세요.\nswf,flv,mp3,wav,wma,wmv,mid,avi,mpg,asf,rm,rmvb 형식이 가능합니다.", + invalidWidth : "넓이 값은 숫자여야 합니다.", + invalidHeight : "높이 값은 숫자여야 합니다.", + invalidBorder : "굵기 값은 숫자여야 합니다.", + invalidUrl : "올바른 주소를 입력하세요.", + invalidRows : '올바른 행이 아닙니다.', + invalidCols : '올바른 열이 아닙니다.', + invalidPadding : '안쪽 여백 값은 숫자여야 합니다.', + invalidSpacing : '간격 길이 값은 숫자여야 합니다.', + invalidJson : '올바른 JSON 형식이 아닙니다.', + uploadSuccess : '업로드가 완료되었습니다.', + cutError : '브라우저가 잘라내기 기능을 지원하지 않습니다, 단축키로 대신 사용하세요. (Ctrl+X)', + copyError : '브라우저가 복사 기능을 지원하지 않습니다, 단축키로 대신 사용하세요. (Ctrl+X)', + pasteError : '브라우저가 붙여넣기 기능을 지원하지 않습니다, 단축키로 대신 사용하세요. (Ctrl+X)', + ajaxLoading : '불러오는 중 ...', + uploadLoading : '업로드 중 ...', + uploadError : '업로드 오류', + 'plainpaste.comment' : '단축키(Ctrl+V)를 통하여 여기에 텍스트를 붙여넣으세요.', + 'wordpaste.comment' : '단축키(Ctrl+V)를 통하여 여기에 워드 텍스트를 붙여넣으세요.', + 'code.pleaseInput' : 'Please input code.', + 'link.url' : '주소', + 'link.linkType' : '창', + 'link.newWindow' : '새 창', + 'link.selfWindow' : '현재 창', + 'flash.url' : '주소', + 'flash.width' : '넓이', + 'flash.height' : '높이', + 'flash.upload' : '업로드', + 'flash.viewServer' : '찾아보기', + 'media.url' : '주소', + 'media.width' : '넓이', + 'media.height' : '높이', + 'media.autostart' : '자동 시작', + 'media.upload' : '업로드', + 'media.viewServer' : '찾아보기', + 'image.remoteImage' : '외부 이미지', + 'image.localImage' : '내부 이미지', + 'image.remoteUrl' : '주소', + 'image.localUrl' : '파일', + 'image.size' : '크기', + 'image.width' : '넓이', + 'image.height' : '높이', + 'image.resetSize' : '기본 크기로', + 'image.align' : '정렬', + 'image.defaultAlign' : '기본', + 'image.leftAlign' : '왼쪽', + 'image.rightAlign' : '오른쪽', + 'image.imgTitle' : '제목', + 'image.upload' : '찾아보기', + 'image.viewServer' : '찾아보기', + 'multiimage.uploadDesc' : '최대 이미지 개수: <%=uploadLimit%>개, 개당 이미지 크기: <%=sizeLimit%>', + 'multiimage.startUpload' : '업로드 시작', + 'multiimage.clearAll' : '모두 삭제', + 'multiimage.insertAll' : '모두 삽입', + 'multiimage.queueLimitExceeded' : '업로드 개수가 초과되었습니다.', + 'multiimage.fileExceedsSizeLimit' : '업로드 크기가 초과되었습니다.', + 'multiimage.zeroByteFile' : '파일 크기가 없습니다.', + 'multiimage.invalidFiletype' : '올바른 이미지가 아닙니다.', + 'multiimage.unknownError' : '알 수 없는 업로드 오류가 발생하였습니다.', + 'multiimage.pending' : '처리 중 ...', + 'multiimage.uploadError' : '업로드 오류', + 'filemanager.emptyFolder' : '빈 폴더', + 'filemanager.moveup' : '위로', + 'filemanager.viewType' : '보기 방식: ', + 'filemanager.viewImage' : '미리 보기', + 'filemanager.listImage' : '목록', + 'filemanager.orderType' : '정렬 방식: ', + 'filemanager.fileName' : '이름별', + 'filemanager.fileSize' : '크기별', + 'filemanager.fileType' : '종류별', + 'insertfile.url' : '주소', + 'insertfile.title' : '제목', + 'insertfile.upload' : '업로드', + 'insertfile.viewServer' : '찾아보기', + 'table.cells' : '열', + 'table.rows' : '행', + 'table.cols' : '열', + 'table.size' : '표 크기', + 'table.width' : '넓이', + 'table.height' : '높이', + 'table.percent' : '%', + 'table.px' : 'px', + 'table.space' : '간격', + 'table.padding' : '안쪽여백', + 'table.spacing' : '간격', + 'table.align' : '정렬', + 'table.textAlign' : '수직', + 'table.verticalAlign' : '수평', + 'table.alignDefault' : '기본', + 'table.alignLeft' : '왼쪽', + 'table.alignCenter' : '가운데', + 'table.alignRight' : '오른쪽', + 'table.alignTop' : '위쪽', + 'table.alignMiddle' : '중간', + 'table.alignBottom' : '아래쪽', + 'table.alignBaseline' : '글자기준', + 'table.border' : '테두리', + 'table.borderWidth' : '크기', + 'table.borderColor' : '색상', + 'table.backgroundColor' : '배경', + 'map.address' : '주소: ', + 'map.search' : '검색', + 'baidumap.address' : '주소: ', + 'baidumap.search' : '검색', + 'baidumap.insertDynamicMap' : '동적 지도', + 'anchor.name' : '책갈피명', + 'formatblock.formatBlock' : { + h1 : '제목 1', + h2 : '제목 2', + h3 : '제목 3', + h4 : '제목 4', + p : '본문' + }, + 'fontname.fontName' : { + 'Gulim' : '굴림', + 'Dotum' : '돋움', + 'Batang' : '바탕', + 'Gungsuh' : '궁서', + 'Malgun Gothic' : '맑은 고딕', + 'Arial' : 'Arial', + 'Arial Black' : 'Arial Black', + 'Comic Sans MS' : 'Comic Sans MS', + 'Courier New' : 'Courier New', + 'Garamond' : 'Garamond', + 'Georgia' : 'Georgia', + 'Tahoma' : 'Tahoma', + 'Times New Roman' : 'Times New Roman', + 'Trebuchet MS' : 'Trebuchet MS', + 'Verdana' : 'Verdana' + }, + 'lineheight.lineHeight' : [ + {'1' : '행간 1'}, + {'1.5' : '행간 1.5'}, + {'2' : '행간 2'}, + {'2.5' : '행간 2.5'}, + {'3' : '행간 3'} + ], + 'template.selectTemplate' : '템플릿', + 'template.replaceContent' : '내용 바꾸기', + 'template.fileList' : { + '1.html' : '이미지와 텍스트', + '2.html' : '표', + '3.html' : '목록' + } +}, 'ko'); + +KindEditor.each(KindEditor.options.items, function(i, name) { + if (name == 'baidumap') { + KindEditor.options.items[i] = 'map'; + } +}); +KindEditor.options.langType = 'ko'; diff --git a/tools/NKeditor/lang/ru.js b/tools/NKeditor/lang/ru.js new file mode 100644 index 00000000..dda10bf3 --- /dev/null +++ b/tools/NKeditor/lang/ru.js @@ -0,0 +1,242 @@ +/******************************************************************************* +* KindEditor - WYSIWYG HTML Editor for Internet +* Copyright (C) 2006-2011 kindsoft.net +* +* @author Roddy +* @site http://www.kindsoft.net/ +* @licence http://www.kindsoft.net/license.php +* Translated to Russian by Valery Votintsev (http://codersclub.org/) +*******************************************************************************/ + +KindEditor.lang({ + source : 'Source', + preview : 'Preview', + undo : 'Отмена(Ctrl+Z)', + redo : 'Повтор(Ctrl+Y)', + cut : 'Вырезать(Ctrl+X)', + copy : 'Копировать(Ctrl+C)', + paste : 'Вставить(Ctrl+V)', + plainpaste : 'Вставить как простой текст', + wordpaste : 'Вставить из Word', + selectall : 'Выбрать все', + justifyleft : 'Выравнивание влево', + justifycenter : 'Выравнивание по центру', + justifyright : 'Выравнивание вправо', + justifyfull : 'Выравнивание по обеим сторонам', + insertorderedlist : 'Нумерованый список', + insertunorderedlist : 'Ненумерованый список', + indent : 'Добавить отступ', + outdent : 'Убрать отступ', + subscript : 'Надстрочный', + superscript : 'Подстрочный', + formatblock : 'Формат параграфа', + fontname : 'Шрифт', + fontsize : 'Размер', + forecolor : 'Цвет текста', + hilitecolor : 'Цвет фона', + bold : 'Жирный(Ctrl+B)', + italic : 'Наклонный(Ctrl+I)', + underline : 'Подчёркнутый(Ctrl+U)', + strikethrough : 'Перечёркнутый', + removeformat : 'Удалить формат', + image : 'Изображение', + multiimage : 'Мульти-загрузка', + flash : 'Flash', + media : 'Встроенные данные', + table : 'Таблица', + tablecell : 'Ячейка', + hr : 'Горизонтальный разделитель', + emoticons : 'Смайл', + link : 'Ссылка', + unlink : 'Убрать ссылку', + fullscreen : 'На весь экран', + about : 'О программе', + print : 'Печать', + filemanager : 'Файлы', + code : 'Код', + map : 'Карта Google', + baidumap : 'Карта Baidu', + lineheight : 'Межстрочный интервал', + clearhtml : 'Очистить HTML код', + pagebreak : 'Разрыв страницы', + quickformat : 'Быстрый формат', + insertfile : 'Вставить файл', + template : 'Вставить шаблон', + anchor : 'Якорь', + yes : 'OK', + no : 'Отмена', + close : 'Закрыть', + editImage : 'Свойства изображения', + deleteImage : 'Удалить изображение', + editFlash : 'Свойства Flash', + deleteFlash : 'Удалить Flash', + editMedia : 'Свойства Media', + deleteMedia : 'Удалить Media', + editLink : 'Свойства ссылки', + deleteLink : 'Удалить ссылку', + editAnchor : 'Anchor properties', + deleteAnchor : 'Delete Anchor', + tableprop : 'Свойства таблицы', + tablecellprop : 'Свойства ячейки', + tableinsert : 'Вставить таблицу', + tabledelete : 'Удалить таблицу', + tablecolinsertleft : 'Добавить столбец слева', + tablecolinsertright : 'Добавить столбец справа', + tablerowinsertabove : 'Добавить строку выше', + tablerowinsertbelow : 'Добавить строку ниже', + tablerowmerge : 'Объединить вниз', + tablecolmerge : 'Объединить вправо', + tablerowsplit : 'Разделить строку', + tablecolsplit : 'Разделить столбец', + tablecoldelete : 'Удалить столбец', + tablerowdelete : 'Удалить строку', + noColor : 'По умолчанию', + pleaseSelectFile : 'Выберите файл.', + invalidImg : "Укажите корректный URL изображения.\nРазрешённые форматы: jpg,gif,bmp,png", + invalidMedia : "Укажите корректный тип медиа-объекта.\nРазрешённые типы: swf,flv,mp3,wav,wma,wmv,mid,avi,mpg,asf,rm,rmvb", + invalidWidth : "Ширина должна быть числом.", + invalidHeight : "Высота должна быть числом.", + invalidBorder : "Ширина рамки должна быть числом.", + invalidUrl : "Укажите корректный URL.", + invalidRows : 'Неверные строки.', + invalidCols : 'Неверные столбцы.', + invalidPadding : 'padding должен быть числом.', + invalidSpacing : 'spacing должен быть числом.', + invalidJson : 'Неверная JSON строка.', + uploadSuccess : 'Загрузка завершена.', + cutError : 'Данная опция не поддерживается вашим браузером, воспользуйтесь комбинацией клавиш (Ctrl+X).', + copyError : 'Данная опция не поддерживается вашим браузером, воспользуйтесь комбинацией клавиш (Ctrl+C).', + pasteError : 'Данная опция не поддерживается вашим браузером, воспользуйтесь комбинацией клавиш (Ctrl+V).', + ajaxLoading : 'Загрузка ...', + uploadLoading : 'Загрузка ...', + uploadError : 'Сбой загрузки', + 'plainpaste.comment' : 'Для вставки скопированного текста воспользуйтесь комбинацией клавиш (Ctrl+V).', + 'wordpaste.comment' : 'Для вставки скопированного текста воспользуйтесь комбинацией клавиш (Ctrl+V).', + 'code.pleaseInput' : 'Введите код.', + 'link.url' : 'URL', + 'link.linkType' : 'Открывать ссылку', + 'link.newWindow' : 'в новом окне', + 'link.selfWindow' : 'в том же окне', + 'flash.url' : 'URL', + 'flash.width' : 'Ширина', + 'flash.height' : 'Высота', + 'flash.upload' : 'Загрузить', + 'flash.viewServer' : 'Выбрать', + 'media.url' : 'URL', + 'media.width' : 'Ширина', + 'media.height' : 'Высота', + 'media.autostart' : 'Автостарт', + 'media.upload' : 'Загрузить', + 'media.viewServer' : 'Выбрать', + 'image.remoteImage' : 'Вставить URL изображения', + 'image.localImage' : 'Загрузить', + 'image.remoteUrl' : 'URL', + 'image.localUrl' : 'Файл', + 'image.size' : 'Размер', + 'image.width' : 'Ширина', + 'image.height' : 'Высота', + 'image.resetSize' : 'Сбросить размеры', + 'image.align' : 'Выравнивание', + 'image.defaultAlign' : 'По умолчанию', + 'image.leftAlign' : 'Влево', + 'image.rightAlign' : 'Вправо', + 'image.imgTitle' : 'Название', + 'image.upload' : 'Загрузить', + 'image.viewServer' : 'Выбрать', + 'multiimage.uploadDesc' : 'Максимальное кол-во изображений: <%=uploadLimit%>, Максимальный размер одного изображения: <%=sizeLimit%>', + 'multiimage.startUpload' : 'Начать загрузку', + 'multiimage.clearAll' : 'Очистить все', + 'multiimage.insertAll' : 'Вставить все', + 'multiimage.queueLimitExceeded' : 'Превышен лимит очереди.', + 'multiimage.fileExceedsSizeLimit' : 'Превышен максимальный размер файла.', + 'multiimage.zeroByteFile' : 'Файл нулевой длины.', + 'multiimage.invalidFiletype' : 'Недопустимый тип файла.', + 'multiimage.unknownError' : 'Непредвиденная ошибка загрузки.', + 'multiimage.pending' : 'Ожидает ...', + 'multiimage.uploadError' : 'Ошибка загрузки', + 'filemanager.emptyFolder' : 'Папка пуста', + 'filemanager.moveup' : 'Наверх', + 'filemanager.viewType' : 'Тип показа: ', + 'filemanager.viewImage' : 'Превьюшки', + 'filemanager.listImage' : 'Список', + 'filemanager.orderType' : 'Сортировка: ', + 'filemanager.fileName' : 'По имени', + 'filemanager.fileSize' : 'По размеру', + 'filemanager.fileType' : 'По типу', + 'insertfile.url' : 'URL', + 'insertfile.title' : 'Название', + 'insertfile.upload' : 'Загрузить', + 'insertfile.viewServer' : 'Выбрать', + 'table.cells' : 'Ячейки', + 'table.rows' : 'Строки', + 'table.cols' : 'Столбцы', + 'table.size' : 'Размеры', + 'table.width' : 'Ширина', + 'table.height' : 'Высота', + 'table.percent' : '%', + 'table.px' : 'px', + 'table.space' : 'Space', + 'table.padding' : 'Padding', + 'table.spacing' : 'Spacing', + 'table.align' : 'Выравнивание', + 'table.textAlign' : 'По горизонтали', + 'table.verticalAlign' : 'По вертикали', + 'table.alignDefault' : 'По умолчанию', + 'table.alignLeft' : 'Влево', + 'table.alignCenter' : 'По центру', + 'table.alignRight' : 'Вправо', + 'table.alignTop' : 'Вверх', + 'table.alignMiddle' : 'Посередине', + 'table.alignBottom' : 'Вниз', + 'table.alignBaseline' : 'По базовой линии', + 'table.border' : 'Рамка', + 'table.borderWidth' : 'Ширина', + 'table.borderColor' : 'Цвет', + 'table.backgroundColor' : 'Цвет фона', + 'map.address' : 'Адрес: ', + 'map.search' : 'Поиск', + 'baidumap.address' : 'Адрес: ', + 'baidumap.search' : 'Поиск', + 'baidumap.insertDynamicMap' : 'Динамическая карта', + 'anchor.name' : 'Имя якоря', + 'formatblock.formatBlock' : { + h1 : 'Заголовок 1', + h2 : 'Заголовок 2', + h3 : 'Заголовок 3', + h4 : 'Заголовок 4', + p : 'Обычный текст' + }, + 'fontname.fontName' : { + 'Arial' : 'Arial', + 'Arial Black' : 'Arial Black', + 'Comic Sans MS' : 'Comic Sans MS', + 'Courier New' : 'Courier New', + 'Garamond' : 'Garamond', + 'Georgia' : 'Georgia', + 'Tahoma' : 'Tahoma', + 'Times New Roman' : 'Times New Roman', + 'Trebuchet MS' : 'Trebuchet MS', + 'Verdana' : 'Verdana' + }, + 'lineheight.lineHeight' : [ + {'1' : '1'}, + {'1.5' : '1.5'}, + {'2' : '2'}, + {'2.5' : '2.5'}, + {'3' : '3'} + ], + 'template.selectTemplate' : 'Шаблон', + 'template.replaceContent' : 'Заменить текущий шаблон', + 'template.fileList' : { + '1.html' : 'Текст и изображения', + '2.html' : 'Таблица', + '3.html' : 'Список' + } +}, 'en'); + +KindEditor.each(KindEditor.options.items, function(i, name) { + if (name == 'baidumap') { + KindEditor.options.items[i] = 'map'; + } +}); +KindEditor.options.langType = 'ru'; diff --git a/tools/NKeditor/lang/zh-CN.js b/tools/NKeditor/lang/zh-CN.js new file mode 100644 index 00000000..405e2f44 --- /dev/null +++ b/tools/NKeditor/lang/zh-CN.js @@ -0,0 +1,267 @@ +/******************************************************************************* +* KindEditor - WYSIWYG HTML Editor for Internet +* Copyright (C) 2006-2011 kindsoft.net +* +* @author Roddy +* @site http://www.kindsoft.net/ +* @licence http://www.kindsoft.net/license.php +*******************************************************************************/ + +KindEditor.lang({ + source : 'HTML代码', + preview : '预览', + undo : '后退(Ctrl+Z)', + redo : '前进(Ctrl+Y)', + cut : '剪切(Ctrl+X)', + copy : '复制(Ctrl+C)', + paste : '粘贴(Ctrl+V)', + plainpaste : '粘贴为无格式文本', + wordpaste : '从Word粘贴', + selectall : '全选(Ctrl+A)', + justifyleft : '左对齐', + justifycenter : '居中', + justifyright : '右对齐', + justifyfull : '两端对齐', + insertorderedlist : '编号', + insertunorderedlist : '项目符号', + indent : '增加缩进', + outdent : '减少缩进', + subscript : '下标', + superscript : '上标', + formatblock : '段落', + fontname : '字体', + fontsize : '文字大小', + forecolor : '文字颜色', + hilitecolor : '文字背景', + bold : '粗体(Ctrl+B)', + italic : '斜体(Ctrl+I)', + underline : '下划线(Ctrl+U)', + strikethrough : '删除线', + removeformat : '删除格式', + image : '图片', + multiimage : '批量图片上传', + graft : '涂鸦', + flash : 'Flash', + media : '视音频', + table : '表格', + tablecell : '单元格', + hr : '插入横线', + emoticons : '插入表情', + link : '超级链接', + unlink : '取消超级链接', + fullscreen : '全屏显示', + about : '关于', + print : '打印(Ctrl+P)', + filemanager : '文件空间', + code : '插入程序代码', + quote : '插入引用', + map : 'Google地图', + baidumap : '百度地图', + lineheight : '行距', + clearhtml : '清理HTML代码', + pagebreak : '插入分页符', + quickformat : '一键排版', + insertfile : '插入文件', + template : '插入模板', + anchor : '锚点', + yes : '确定', + no : '取消', + close : '关闭', + editImage : '图片属性', + deleteImage : '删除图片', + editFlash : 'Flash属性', + deleteFlash : '删除Flash', + editMedia : '视音频属性', + deleteMedia : '删除视音频', + editLink : '超级链接属性', + deleteLink : '取消超级链接', + editAnchor : '锚点属性', + deleteAnchor : '删除锚点', + tableprop : '表格属性', + tablecellprop : '单元格属性', + tableinsert : '插入表格', + tabledelete : '删除表格', + tablecolinsertleft : '左侧插入列', + tablecolinsertright : '右侧插入列', + tablerowinsertabove : '上方插入行', + tablerowinsertbelow : '下方插入行', + tablerowmerge : '向下合并单元格', + tablecolmerge : '向右合并单元格', + tablerowsplit : '拆分行', + tablecolsplit : '拆分列', + tablecoldelete : '删除列', + tablerowdelete : '删除行', + noColor : '无颜色', + pleaseSelectFile : '请选择文件。', + invalidImg : "请输入有效的URL地址。\n只允许jpg,gif,bmp,png格式。", + invalidMedia : "请输入有效的URL地址。\n只允许swf,flv,mp3,wav,wma,wmv,mid,avi,mpg,asf,rm,rmvb格式。", + invalidWidth : "宽度必须为数字。", + invalidHeight : "高度必须为数字。", + invalidBorder : "边框必须为数字。", + invalidUrl : "请输入有效的URL地址。", + invalidRows : '行数为必选项,只允许输入大于0的数字。', + invalidCols : '列数为必选项,只允许输入大于0的数字。', + invalidPadding : '边距必须为数字。', + invalidSpacing : '间距必须为数字。', + invalidJson : '服务器发生故障。', + uploadSuccess : '上传成功。', + cutError : '您的浏览器安全设置不允许使用剪切操作,请使用快捷键(Ctrl+X)来完成。', + copyError : '您的浏览器安全设置不允许使用复制操作,请使用快捷键(Ctrl+C)来完成。', + pasteError : '您的浏览器安全设置不允许使用粘贴操作,请使用快捷键(Ctrl+V)来完成。', + ajaxLoading : '加载中,请稍候 ...', + uploadLoading : '上传中,请稍候 ...', + uploadError : '上传错误', + + 'plainpaste.comment' : '请使用快捷键(Ctrl+V)把内容粘贴到下面的方框里。', + 'wordpaste.comment' : '请使用快捷键(Ctrl+V)把内容粘贴到下面的方框里。', + 'code.pleaseInput' : '请输入程序代码。', + 'link.url' : 'URL', + 'link.linkType' : '打开类型', + 'link.newWindow' : '新窗口', + 'link.selfWindow' : '当前窗口', + 'flash.url' : 'URL', + 'flash.width' : '宽度', + 'flash.height' : '高度', + 'flash.upload' : '上传', + 'flash.viewServer' : '文件空间', + 'media.url' : 'URL', + 'media.width' : '宽度', + 'media.height' : '高度', + 'media.autostart' : '自动播放', + 'media.upload' : '上传', + 'media.viewServer' : '文件空间', + 'image.remoteImage' : '网络图片', + 'image.localImage' : '本地上传', + 'image.remoteUrl' : '图片地址', + 'image.localUrl' : '上传文件', + 'image.size' : '图片大小', + 'image.width' : '宽', + 'image.height' : '高', + 'image.resetSize' : '重置大小', + 'image.align' : '对齐方式', + 'image.defaultAlign' : '默认方式', + 'image.leftAlign' : '左对齐', + 'image.rightAlign' : '右对齐', + 'image.imgTitle' : '图片说明', + 'image.upload' : '浏览...', + 'image.viewServer' : '图片空间', + + 'multiimage.title' : '多图上传', + 'multiimage.uploadDesc' : '共选择了 <%=numSelect%> 张图片,共 <%=totalSize%>, 还可以添加 <%=numLeft%> 张图片.', + 'multiimage.startUpload' : '开始上传', + 'multiimage.noListUrl' : '无法获取图片,请先配置 fileManagerJson.', + 'multiimage.noSearchUrl' : '无法进行图片搜索,请先配置 imageSearchJson.', + 'multiimage.noDataText' : '(⊙o⊙)亲,没有多数据了。', + 'multiimage.closeText' : '关闭对话框', + 'multiimage.confirmBtnText' : '确定', + 'multiimage.cancelBtnText' : '取消', + 'multiimage.loadMoreData' : '往下拉动滚动条可以加载更多数据.', + 'multiimage.depJQueryError' : '文件管理插件依赖 jQuery, 请先引入 jQuery.', + 'multiimage.localUpload' : '本地上传', + 'multiimage.fileServer' : '文件服务器', + 'multiimage.imgSearch' : '图片搜索', + 'multiimage.selectFile' : '点击选择图片', + 'multiimage.continueAdd' : '继续添加', + 'multiimage.searchBtn' : '搜索一下', + 'multiimage.searchPlaceholder' : '请输入搜索关键词', + 'multiimage.searchClear' : '清空搜索', + 'multiimage.noFileAdded' : '请至少添加一个文件!', + 'multiimage.uploading' : '正在上传', + 'multiimage.fileNotUpload' : '您还有文件没有上传!', + 'multiimage.uploadLimit' : '您本次最多上传 <%=uploadLimit%> 个文件.', + 'multiimage.sizeLimit' : '文件大小不能超过 <%=sizeLimit%> KB.', + 'multiimage.invalidExt' : '非法的文件后缀 <%=invalidExt%>.', + 'multiimage.remove' : '删除', + 'multiimage.rotateRight' : '向右旋转', + 'multiimage.rotateLeft' : '向左旋转', + 'multiimage.uploadFail' : '发生异常,上传失败!', + 'multiimage.noFileSelected' : '请至少选择一个文件或一张图片.', + + 'filemanager.noDataText' : '(⊙o⊙)亲,没有多数据了。', + 'filemanager.title' : '文件服务器', + 'filemanager.noListUrl' : '无法获取图片,请先配置 fileManagerJson.', + 'filemanager.closeText' : '关闭对话框', + 'filemanager.confirmBtnText' : '确定', + 'filemanager.cancelBtnText' : '取消', + 'filemanager.loadMoreData' : '往下拉动滚动条可以加载更多数据.', + 'filemanager.depJQueryError' : '文件管理插件依赖 jQuery, 请先引入 jQuery.', + 'filemanager.fileType' : '类型', + + 'graft.btnText' : '保存并插入涂鸦', + 'graft.uploadSuccess' : '涂鸦上传成功', + 'graft.uploadFaild' : '涂鸦上传失败', + 'graft.empty' : '您没有在画布上绘制任何图像', + + 'insertfile.url' : 'URL', + 'insertfile.title' : '文件说明', + 'insertfile.upload' : '上传', + 'insertfile.viewServer' : '文件空间', + 'table.cells' : '单元格数', + 'table.rows' : '行数', + 'table.cols' : '列数', + 'table.size' : '大小', + 'table.width' : '宽度', + 'table.height' : '高度', + 'table.percent' : '%', + 'table.px' : 'px', + 'table.space' : '边距间距', + 'table.padding' : '边距', + 'table.spacing' : '间距', + 'table.align' : '对齐方式', + 'table.textAlign' : '水平对齐', + 'table.verticalAlign' : '垂直对齐', + 'table.alignDefault' : '默认', + 'table.alignLeft' : '左对齐', + 'table.alignCenter' : '居中', + 'table.alignRight' : '右对齐', + 'table.alignTop' : '顶部', + 'table.alignMiddle' : '中部', + 'table.alignBottom' : '底部', + 'table.alignBaseline' : '基线', + 'table.border' : '边框', + 'table.borderWidth' : '宽度', + 'table.borderColor' : '颜色', + 'table.backgroundColor' : '背景颜色', + 'map.address' : '地址: ', + 'map.search' : '搜索', + 'baidumap.address' : '地址: ', + 'baidumap.search' : '搜索', + 'baidumap.insertDynamicMap' : '插入动态地图', + 'anchor.name' : '锚点名称', + 'formatblock.formatBlock' : { + h1 : '标题 1', + h2 : '标题 2', + h3 : '标题 3', + h4 : '标题 4', + p : '正 文' + }, + 'fontname.fontName' : { + 'SimSun' : '宋体', + 'NSimSun' : '新宋体', + 'FangSong' : '仿宋', + 'KaiTi' : '楷体', + 'SimHei' : '黑体', + 'Microsoft YaHei' : '微软雅黑', + 'Arial' : 'Arial', + 'Arial Black' : 'Arial Black', + 'Times New Roman' : 'Times New Roman', + 'Courier New' : 'Courier New', + 'Tahoma' : 'Tahoma', + 'Verdana' : 'Verdana' + }, + 'lineheight.lineHeight' : [ + {'1' : '单倍行距'}, + {'1.5' : '1.5倍行距'}, + {'2' : '2倍行距'}, + {'2.5' : '2.5倍行距'}, + {'3' : '3倍行距'} + ], + 'template.selectTemplate' : '可选模板', + 'template.replaceContent' : '替换当前内容', + 'template.fileList' : { + '1.html' : '图片和文字', + '2.html' : '表格', + '3.html' : '项目编号' + } +}, 'zh-CN'); +KindEditor.options.langType = 'zh-CN'; diff --git a/tools/NKeditor/lang/zh-TW.js b/tools/NKeditor/lang/zh-TW.js new file mode 100644 index 00000000..49468980 --- /dev/null +++ b/tools/NKeditor/lang/zh-TW.js @@ -0,0 +1,243 @@ +/******************************************************************************* +* KindEditor - WYSIWYG HTML Editor for Internet +* Copyright (C) 2006-2011 kindsoft.net +* +* @author Roddy +* @site http://www.kindsoft.net/ +* @licence http://www.kindsoft.net/license.php +*******************************************************************************/ + +KindEditor.lang({ + source : '原始碼', + preview : '預覽', + undo : '復原(Ctrl+Z)', + redo : '重複(Ctrl+Y)', + cut : '剪下(Ctrl+X)', + copy : '複製(Ctrl+C)', + paste : '貼上(Ctrl+V)', + plainpaste : '貼為純文字格式', + wordpaste : '自Word貼上', + selectall : '全選(Ctrl+A)', + justifyleft : '靠左對齊', + justifycenter : '置中', + justifyright : '靠右對齊', + justifyfull : '左右對齊', + insertorderedlist : '編號清單', + insertunorderedlist : '項目清單', + indent : '增加縮排', + outdent : '減少縮排', + subscript : '下標', + superscript : '上標', + formatblock : '標題', + fontname : '字體', + fontsize : '文字大小', + forecolor : '文字顏色', + hilitecolor : '背景顏色', + bold : '粗體(Ctrl+B)', + italic : '斜體(Ctrl+I)', + underline : '底線(Ctrl+U)', + strikethrough : '刪除線', + removeformat : '清除格式', + image : '影像', + multiimage : '批量影像上傳', + flash : 'Flash', + media : '多媒體', + table : '表格', + tablecell : '儲存格', + hr : '插入水平線', + emoticons : '插入表情', + link : '超連結', + unlink : '移除超連結', + fullscreen : '最大化', + about : '關於', + print : '列印(Ctrl+P)', + filemanager : '瀏覽伺服器', + code : '插入程式代碼', + map : 'Google地圖', + baidumap : 'Baidu地圖', + lineheight : '行距', + clearhtml : '清理HTML代碼', + pagebreak : '插入分頁符號', + quickformat : '快速排版', + insertfile : '插入文件', + template : '插入樣板', + anchor : '錨點', + yes : '確定', + no : '取消', + close : '關閉', + editImage : '影像屬性', + deleteImage : '刪除影像', + editFlash : 'Flash屬性', + deleteFlash : '删除Flash', + editMedia : '多媒體屬性', + deleteMedia : '删除多媒體', + editLink : '超連結屬性', + deleteLink : '移除超連結', + editAnchor : '锚点属性', + deleteAnchor : '删除锚点', + tableprop : '表格屬性', + tablecellprop : '儲存格屬性', + tableinsert : '插入表格', + tabledelete : '刪除表格', + tablecolinsertleft : '向左插入列', + tablecolinsertright : '向右插入列', + tablerowinsertabove : '向上插入欄', + tablerowinsertbelow : '下方插入欄', + tablerowmerge : '向下合併單元格', + tablecolmerge : '向右合併單元格', + tablerowsplit : '分割欄', + tablecolsplit : '分割列', + tablecoldelete : '删除列', + tablerowdelete : '删除欄', + noColor : '自動', + pleaseSelectFile : '請選擇文件。', + invalidImg : "請輸入有效的URL。\n只允許jpg,gif,bmp,png格式。", + invalidMedia : "請輸入有效的URL。\n只允許swf,flv,mp3,wav,wma,wmv,mid,avi,mpg,asf,rm,rmvb格式。", + invalidWidth : "寬度必須是數字。", + invalidHeight : "高度必須是數字。", + invalidBorder : "邊框必須是數字。", + invalidUrl : "請輸入有效的URL。", + invalidRows : '欄數是必須輸入項目,只允許輸入大於0的數字。', + invalidCols : '列數是必須輸入項目,只允許輸入大於0的數字。', + invalidPadding : '內距必須是數字。', + invalidSpacing : '間距必須是數字。', + invalidJson : '伺服器發生故障。', + uploadSuccess : '上傳成功。', + cutError : '您的瀏覽器安全設置不允許使用剪下操作,請使用快捷鍵(Ctrl+X)完成。', + copyError : '您的瀏覽器安全設置不允許使用剪下操作,請使用快捷鍵(Ctrl+C)完成。', + pasteError : '您的瀏覽器安全設置不允許使用剪下操作,請使用快捷鍵(Ctrl+V)完成。', + ajaxLoading : '加載中,請稍候 ...', + uploadLoading : '上傳中,請稍候 ...', + uploadError : '上傳錯誤', + 'plainpaste.comment' : '請使用快捷鍵(Ctrl+V)把內容貼到下方區域裡。', + 'wordpaste.comment' : '請使用快捷鍵(Ctrl+V)把內容貼到下方區域裡。', + 'code.pleaseInput' : 'Please input code.', + 'link.url' : 'URL', + 'link.linkType' : '打開類型', + 'link.newWindow' : '新窗口', + 'link.selfWindow' : '本頁窗口', + 'flash.url' : 'URL', + 'flash.width' : '寬度', + 'flash.height' : '高度', + 'flash.upload' : '上傳', + 'flash.viewServer' : '瀏覽', + 'media.url' : 'URL', + 'media.width' : '寬度', + 'media.height' : '高度', + 'media.autostart' : '自動播放', + 'media.upload' : '上傳', + 'media.viewServer' : '瀏覽', + 'image.remoteImage' : '網絡影像', + 'image.localImage' : '上傳影像', + 'image.remoteUrl' : '影像URL', + 'image.localUrl' : '影像URL', + 'image.size' : '影像大小', + 'image.width' : '寬度', + 'image.height' : '高度', + 'image.resetSize' : '原始大小', + 'image.align' : '對齊方式', + 'image.defaultAlign' : '未設定', + 'image.leftAlign' : '向左對齊', + 'image.rightAlign' : '向右對齊', + 'image.imgTitle' : '影像說明', + 'image.upload' : '瀏覽...', + 'image.viewServer' : '瀏覽...', + 'multiimage.uploadDesc' : 'Allows users to upload <%=uploadLimit%> images, single image size not exceeding <%=sizeLimit%>', + 'multiimage.startUpload' : 'Start upload', + 'multiimage.clearAll' : 'Clear all', + 'multiimage.insertAll' : 'Insert all', + 'multiimage.queueLimitExceeded' : 'Queue limit exceeded.', + 'multiimage.fileExceedsSizeLimit' : 'File exceeds size limit.', + 'multiimage.zeroByteFile' : 'Zero byte file.', + 'multiimage.invalidFiletype' : 'Invalid file type.', + 'multiimage.unknownError' : 'Unknown upload error.', + 'multiimage.pending' : 'Pending ...', + 'multiimage.uploadError' : 'Upload error', + 'filemanager.emptyFolder' : '空文件夾', + 'filemanager.moveup' : '至上一級文件夾', + 'filemanager.viewType' : '顯示方式:', + 'filemanager.viewImage' : '縮略圖', + 'filemanager.listImage' : '詳細信息', + 'filemanager.orderType' : '排序方式:', + 'filemanager.fileName' : '名稱', + 'filemanager.fileSize' : '大小', + 'filemanager.fileType' : '類型', + 'insertfile.url' : 'URL', + 'insertfile.title' : '文件說明', + 'insertfile.upload' : '上傳', + 'insertfile.viewServer' : '瀏覽', + 'table.cells' : '儲存格數', + 'table.rows' : '欄數', + 'table.cols' : '列數', + 'table.size' : '表格大小', + 'table.width' : '寬度', + 'table.height' : '高度', + 'table.percent' : '%', + 'table.px' : 'px', + 'table.space' : '內距間距', + 'table.padding' : '內距', + 'table.spacing' : '間距', + 'table.align' : '對齊方式', + 'table.textAlign' : '水平對齊', + 'table.verticalAlign' : '垂直對齊', + 'table.alignDefault' : '未設定', + 'table.alignLeft' : '向左對齊', + 'table.alignCenter' : '置中', + 'table.alignRight' : '向右對齊', + 'table.alignTop' : '靠上', + 'table.alignMiddle' : '置中', + 'table.alignBottom' : '靠下', + 'table.alignBaseline' : '基線', + 'table.border' : '表格邊框', + 'table.borderWidth' : '邊框', + 'table.borderColor' : '顏色', + 'table.backgroundColor' : '背景顏色', + 'map.address' : '住所: ', + 'map.search' : '尋找', + 'baidumap.address' : '住所: ', + 'baidumap.search' : '尋找', + 'baidumap.insertDynamicMap' : '插入動態地圖', + 'anchor.name' : '錨點名稱', + 'formatblock.formatBlock' : { + h1 : '標題 1', + h2 : '標題 2', + h3 : '標題 3', + h4 : '標題 4', + p : '一般' + }, + 'fontname.fontName' : { + 'MingLiU' : '細明體', + 'PMingLiU' : '新細明體', + 'DFKai-SB' : '標楷體', + 'SimSun' : '宋體', + 'NSimSun' : '新宋體', + 'FangSong' : '仿宋體', + 'Arial' : 'Arial', + 'Arial Black' : 'Arial Black', + 'Times New Roman' : 'Times New Roman', + 'Courier New' : 'Courier New', + 'Tahoma' : 'Tahoma', + 'Verdana' : 'Verdana' + }, + 'lineheight.lineHeight' : [ + {'1' : '单倍行距'}, + {'1.5' : '1.5倍行距'}, + {'2' : '2倍行距'}, + {'2.5' : '2.5倍行距'}, + {'3' : '3倍行距'} + ], + 'template.selectTemplate' : '可選樣板', + 'template.replaceContent' : '取代當前內容', + 'template.fileList' : { + '1.html' : '影像和文字', + '2.html' : '表格', + '3.html' : '项目清單' + } +}, 'zh-TW'); + +KindEditor.each(KindEditor.options.items, function(i, name) { + if (name == 'baidumap') { + KindEditor.options.items[i] = 'map'; + } +}); +KindEditor.options.langType = 'zh-TW'; \ No newline at end of file diff --git a/tools/NKeditor/libs/JDialog/JDialog.min.js b/tools/NKeditor/libs/JDialog/JDialog.min.js new file mode 100644 index 00000000..551d5442 --- /dev/null +++ b/tools/NKeditor/libs/JDialog/JDialog.min.js @@ -0,0 +1 @@ +!function(i){function n(i){return(i+"_"+Math.random()).replace("0.","")}function t(){return Math.max(document.documentElement.clientHeight,document.body.clientHeight,i(document).height())+document.documentElement.scrollTop}function o(){return i(window).height()}function e(){return i(window).width()}function a(){return window.document.body.scrollTop||window.document.documentElement.scrollTop}function c(i){return"[object Array]"===Object.prototype.toString.apply(i)}function d(i){return"[object Object]"===Object.prototype.toString.apply(i)}i.fn.setPosition=function(n,t,l,s){var r,w,u=0,p=0,f=e(),h=o();if(s){var g=i(s).offset();u=g.left,p=g.top,f=i(s).width(),h=i(s).height()}else p=a();switch(l){case"cc":r=p+(h-t)/2,w=u+(f-n)/2;break;case"lt":r=p+JDialog.margin,w=JDialog.margin+u;break;case"tc":r=p+JDialog.margin,w=u+(f-n)/2;break;case"rt":r=p+JDialog.margin,w=u+f-n-JDialog.margin;break;case"lc":r=p+(h-t)/2,w=u+JDialog.margin;break;case"rc":r=p+(h-t)/2,w=u+f-n-JDialog.margin;break;case"lb":r=p+h-t-JDialog.margin,w=u+JDialog.margin;break;case"rb":r=p+h-t-JDialog.margin,w=u+f-n-JDialog.margin;break;case"bc":r=p+h-t-JDialog.margin,w=u+(f-n)/2;break;default:"number"==typeof l?(r=p+l,w=u+(f-n)/2):d(l)?(r=p+l.top,w=u+l.left):c(l)&&(r=p+l[0],w=u+l[1])}return i(this).css({width:n+"px",height:t+"px",top:r+"px",left:w+"px"}),this};var l=function(n){function o(){null==d&&(d=i('
      '),d.css({"background-color":n.bgcolor}),i("body").append(d),a(),d.fadeIn(300),i(window).bind("resize",function(){a()}))}function a(){d.css({opacity:n.opacity,width:e(),height:t()})}var c={},d=null;return c.hide=function(){d.fadeOut(JDialog.transitionTime,function(){d.remove()})},c.getId=function(){return n.id},o(),c},s=function(n){function t(){if(null==e){switch(e=i('
      '),a=i('
      '),c=i('
      '),d=i('
      '),e.css("animation-name",n.effect),e.append(a),e.append(c),e.append(d),i("body").append(e),c.html(n.content),n.type){case"ok":a.addClass("jtip_ok");break;case"error":a.addClass("jtip_error");break;case"loading":l=i('');var t=i('
      ');t.append(l),a.addClass("jtip_loading"),t.insertAfter(a);break;default:a.addClass("jtip_warn")}e.show()}}function o(){var i=n.width;i||(i=a.width()+c.width()+21+d.width(),null!=l&&(i+=l.width())),e.setPosition(i,e.height(),n.offset,n.container)}var e,a,c,d,l,s={};return s.hide=function(){e.css("animation-name","zoomOut"),setTimeout(function(){e.remove(),"function"==typeof n.callback&&n.callback(s)},JDialog.transitionTime),null!=s.locker&&s.locker.hide()},s.getId=function(){return n.id},i(window).bind("resize",function(){o()}),n.lock&&(s.locker=JDialog.lock()),t(),o(),s},r=function(n){var t={};return t.winBox=null,t.create=function(){t.winBox=i('
      '),t.winBox.addClass("box-shadow");var o=i('
      '),e=i('
      '+n.title+"
      "),a=i('
      '),c=i(''),d=i('');c.on("click",function(i){t.resizeToMax(),i.stopPropagation()}),d.on("click",function(){t.close()}),n.maxEnable&&a.append(c),n.closeBtn&&a.append(d),o.append(e),o.append(a),n.hasTitle&&t.winBox.append(o);var l=i('
      '),s=i(''),r=i('
      ');r.append(n.content),"none"!=n.icon&&l.append(s),l.append(r),t.winBox.append(l);var w=i('
      '),u=i('
      ');if(n.button){var p=function(n,o){var e=i(''+n+"");return e.click(function(){o(t)}),e};for(var f in n.button){var h=new p(f,n.button[f]);u.append(h)}w.append(u),t.winBox.append(w)}t.winBox.data("me",{title:e,content:l,max_btn:c}),o.mousedown(function(n){var o=n.pageX-t.winBox.position().left,e=n.pageY-t.winBox.position().top;i(document).mousemove(function(i){window.getSelection?window.getSelection().removeAllRanges():document.selection.empty(),t.winBox.css({top:i.pageY-e+"px",left:i.pageX-o+"px"})})}).mouseup(function(){i(document).unbind("mousemove")}),i("body").append(t.winBox),t.setIcon(n.icon)},t.setIcon=function(i){"none"!=i&&t.winBox.find(".jdialog_win_icon").addClass("jdialog_win_icon_"+i)},t.setPosition=function(){var i=n.height>0?n.height:t.winBox.height();0==n.height&&void 0!=n.button&&(i+=60),n.height=i,t.winBox.setPosition(n.width,n.height,n.offset,n.container),"none"==n.icon?t.winBox.find(".jdialog_win_content").css({width:"100%"}):t.winBox.find(".jdialog_win_content").css({width:t.winBox.width()-20-t.winBox.find(".jdialog_win_icon").width()-15+"px"}),n.button&&t.winBox.find(".jdialog_win_CBOX").height(n.height-115)},t.show=function(){null!=t.winBox&&(n.lock&&(t.locker=JDialog.lock()),t.winBox.css("animation-name",n.effect).show())},t.clear=function(){null!=t.winBox&&(t.winBox.find(".jdialog_win_CBOX").empty(),t.setPosition())},t.resizeToMax=function(){var n=t.winBox.data("smax"),c=t.winBox.data("me").max_btn;void 0==n?(t.winBox.data("smax",{top:t.winBox.position().top,left:t.winBox.position().left,width:t.winBox.width()+2*parseInt(t.winBox.css("border-width")),height:t.winBox.height()+2*parseInt(t.winBox.css("border-width"))}),i("body").css("overflow","hidden"),t.winBox.animate({top:a(),left:0,width:e(),height:o(),opacity:1},"fast"),c.attr({"class":"jdialog_win_reduce_button",title:"还原"})):(t.winBox.animate({top:n.top,left:n.left,width:n.width,height:n.height,opacity:1},"fast"),t.winBox.removeData("smax"),c.attr({"class":"jdialog_win_max_button",title:"最大化"}),i("body").css("overflow","auto"))},t.lock=function(){var n=i('
      '),o=t.winBox.find(".jdialog_win_title_box").height();n.css({top:o,left:0,width:t.winBox.width()+"px",height:t.winBox.height()-o+"px"}),t.winBox.append(n)},t.unlock=function(){t.winBox.find(".jwindow-lock").remove()},t.close=function(){t.winBox.css("animation-name","zoomOut"),setTimeout(function(){t.winBox.remove()},JDialog.transitionTime),t.locker&&t.locker.hide()},t.getId=function(){return n.id},i(window).bind("resize",function(){t.setPosition()}),t.create(),t.setPosition(),t.show(),t.options=n,t},w=function(n){var t={};n.lock&&(t.locker=JDialog.lock({bgcolor:"#ffffff",opacity:.3}));var o=i('');return i("body").append(o),o.setPosition(o.width(),o.height(),n.offset,n.container).addClass("loader-icon-"+n.skin),t.hide=function(){o.remove(),t.locker&&t.locker.hide(),"function"==typeof n.callback&&n.callback()},t},u=document.scripts,p=u[u.length-1],f=p.src,h=f.substring(0,f.lastIndexOf("/")+1)+"css/JDialog.css";i("head:eq(0)").append(''),window.JDialog={margin:10,transitionTime:300,lock:function(t){t=t||{};var o=i.extend({id:n("lock"),timer:0,bgcolor:"#000000",opacity:.5},t),e=new l(o);return o.timer>0&&setTimeout(function(){e.hide()},o.timer),e},msg:function(t){"string"==typeof t&&(t={content:t}),t=t||{};var o=i.extend({id:n("tip"),effect:"zoomIn",type:"warn",content:"Hello, World.",offset:"cc",lock:!1,callback:function(){},timer:2e3},t),e=new s(o);return o.timer>0&&setTimeout(function(){e.hide()},o.timer),e},open:function(t){"string"==typeof t&&(t={content:t}),t=t||{};var a=i.extend({id:n("window"),title:"This is the title",content:"Hello, this is the content.",width:600,height:0,hasTitle:!0,lock:!0,skin:"default",offset:"cc",effect:"zoomIn",maxEnable:!1,closeBtn:!1,icon:"none",maxWidth:1920},t);return a.width<100&&(a.width=a.width*e()/100),a.height<100&&(a.height=a.height*o()/100),new r(a)},alert:function(i){i=i||{},i.width||(i.width=300);var n=this.open({title:i.title,content:'
      '+i.content+"
      ",icon:i.icon,width:i.width,closeBtn:!0,button:{"确定":function(){n.close(),"function"==typeof i.callback&&i.callback(n)}}});return n},confirm:function(i){return i.content='
      '+i.content+"
      ",i.width||(i.width=300),i.closeBtn=!0,i.icon||(i.icon="warn"),this.open(i)},loader:function(t){var o=i.extend({id:n("loader"),skin:4,container:"",offset:"cc",lock:!0,timer:2e3},t),e=new w(o);return o.timer&&setTimeout(function(){e.hide()},o.timer),e}}}(jQuery); \ No newline at end of file diff --git a/tools/NKeditor/libs/JDialog/css/JDialog.css b/tools/NKeditor/libs/JDialog/css/JDialog.css new file mode 100644 index 00000000..779a1ddf --- /dev/null +++ b/tools/NKeditor/libs/JDialog/css/JDialog.css @@ -0,0 +1 @@ +@charset "UTF-8";.jtip_box,.lock_panel{display:none;position:absolute}a,a:active,a:visited,button,button:active,button:visited{outline:0}a,button{blr:expression(this.onFocus=this.blur())}body{font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-size:14px}.animated{animation-duration:.3s;animation-fill-mode:both}@keyframes zoomIn{from{opacity:0;transform:scale3d(.3,.3,.3)}50%{opacity:1}}@keyframes zoomOut{from{opacity:1}50%{opacity:0;transform:scale3d(.3,.3,.3)}to{opacity:0}}@keyframes zoomInDown{from{opacity:0;transform:scale3d(.1,.1,.1) translate3d(0,-1000px,0);animation-timing-function:cubic-bezier(.55,.055,.675,.19)}60%{opacity:1;transform:scale3d(.475,.475,.475) translate3d(0,60px,0);animation-timing-function:cubic-bezier(.175,.885,.32,1)}}@keyframes bounceInDown{60%,75%,90%,from,to{animation-timing-function:cubic-bezier(.215,.61,.355,1)}0%{opacity:0;transform:translate3d(0,-3000px,0)}60%{opacity:1;transform:translate3d(0,25px,0)}75%{transform:translate3d(0,-10px,0)}90%{transform:translate3d(0,5px,0)}to{transform:none}}@keyframes shake{from,to{transform:translate3d(0,0,0)}10%,30%,50%,70%,90%{transform:translate3d(-10px,0,0)}20%,40%,60%,80%{transform:translate3d(10px,0,0)}}@keyframes flip{from{transform:perspective(400px) rotate3d(0,1,0,-360deg);animation-timing-function:ease-out}40%{transform:perspective(400px) translate3d(0,0,150px) rotate3d(0,1,0,-190deg);animation-timing-function:ease-out}50%{transform:perspective(400px) translate3d(0,0,150px) rotate3d(0,1,0,-170deg);animation-timing-function:ease-in}80%{transform:perspective(400px) scale3d(.95,.95,.95);animation-timing-function:ease-in}to{transform:perspective(400px);animation-timing-function:ease-in}}@keyframes slideInDown{from{transform:translate3d(0,-100%,0);visibility:visible}to{transform:translate3d(0,0,0)}}.lock_panel{z-index:19891014;left:0;top:0}.jtip_box{margin:auto;z-index:19891015;height:54px;zoom:1;overflow:hidden}.jtip_box .jtip_content,.jtip_box .jtip_left_icon,.jtip_box .jtip_load_img,.jtip_box .jtip_right{float:left;background:url(gb_tips.png) no-repeat;height:54px;color:#404040}.jtip_box .jtip_left_icon{width:46px}.jtip_box .jtip_ok{background-position:-5px 0}.jtip_box .jtip_error{background-position:-5px -108px}.jtip_box .jtip_loading,.jtip_box .jtip_warn{background-position:-5px -54px}.jtip_box .jtip_loading{width:10px}.jtip_box .jtip_load_img{background:url(gb_tips.png) -5px -161px repeat-x;width:20px}.jtip_box .jtip_loading_icon{display:inline-block;background:url(gb_tip_loading.gif) center right no-repeat;width:20px;height:54px}.jtip_box .jtip_content{background:url(gb_tips.png) -5px -161px repeat-x;line-height:54px;font-size:14px;color:#404040;padding:0 10px}.jtip_box .jtip_right{background-position:left top;width:5px}.jdialog_win_box{z-index:19891015;position:absolute;display:none;zoom:1;overflow:hidden}.jdialog_win_box .jwindow-lock{position:absolute;background:url(loader.gif) center center no-repeat #fff;filter:alpha(opacity=5);opacity:.5}.jdialog_win_box .jdialog_win_title_box{box-sizing:content-box;height:42px;line-height:42px}.jdialog_win_box .jdialog_win_title_box .jdialog_win_title{text-align:left;height:42px;line-height:42px;font-size:16px;cursor:default}.jdialog_win_box .jdialog_win_title_box div,.jdialog_win_box .jdialog_win_title_box div a{box-sizing:content-box}.box-shadow{webkit-box-shadow:0 5px 15px rgba(0,0,0,.5)!important;box-shadow:0 5px 15px rgba(0,0,0,.5)!important;border:1px solid #999!important;border:1px solid rgba(0,0,0,.2)!important;border-radius:6px;outline:0;background-clip:padding-box!important}.jdialog_win_default{-webkit-background-clip:content;background-color:#fff;-webkit-animation-fill-mode:both;animation-fill-mode:both;-webkit-animation-duration:.3s;animation-duration:.3s;border:1px solid #B2B2B2;border:1px solid rgba(0,0,0,.3);box-shadow:1px 1px 5px rgba(0,0,0,.2)}.jdialog_win_default .jdialog_win_title_box{padding:0 80px 0 10px;border-bottom:1px solid #eee;font-size:14px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;background-color:#F8F8F8;border-radius:2px 2px 0 0;position:relative}.jdialog_win_default .jdialog_win_title_box .jdialog_win_title{cursor:move;color:#404040}.jdialog_win_default .jdialog_win_title_box .jdialog_win_button{position:absolute;height:40px;zoom:1;overflow:hidden;top:5px;right:5px}.jdialog_win_default .jdialog_win_title_box .jdialog_win_button a{float:left;background:url(bg-default.png) no-repeat;width:24px;height:20px;margin:5px 2px 0}.jdialog_win_default .jdialog_win_title_box .jdialog_win_button .jdialog_win_max_button{background-position:-25px -36px}.jdialog_win_default .jdialog_win_title_box .jdialog_win_button .jdialog_win_max_button:hover{background-position:-25px 3px}.jdialog_win_default .jdialog_win_title_box .jdialog_win_button .jdialog_win_reduce_button{background-position:-83px -36px}.jdialog_win_default .jdialog_win_title_box .jdialog_win_button .jdialog_win_reduce_button:hover{background-position:-83px 3px}.jdialog_win_default .jdialog_win_title_box .jdialog_win_button .jdialog_win_close_button{background-position:-53px -36px;transition:none!important}.jdialog_win_default .jdialog_win_title_box .jdialog_win_button .jdialog_win_close_button:hover{background-position:-53px 3px}.jdialog_win_default .jdialog_win_CBOX{zoom:1;overflow-x:hidden;overflow-y:auto;padding:10px;background-color:#fff}.jdialog_win_default .jdialog_win_CBOX .jdialog_win_icon{float:left;width:50px;height:50px;margin-right:10px;background:url(jdialog_confirm_icon_espresso.png) no-repeat}.jdialog_win_default .jdialog_win_CBOX .jdialog_win_icon_warn{background-position:0 0}.jdialog_win_default .jdialog_win_CBOX .jdialog_win_icon_ok{background-position:-52px 0}.jdialog_win_default .jdialog_win_CBOX .jdialog_win_icon_edit{background-position:-105px 0}.jdialog_win_default .jdialog_win_CBOX .jdialog_win_icon_bag{background-position:-156px 0}.jdialog_win_default .jdialog_win_CBOX .jdialog_win_icon_ask{background-position:-210px 0}.jdialog_win_default .jdialog_win_CBOX .jdialog_win_icon_minus{background-position:-261px 0}.jdialog_win_default .jdialog_win_CBOX .jdialog_win_icon_italic{background-position:-314px 0}.jdialog_win_default .jdialog_win_CBOX .jdialog_win_icon_unlock{background-position:-367px 0}.jdialog_win_default .jdialog_win_CBOX .jdialog_win_icon_smile{background-position:-419px 0}.jdialog_win_default .jdialog_win_CBOX .jdialog_win_icon_angry{background-position:-471px 0}.jdialog_win_default .jdialog_win_CBOX .jdialog_win_icon_down{background-position:-524px 0}.jdialog_win_default .jdialog_win_CBOX .jdialog_win_icon_remove{background-position:-576px 0}.jdialog_win_default .jdialog_win_CBOX .jdialog_win_icon_msg{background-position:-629px 0}.jdialog_win_default .jdialog_win_CBOX .jdialog_win_icon_mail{background-position:-681px 0}.jdialog_win_default .jdialog_win_CBOX .jdialog_win_content{text-align:left;line-height:150%;float:left;font-size:14px}.jdialog_win_default .jdialog_win_button_container{position:absolute;bottom:0;width:100%;text-align:right;background:#fff}.jdialog_win_default .jdialog_win_button_container .jdialog_win_buttonInner{border-top:1px solid #e5e5e5;margin:auto;text-align:right;padding:10px}.jdialog_win_default .jdialog_win_button_container .jdialog_win_buttonInner .btn{font-size:14px;margin:5px;border-color:#4898d5;background-color:#2e8ded;color:#fff;display:inline-block;padding:6px 12px;border-radius:2px;cursor:pointer;text-decoration:none}.jdialog_win_default .jdialog_win_button_container .jdialog_win_buttonInner .btn:hover{filter:alpha(opacity=80);-webkit-box-shadow:none;box-shadow:none;opacity:.8}.loader-icon{position:absolute;z-index:19891015;width:80px;height:80px;background-image:url(loader1.gif)}.loader-icon-1{background-position:-31px -4px}.loader-icon-2{background-position:-33px -133px}.loader-icon-3{background-position:-192px -4px}.loader-icon-4{background-position:-71px -262px} \ No newline at end of file diff --git a/tools/NKeditor/libs/JDialog/css/bg-default.png b/tools/NKeditor/libs/JDialog/css/bg-default.png new file mode 100644 index 00000000..ee6a0bf4 Binary files /dev/null and b/tools/NKeditor/libs/JDialog/css/bg-default.png differ diff --git a/tools/NKeditor/libs/JDialog/css/gb_tip_loading.gif b/tools/NKeditor/libs/JDialog/css/gb_tip_loading.gif new file mode 100644 index 00000000..e846e1d6 Binary files /dev/null and b/tools/NKeditor/libs/JDialog/css/gb_tip_loading.gif differ diff --git a/tools/NKeditor/libs/JDialog/css/gb_tips.png b/tools/NKeditor/libs/JDialog/css/gb_tips.png new file mode 100644 index 00000000..c5a6cf9c Binary files /dev/null and b/tools/NKeditor/libs/JDialog/css/gb_tips.png differ diff --git a/tools/NKeditor/libs/JDialog/css/gb_tips_ie6.gif b/tools/NKeditor/libs/JDialog/css/gb_tips_ie6.gif new file mode 100644 index 00000000..aa08799f Binary files /dev/null and b/tools/NKeditor/libs/JDialog/css/gb_tips_ie6.gif differ diff --git a/tools/NKeditor/libs/JDialog/css/jdialog_confirm_icon.gif b/tools/NKeditor/libs/JDialog/css/jdialog_confirm_icon.gif new file mode 100644 index 00000000..3618499f Binary files /dev/null and b/tools/NKeditor/libs/JDialog/css/jdialog_confirm_icon.gif differ diff --git a/tools/NKeditor/libs/JDialog/css/jdialog_confirm_icon_espresso.png b/tools/NKeditor/libs/JDialog/css/jdialog_confirm_icon_espresso.png new file mode 100644 index 00000000..48049cb3 Binary files /dev/null and b/tools/NKeditor/libs/JDialog/css/jdialog_confirm_icon_espresso.png differ diff --git a/tools/NKeditor/libs/JDialog/css/jwindow_default.gif b/tools/NKeditor/libs/JDialog/css/jwindow_default.gif new file mode 100644 index 00000000..db8d8f0a Binary files /dev/null and b/tools/NKeditor/libs/JDialog/css/jwindow_default.gif differ diff --git a/tools/NKeditor/libs/JDialog/css/loader.gif b/tools/NKeditor/libs/JDialog/css/loader.gif new file mode 100644 index 00000000..5bb90fd6 Binary files /dev/null and b/tools/NKeditor/libs/JDialog/css/loader.gif differ diff --git a/tools/NKeditor/libs/JDialog/css/loader1.gif b/tools/NKeditor/libs/JDialog/css/loader1.gif new file mode 100644 index 00000000..ecb6e516 Binary files /dev/null and b/tools/NKeditor/libs/JDialog/css/loader1.gif differ diff --git a/tools/NKeditor/libs/bootstrap/bootstrap.min.css b/tools/NKeditor/libs/bootstrap/bootstrap.min.css new file mode 100644 index 00000000..ed3905e0 --- /dev/null +++ b/tools/NKeditor/libs/bootstrap/bootstrap.min.css @@ -0,0 +1,6 @@ +/*! + * Bootstrap v3.3.7 (http://getbootstrap.com) + * Copyright 2011-2016 Twitter, Inc. + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) + *//*! normalize.css v3.0.3 | MIT License | github.com/necolas/normalize.css */html{font-family:sans-serif;-webkit-text-size-adjust:100%;-ms-text-size-adjust:100%}body{margin:0}article,aside,details,figcaption,figure,footer,header,hgroup,main,menu,nav,section,summary{display:block}audio,canvas,progress,video{display:inline-block;vertical-align:baseline}audio:not([controls]){display:none;height:0}[hidden],template{display:none}a{background-color:transparent}a:active,a:hover{outline:0}abbr[title]{border-bottom:1px dotted}b,strong{font-weight:700}dfn{font-style:italic}h1{margin:.67em 0;font-size:2em}mark{color:#000;background:#ff0}small{font-size:80%}sub,sup{position:relative;font-size:75%;line-height:0;vertical-align:baseline}sup{top:-.5em}sub{bottom:-.25em}img{border:0}svg:not(:root){overflow:hidden}figure{margin:1em 40px}hr{height:0;-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box}pre{overflow:auto}code,kbd,pre,samp{font-family:monospace,monospace;font-size:1em}button,input,optgroup,select,textarea{margin:0;font:inherit;color:inherit}button{overflow:visible}button,select{text-transform:none}button,html input[type=button],input[type=reset],input[type=submit]{-webkit-appearance:button;cursor:pointer}button[disabled],html input[disabled]{cursor:default}button::-moz-focus-inner,input::-moz-focus-inner{padding:0;border:0}input{line-height:normal}input[type=checkbox],input[type=radio]{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;padding:0}input[type=number]::-webkit-inner-spin-button,input[type=number]::-webkit-outer-spin-button{height:auto}input[type=search]{-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box;-webkit-appearance:textfield}input[type=search]::-webkit-search-cancel-button,input[type=search]::-webkit-search-decoration{-webkit-appearance:none}fieldset{padding:.35em .625em .75em;margin:0 2px;border:1px solid silver}legend{padding:0;border:0}textarea{overflow:auto}optgroup{font-weight:700}table{border-spacing:0;border-collapse:collapse}td,th{padding:0}/*! Source: https://github.com/h5bp/html5-boilerplate/blob/master/src/css/main.css */@media print{*,:after,:before{color:#000!important;text-shadow:none!important;background:0 0!important;-webkit-box-shadow:none!important;box-shadow:none!important}a,a:visited{text-decoration:underline}a[href]:after{content:" (" attr(href) ")"}abbr[title]:after{content:" (" attr(title) ")"}a[href^="javascript:"]:after,a[href^="#"]:after{content:""}blockquote,pre{border:1px solid #999;page-break-inside:avoid}thead{display:table-header-group}img,tr{page-break-inside:avoid}img{max-width:100%!important}h2,h3,p{orphans:3;widows:3}h2,h3{page-break-after:avoid}.navbar{display:none}.btn>.caret,.dropup>.btn>.caret{border-top-color:#000!important}.label{border:1px solid #000}.table{border-collapse:collapse!important}.table td,.table th{background-color:#fff!important}.table-bordered td,.table-bordered th{border:1px solid #ddd!important}}@font-face{font-family:'Glyphicons Halflings';src:url(../fonts/glyphicons-halflings-regular.eot);src:url(../fonts/glyphicons-halflings-regular.eot?#iefix) format('embedded-opentype'),url(../fonts/glyphicons-halflings-regular.woff2) format('woff2'),url(../fonts/glyphicons-halflings-regular.woff) format('woff'),url(../fonts/glyphicons-halflings-regular.ttf) format('truetype'),url(../fonts/glyphicons-halflings-regular.svg#glyphicons_halflingsregular) format('svg')}.glyphicon{position:relative;top:1px;display:inline-block;font-family:'Glyphicons Halflings';font-style:normal;font-weight:400;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.glyphicon-asterisk:before{content:"\002a"}.glyphicon-plus:before{content:"\002b"}.glyphicon-eur:before,.glyphicon-euro:before{content:"\20ac"}.glyphicon-minus:before{content:"\2212"}.glyphicon-cloud:before{content:"\2601"}.glyphicon-envelope:before{content:"\2709"}.glyphicon-pencil:before{content:"\270f"}.glyphicon-glass:before{content:"\e001"}.glyphicon-music:before{content:"\e002"}.glyphicon-search:before{content:"\e003"}.glyphicon-heart:before{content:"\e005"}.glyphicon-star:before{content:"\e006"}.glyphicon-star-empty:before{content:"\e007"}.glyphicon-user:before{content:"\e008"}.glyphicon-film:before{content:"\e009"}.glyphicon-th-large:before{content:"\e010"}.glyphicon-th:before{content:"\e011"}.glyphicon-th-list:before{content:"\e012"}.glyphicon-ok:before{content:"\e013"}.glyphicon-remove:before{content:"\e014"}.glyphicon-zoom-in:before{content:"\e015"}.glyphicon-zoom-out:before{content:"\e016"}.glyphicon-off:before{content:"\e017"}.glyphicon-signal:before{content:"\e018"}.glyphicon-cog:before{content:"\e019"}.glyphicon-trash:before{content:"\e020"}.glyphicon-home:before{content:"\e021"}.glyphicon-file:before{content:"\e022"}.glyphicon-time:before{content:"\e023"}.glyphicon-road:before{content:"\e024"}.glyphicon-download-alt:before{content:"\e025"}.glyphicon-download:before{content:"\e026"}.glyphicon-upload:before{content:"\e027"}.glyphicon-inbox:before{content:"\e028"}.glyphicon-play-circle:before{content:"\e029"}.glyphicon-repeat:before{content:"\e030"}.glyphicon-refresh:before{content:"\e031"}.glyphicon-list-alt:before{content:"\e032"}.glyphicon-lock:before{content:"\e033"}.glyphicon-flag:before{content:"\e034"}.glyphicon-headphones:before{content:"\e035"}.glyphicon-volume-off:before{content:"\e036"}.glyphicon-volume-down:before{content:"\e037"}.glyphicon-volume-up:before{content:"\e038"}.glyphicon-qrcode:before{content:"\e039"}.glyphicon-barcode:before{content:"\e040"}.glyphicon-tag:before{content:"\e041"}.glyphicon-tags:before{content:"\e042"}.glyphicon-book:before{content:"\e043"}.glyphicon-bookmark:before{content:"\e044"}.glyphicon-print:before{content:"\e045"}.glyphicon-camera:before{content:"\e046"}.glyphicon-font:before{content:"\e047"}.glyphicon-bold:before{content:"\e048"}.glyphicon-italic:before{content:"\e049"}.glyphicon-text-height:before{content:"\e050"}.glyphicon-text-width:before{content:"\e051"}.glyphicon-align-left:before{content:"\e052"}.glyphicon-align-center:before{content:"\e053"}.glyphicon-align-right:before{content:"\e054"}.glyphicon-align-justify:before{content:"\e055"}.glyphicon-list:before{content:"\e056"}.glyphicon-indent-left:before{content:"\e057"}.glyphicon-indent-right:before{content:"\e058"}.glyphicon-facetime-video:before{content:"\e059"}.glyphicon-picture:before{content:"\e060"}.glyphicon-map-marker:before{content:"\e062"}.glyphicon-adjust:before{content:"\e063"}.glyphicon-tint:before{content:"\e064"}.glyphicon-edit:before{content:"\e065"}.glyphicon-share:before{content:"\e066"}.glyphicon-check:before{content:"\e067"}.glyphicon-move:before{content:"\e068"}.glyphicon-step-backward:before{content:"\e069"}.glyphicon-fast-backward:before{content:"\e070"}.glyphicon-backward:before{content:"\e071"}.glyphicon-play:before{content:"\e072"}.glyphicon-pause:before{content:"\e073"}.glyphicon-stop:before{content:"\e074"}.glyphicon-forward:before{content:"\e075"}.glyphicon-fast-forward:before{content:"\e076"}.glyphicon-step-forward:before{content:"\e077"}.glyphicon-eject:before{content:"\e078"}.glyphicon-chevron-left:before{content:"\e079"}.glyphicon-chevron-right:before{content:"\e080"}.glyphicon-plus-sign:before{content:"\e081"}.glyphicon-minus-sign:before{content:"\e082"}.glyphicon-remove-sign:before{content:"\e083"}.glyphicon-ok-sign:before{content:"\e084"}.glyphicon-question-sign:before{content:"\e085"}.glyphicon-info-sign:before{content:"\e086"}.glyphicon-screenshot:before{content:"\e087"}.glyphicon-remove-circle:before{content:"\e088"}.glyphicon-ok-circle:before{content:"\e089"}.glyphicon-ban-circle:before{content:"\e090"}.glyphicon-arrow-left:before{content:"\e091"}.glyphicon-arrow-right:before{content:"\e092"}.glyphicon-arrow-up:before{content:"\e093"}.glyphicon-arrow-down:before{content:"\e094"}.glyphicon-share-alt:before{content:"\e095"}.glyphicon-resize-full:before{content:"\e096"}.glyphicon-resize-small:before{content:"\e097"}.glyphicon-exclamation-sign:before{content:"\e101"}.glyphicon-gift:before{content:"\e102"}.glyphicon-leaf:before{content:"\e103"}.glyphicon-fire:before{content:"\e104"}.glyphicon-eye-open:before{content:"\e105"}.glyphicon-eye-close:before{content:"\e106"}.glyphicon-warning-sign:before{content:"\e107"}.glyphicon-plane:before{content:"\e108"}.glyphicon-calendar:before{content:"\e109"}.glyphicon-random:before{content:"\e110"}.glyphicon-comment:before{content:"\e111"}.glyphicon-magnet:before{content:"\e112"}.glyphicon-chevron-up:before{content:"\e113"}.glyphicon-chevron-down:before{content:"\e114"}.glyphicon-retweet:before{content:"\e115"}.glyphicon-shopping-cart:before{content:"\e116"}.glyphicon-folder-close:before{content:"\e117"}.glyphicon-folder-open:before{content:"\e118"}.glyphicon-resize-vertical:before{content:"\e119"}.glyphicon-resize-horizontal:before{content:"\e120"}.glyphicon-hdd:before{content:"\e121"}.glyphicon-bullhorn:before{content:"\e122"}.glyphicon-bell:before{content:"\e123"}.glyphicon-certificate:before{content:"\e124"}.glyphicon-thumbs-up:before{content:"\e125"}.glyphicon-thumbs-down:before{content:"\e126"}.glyphicon-hand-right:before{content:"\e127"}.glyphicon-hand-left:before{content:"\e128"}.glyphicon-hand-up:before{content:"\e129"}.glyphicon-hand-down:before{content:"\e130"}.glyphicon-circle-arrow-right:before{content:"\e131"}.glyphicon-circle-arrow-left:before{content:"\e132"}.glyphicon-circle-arrow-up:before{content:"\e133"}.glyphicon-circle-arrow-down:before{content:"\e134"}.glyphicon-globe:before{content:"\e135"}.glyphicon-wrench:before{content:"\e136"}.glyphicon-tasks:before{content:"\e137"}.glyphicon-filter:before{content:"\e138"}.glyphicon-briefcase:before{content:"\e139"}.glyphicon-fullscreen:before{content:"\e140"}.glyphicon-dashboard:before{content:"\e141"}.glyphicon-paperclip:before{content:"\e142"}.glyphicon-heart-empty:before{content:"\e143"}.glyphicon-link:before{content:"\e144"}.glyphicon-phone:before{content:"\e145"}.glyphicon-pushpin:before{content:"\e146"}.glyphicon-usd:before{content:"\e148"}.glyphicon-gbp:before{content:"\e149"}.glyphicon-sort:before{content:"\e150"}.glyphicon-sort-by-alphabet:before{content:"\e151"}.glyphicon-sort-by-alphabet-alt:before{content:"\e152"}.glyphicon-sort-by-order:before{content:"\e153"}.glyphicon-sort-by-order-alt:before{content:"\e154"}.glyphicon-sort-by-attributes:before{content:"\e155"}.glyphicon-sort-by-attributes-alt:before{content:"\e156"}.glyphicon-unchecked:before{content:"\e157"}.glyphicon-expand:before{content:"\e158"}.glyphicon-collapse-down:before{content:"\e159"}.glyphicon-collapse-up:before{content:"\e160"}.glyphicon-log-in:before{content:"\e161"}.glyphicon-flash:before{content:"\e162"}.glyphicon-log-out:before{content:"\e163"}.glyphicon-new-window:before{content:"\e164"}.glyphicon-record:before{content:"\e165"}.glyphicon-save:before{content:"\e166"}.glyphicon-open:before{content:"\e167"}.glyphicon-saved:before{content:"\e168"}.glyphicon-import:before{content:"\e169"}.glyphicon-export:before{content:"\e170"}.glyphicon-send:before{content:"\e171"}.glyphicon-floppy-disk:before{content:"\e172"}.glyphicon-floppy-saved:before{content:"\e173"}.glyphicon-floppy-remove:before{content:"\e174"}.glyphicon-floppy-save:before{content:"\e175"}.glyphicon-floppy-open:before{content:"\e176"}.glyphicon-credit-card:before{content:"\e177"}.glyphicon-transfer:before{content:"\e178"}.glyphicon-cutlery:before{content:"\e179"}.glyphicon-header:before{content:"\e180"}.glyphicon-compressed:before{content:"\e181"}.glyphicon-earphone:before{content:"\e182"}.glyphicon-phone-alt:before{content:"\e183"}.glyphicon-tower:before{content:"\e184"}.glyphicon-stats:before{content:"\e185"}.glyphicon-sd-video:before{content:"\e186"}.glyphicon-hd-video:before{content:"\e187"}.glyphicon-subtitles:before{content:"\e188"}.glyphicon-sound-stereo:before{content:"\e189"}.glyphicon-sound-dolby:before{content:"\e190"}.glyphicon-sound-5-1:before{content:"\e191"}.glyphicon-sound-6-1:before{content:"\e192"}.glyphicon-sound-7-1:before{content:"\e193"}.glyphicon-copyright-mark:before{content:"\e194"}.glyphicon-registration-mark:before{content:"\e195"}.glyphicon-cloud-download:before{content:"\e197"}.glyphicon-cloud-upload:before{content:"\e198"}.glyphicon-tree-conifer:before{content:"\e199"}.glyphicon-tree-deciduous:before{content:"\e200"}.glyphicon-cd:before{content:"\e201"}.glyphicon-save-file:before{content:"\e202"}.glyphicon-open-file:before{content:"\e203"}.glyphicon-level-up:before{content:"\e204"}.glyphicon-copy:before{content:"\e205"}.glyphicon-paste:before{content:"\e206"}.glyphicon-alert:before{content:"\e209"}.glyphicon-equalizer:before{content:"\e210"}.glyphicon-king:before{content:"\e211"}.glyphicon-queen:before{content:"\e212"}.glyphicon-pawn:before{content:"\e213"}.glyphicon-bishop:before{content:"\e214"}.glyphicon-knight:before{content:"\e215"}.glyphicon-baby-formula:before{content:"\e216"}.glyphicon-tent:before{content:"\26fa"}.glyphicon-blackboard:before{content:"\e218"}.glyphicon-bed:before{content:"\e219"}.glyphicon-apple:before{content:"\f8ff"}.glyphicon-erase:before{content:"\e221"}.glyphicon-hourglass:before{content:"\231b"}.glyphicon-lamp:before{content:"\e223"}.glyphicon-duplicate:before{content:"\e224"}.glyphicon-piggy-bank:before{content:"\e225"}.glyphicon-scissors:before{content:"\e226"}.glyphicon-bitcoin:before{content:"\e227"}.glyphicon-btc:before{content:"\e227"}.glyphicon-xbt:before{content:"\e227"}.glyphicon-yen:before{content:"\00a5"}.glyphicon-jpy:before{content:"\00a5"}.glyphicon-ruble:before{content:"\20bd"}.glyphicon-rub:before{content:"\20bd"}.glyphicon-scale:before{content:"\e230"}.glyphicon-ice-lolly:before{content:"\e231"}.glyphicon-ice-lolly-tasted:before{content:"\e232"}.glyphicon-education:before{content:"\e233"}.glyphicon-option-horizontal:before{content:"\e234"}.glyphicon-option-vertical:before{content:"\e235"}.glyphicon-menu-hamburger:before{content:"\e236"}.glyphicon-modal-window:before{content:"\e237"}.glyphicon-oil:before{content:"\e238"}.glyphicon-grain:before{content:"\e239"}.glyphicon-sunglasses:before{content:"\e240"}.glyphicon-text-size:before{content:"\e241"}.glyphicon-text-color:before{content:"\e242"}.glyphicon-text-background:before{content:"\e243"}.glyphicon-object-align-top:before{content:"\e244"}.glyphicon-object-align-bottom:before{content:"\e245"}.glyphicon-object-align-horizontal:before{content:"\e246"}.glyphicon-object-align-left:before{content:"\e247"}.glyphicon-object-align-vertical:before{content:"\e248"}.glyphicon-object-align-right:before{content:"\e249"}.glyphicon-triangle-right:before{content:"\e250"}.glyphicon-triangle-left:before{content:"\e251"}.glyphicon-triangle-bottom:before{content:"\e252"}.glyphicon-triangle-top:before{content:"\e253"}.glyphicon-console:before{content:"\e254"}.glyphicon-superscript:before{content:"\e255"}.glyphicon-subscript:before{content:"\e256"}.glyphicon-menu-left:before{content:"\e257"}.glyphicon-menu-right:before{content:"\e258"}.glyphicon-menu-down:before{content:"\e259"}.glyphicon-menu-up:before{content:"\e260"}*{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}:after,:before{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}html{font-size:10px;-webkit-tap-highlight-color:rgba(0,0,0,0)}body{font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-size:14px;line-height:1.42857143;color:#333;background-color:#fff}button,input,select,textarea{font-family:inherit;font-size:inherit;line-height:inherit}a{color:#337ab7;text-decoration:none}a:focus,a:hover{color:#23527c;text-decoration:underline}a:focus{outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}figure{margin:0}img{vertical-align:middle}.carousel-inner>.item>a>img,.carousel-inner>.item>img,.img-responsive,.thumbnail a>img,.thumbnail>img{display:block;max-width:100%;height:auto}.img-rounded{border-radius:6px}.img-thumbnail{display:inline-block;max-width:100%;height:auto;padding:4px;line-height:1.42857143;background-color:#fff;border:1px solid #ddd;border-radius:4px;-webkit-transition:all .2s ease-in-out;-o-transition:all .2s ease-in-out;transition:all .2s ease-in-out}.img-circle{border-radius:50%}hr{margin-top:20px;margin-bottom:20px;border:0;border-top:1px solid #eee}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);border:0}.sr-only-focusable:active,.sr-only-focusable:focus{position:static;width:auto;height:auto;margin:0;overflow:visible;clip:auto}[role=button]{cursor:pointer}.h1,.h2,.h3,.h4,.h5,.h6,h1,h2,h3,h4,h5,h6{font-family:inherit;font-weight:500;line-height:1.1;color:inherit}.h1 .small,.h1 small,.h2 .small,.h2 small,.h3 .small,.h3 small,.h4 .small,.h4 small,.h5 .small,.h5 small,.h6 .small,.h6 small,h1 .small,h1 small,h2 .small,h2 small,h3 .small,h3 small,h4 .small,h4 small,h5 .small,h5 small,h6 .small,h6 small{font-weight:400;line-height:1;color:#777}.h1,.h2,.h3,h1,h2,h3{margin-top:20px;margin-bottom:10px}.h1 .small,.h1 small,.h2 .small,.h2 small,.h3 .small,.h3 small,h1 .small,h1 small,h2 .small,h2 small,h3 .small,h3 small{font-size:65%}.h4,.h5,.h6,h4,h5,h6{margin-top:10px;margin-bottom:10px}.h4 .small,.h4 small,.h5 .small,.h5 small,.h6 .small,.h6 small,h4 .small,h4 small,h5 .small,h5 small,h6 .small,h6 small{font-size:75%}.h1,h1{font-size:36px}.h2,h2{font-size:30px}.h3,h3{font-size:24px}.h4,h4{font-size:18px}.h5,h5{font-size:14px}.h6,h6{font-size:12px}p{margin:0 0 10px}.lead{margin-bottom:20px;font-size:16px;font-weight:300;line-height:1.4}@media (min-width:768px){.lead{font-size:21px}}.small,small{font-size:85%}.mark,mark{padding:.2em;background-color:#fcf8e3}.text-left{text-align:left}.text-right{text-align:right}.text-center{text-align:center}.text-justify{text-align:justify}.text-nowrap{white-space:nowrap}.text-lowercase{text-transform:lowercase}.text-uppercase{text-transform:uppercase}.text-capitalize{text-transform:capitalize}.text-muted{color:#777}.text-primary{color:#337ab7}a.text-primary:focus,a.text-primary:hover{color:#286090}.text-success{color:#3c763d}a.text-success:focus,a.text-success:hover{color:#2b542c}.text-info{color:#31708f}a.text-info:focus,a.text-info:hover{color:#245269}.text-warning{color:#8a6d3b}a.text-warning:focus,a.text-warning:hover{color:#66512c}.text-danger{color:#a94442}a.text-danger:focus,a.text-danger:hover{color:#843534}.bg-primary{color:#fff;background-color:#337ab7}a.bg-primary:focus,a.bg-primary:hover{background-color:#286090}.bg-success{background-color:#dff0d8}a.bg-success:focus,a.bg-success:hover{background-color:#c1e2b3}.bg-info{background-color:#d9edf7}a.bg-info:focus,a.bg-info:hover{background-color:#afd9ee}.bg-warning{background-color:#fcf8e3}a.bg-warning:focus,a.bg-warning:hover{background-color:#f7ecb5}.bg-danger{background-color:#f2dede}a.bg-danger:focus,a.bg-danger:hover{background-color:#e4b9b9}.page-header{padding-bottom:9px;margin:40px 0 20px;border-bottom:1px solid #eee}ol,ul{margin-top:0;margin-bottom:10px}ol ol,ol ul,ul ol,ul ul{margin-bottom:0}.list-unstyled{padding-left:0;list-style:none}.list-inline{padding-left:0;margin-left:-5px;list-style:none}.list-inline>li{display:inline-block;padding-right:5px;padding-left:5px}dl{margin-top:0;margin-bottom:20px}dd,dt{line-height:1.42857143}dt{font-weight:700}dd{margin-left:0}@media (min-width:768px){.dl-horizontal dt{float:left;width:160px;overflow:hidden;clear:left;text-align:right;text-overflow:ellipsis;white-space:nowrap}.dl-horizontal dd{margin-left:180px}}abbr[data-original-title],abbr[title]{cursor:help;border-bottom:1px dotted #777}.initialism{font-size:90%;text-transform:uppercase}blockquote{padding:10px 20px;margin:0 0 20px;font-size:17.5px;border-left:5px solid #eee}blockquote ol:last-child,blockquote p:last-child,blockquote ul:last-child{margin-bottom:0}blockquote .small,blockquote footer,blockquote small{display:block;font-size:80%;line-height:1.42857143;color:#777}blockquote .small:before,blockquote footer:before,blockquote small:before{content:'\2014 \00A0'}.blockquote-reverse,blockquote.pull-right{padding-right:15px;padding-left:0;text-align:right;border-right:5px solid #eee;border-left:0}.blockquote-reverse .small:before,.blockquote-reverse footer:before,.blockquote-reverse small:before,blockquote.pull-right .small:before,blockquote.pull-right footer:before,blockquote.pull-right small:before{content:''}.blockquote-reverse .small:after,.blockquote-reverse footer:after,.blockquote-reverse small:after,blockquote.pull-right .small:after,blockquote.pull-right footer:after,blockquote.pull-right small:after{content:'\00A0 \2014'}address{margin-bottom:20px;font-style:normal;line-height:1.42857143}code,kbd,pre,samp{font-family:Menlo,Monaco,Consolas,"Courier New",monospace}code{padding:2px 4px;font-size:90%;color:#c7254e;background-color:#f9f2f4;border-radius:4px}kbd{padding:2px 4px;font-size:90%;color:#fff;background-color:#333;border-radius:3px;-webkit-box-shadow:inset 0 -1px 0 rgba(0,0,0,.25);box-shadow:inset 0 -1px 0 rgba(0,0,0,.25)}kbd kbd{padding:0;font-size:100%;font-weight:700;-webkit-box-shadow:none;box-shadow:none}pre{display:block;padding:9.5px;margin:0 0 10px;font-size:13px;line-height:1.42857143;color:#333;word-break:break-all;word-wrap:break-word;background-color:#f5f5f5;border:1px solid #ccc;border-radius:4px}pre code{padding:0;font-size:inherit;color:inherit;white-space:pre-wrap;background-color:transparent;border-radius:0}.pre-scrollable{max-height:340px;overflow-y:scroll}.container{padding-right:15px;padding-left:15px;margin-right:auto;margin-left:auto}@media (min-width:768px){.container{width:750px}}@media (min-width:992px){.container{width:970px}}@media (min-width:1200px){.container{width:1170px}}.container-fluid{padding-right:15px;padding-left:15px;margin-right:auto;margin-left:auto}.row{margin-right:-15px;margin-left:-15px}.col-lg-1,.col-lg-10,.col-lg-11,.col-lg-12,.col-lg-2,.col-lg-3,.col-lg-4,.col-lg-5,.col-lg-6,.col-lg-7,.col-lg-8,.col-lg-9,.col-md-1,.col-md-10,.col-md-11,.col-md-12,.col-md-2,.col-md-3,.col-md-4,.col-md-5,.col-md-6,.col-md-7,.col-md-8,.col-md-9,.col-sm-1,.col-sm-10,.col-sm-11,.col-sm-12,.col-sm-2,.col-sm-3,.col-sm-4,.col-sm-5,.col-sm-6,.col-sm-7,.col-sm-8,.col-sm-9,.col-xs-1,.col-xs-10,.col-xs-11,.col-xs-12,.col-xs-2,.col-xs-3,.col-xs-4,.col-xs-5,.col-xs-6,.col-xs-7,.col-xs-8,.col-xs-9{position:relative;min-height:1px;padding-right:15px;padding-left:15px}.col-xs-1,.col-xs-10,.col-xs-11,.col-xs-12,.col-xs-2,.col-xs-3,.col-xs-4,.col-xs-5,.col-xs-6,.col-xs-7,.col-xs-8,.col-xs-9{float:left}.col-xs-12{width:100%}.col-xs-11{width:91.66666667%}.col-xs-10{width:83.33333333%}.col-xs-9{width:75%}.col-xs-8{width:66.66666667%}.col-xs-7{width:58.33333333%}.col-xs-6{width:50%}.col-xs-5{width:41.66666667%}.col-xs-4{width:33.33333333%}.col-xs-3{width:25%}.col-xs-2{width:16.66666667%}.col-xs-1{width:8.33333333%}.col-xs-pull-12{right:100%}.col-xs-pull-11{right:91.66666667%}.col-xs-pull-10{right:83.33333333%}.col-xs-pull-9{right:75%}.col-xs-pull-8{right:66.66666667%}.col-xs-pull-7{right:58.33333333%}.col-xs-pull-6{right:50%}.col-xs-pull-5{right:41.66666667%}.col-xs-pull-4{right:33.33333333%}.col-xs-pull-3{right:25%}.col-xs-pull-2{right:16.66666667%}.col-xs-pull-1{right:8.33333333%}.col-xs-pull-0{right:auto}.col-xs-push-12{left:100%}.col-xs-push-11{left:91.66666667%}.col-xs-push-10{left:83.33333333%}.col-xs-push-9{left:75%}.col-xs-push-8{left:66.66666667%}.col-xs-push-7{left:58.33333333%}.col-xs-push-6{left:50%}.col-xs-push-5{left:41.66666667%}.col-xs-push-4{left:33.33333333%}.col-xs-push-3{left:25%}.col-xs-push-2{left:16.66666667%}.col-xs-push-1{left:8.33333333%}.col-xs-push-0{left:auto}.col-xs-offset-12{margin-left:100%}.col-xs-offset-11{margin-left:91.66666667%}.col-xs-offset-10{margin-left:83.33333333%}.col-xs-offset-9{margin-left:75%}.col-xs-offset-8{margin-left:66.66666667%}.col-xs-offset-7{margin-left:58.33333333%}.col-xs-offset-6{margin-left:50%}.col-xs-offset-5{margin-left:41.66666667%}.col-xs-offset-4{margin-left:33.33333333%}.col-xs-offset-3{margin-left:25%}.col-xs-offset-2{margin-left:16.66666667%}.col-xs-offset-1{margin-left:8.33333333%}.col-xs-offset-0{margin-left:0}@media (min-width:768px){.col-sm-1,.col-sm-10,.col-sm-11,.col-sm-12,.col-sm-2,.col-sm-3,.col-sm-4,.col-sm-5,.col-sm-6,.col-sm-7,.col-sm-8,.col-sm-9{float:left}.col-sm-12{width:100%}.col-sm-11{width:91.66666667%}.col-sm-10{width:83.33333333%}.col-sm-9{width:75%}.col-sm-8{width:66.66666667%}.col-sm-7{width:58.33333333%}.col-sm-6{width:50%}.col-sm-5{width:41.66666667%}.col-sm-4{width:33.33333333%}.col-sm-3{width:25%}.col-sm-2{width:16.66666667%}.col-sm-1{width:8.33333333%}.col-sm-pull-12{right:100%}.col-sm-pull-11{right:91.66666667%}.col-sm-pull-10{right:83.33333333%}.col-sm-pull-9{right:75%}.col-sm-pull-8{right:66.66666667%}.col-sm-pull-7{right:58.33333333%}.col-sm-pull-6{right:50%}.col-sm-pull-5{right:41.66666667%}.col-sm-pull-4{right:33.33333333%}.col-sm-pull-3{right:25%}.col-sm-pull-2{right:16.66666667%}.col-sm-pull-1{right:8.33333333%}.col-sm-pull-0{right:auto}.col-sm-push-12{left:100%}.col-sm-push-11{left:91.66666667%}.col-sm-push-10{left:83.33333333%}.col-sm-push-9{left:75%}.col-sm-push-8{left:66.66666667%}.col-sm-push-7{left:58.33333333%}.col-sm-push-6{left:50%}.col-sm-push-5{left:41.66666667%}.col-sm-push-4{left:33.33333333%}.col-sm-push-3{left:25%}.col-sm-push-2{left:16.66666667%}.col-sm-push-1{left:8.33333333%}.col-sm-push-0{left:auto}.col-sm-offset-12{margin-left:100%}.col-sm-offset-11{margin-left:91.66666667%}.col-sm-offset-10{margin-left:83.33333333%}.col-sm-offset-9{margin-left:75%}.col-sm-offset-8{margin-left:66.66666667%}.col-sm-offset-7{margin-left:58.33333333%}.col-sm-offset-6{margin-left:50%}.col-sm-offset-5{margin-left:41.66666667%}.col-sm-offset-4{margin-left:33.33333333%}.col-sm-offset-3{margin-left:25%}.col-sm-offset-2{margin-left:16.66666667%}.col-sm-offset-1{margin-left:8.33333333%}.col-sm-offset-0{margin-left:0}}@media (min-width:992px){.col-md-1,.col-md-10,.col-md-11,.col-md-12,.col-md-2,.col-md-3,.col-md-4,.col-md-5,.col-md-6,.col-md-7,.col-md-8,.col-md-9{float:left}.col-md-12{width:100%}.col-md-11{width:91.66666667%}.col-md-10{width:83.33333333%}.col-md-9{width:75%}.col-md-8{width:66.66666667%}.col-md-7{width:58.33333333%}.col-md-6{width:50%}.col-md-5{width:41.66666667%}.col-md-4{width:33.33333333%}.col-md-3{width:25%}.col-md-2{width:16.66666667%}.col-md-1{width:8.33333333%}.col-md-pull-12{right:100%}.col-md-pull-11{right:91.66666667%}.col-md-pull-10{right:83.33333333%}.col-md-pull-9{right:75%}.col-md-pull-8{right:66.66666667%}.col-md-pull-7{right:58.33333333%}.col-md-pull-6{right:50%}.col-md-pull-5{right:41.66666667%}.col-md-pull-4{right:33.33333333%}.col-md-pull-3{right:25%}.col-md-pull-2{right:16.66666667%}.col-md-pull-1{right:8.33333333%}.col-md-pull-0{right:auto}.col-md-push-12{left:100%}.col-md-push-11{left:91.66666667%}.col-md-push-10{left:83.33333333%}.col-md-push-9{left:75%}.col-md-push-8{left:66.66666667%}.col-md-push-7{left:58.33333333%}.col-md-push-6{left:50%}.col-md-push-5{left:41.66666667%}.col-md-push-4{left:33.33333333%}.col-md-push-3{left:25%}.col-md-push-2{left:16.66666667%}.col-md-push-1{left:8.33333333%}.col-md-push-0{left:auto}.col-md-offset-12{margin-left:100%}.col-md-offset-11{margin-left:91.66666667%}.col-md-offset-10{margin-left:83.33333333%}.col-md-offset-9{margin-left:75%}.col-md-offset-8{margin-left:66.66666667%}.col-md-offset-7{margin-left:58.33333333%}.col-md-offset-6{margin-left:50%}.col-md-offset-5{margin-left:41.66666667%}.col-md-offset-4{margin-left:33.33333333%}.col-md-offset-3{margin-left:25%}.col-md-offset-2{margin-left:16.66666667%}.col-md-offset-1{margin-left:8.33333333%}.col-md-offset-0{margin-left:0}}@media (min-width:1200px){.col-lg-1,.col-lg-10,.col-lg-11,.col-lg-12,.col-lg-2,.col-lg-3,.col-lg-4,.col-lg-5,.col-lg-6,.col-lg-7,.col-lg-8,.col-lg-9{float:left}.col-lg-12{width:100%}.col-lg-11{width:91.66666667%}.col-lg-10{width:83.33333333%}.col-lg-9{width:75%}.col-lg-8{width:66.66666667%}.col-lg-7{width:58.33333333%}.col-lg-6{width:50%}.col-lg-5{width:41.66666667%}.col-lg-4{width:33.33333333%}.col-lg-3{width:25%}.col-lg-2{width:16.66666667%}.col-lg-1{width:8.33333333%}.col-lg-pull-12{right:100%}.col-lg-pull-11{right:91.66666667%}.col-lg-pull-10{right:83.33333333%}.col-lg-pull-9{right:75%}.col-lg-pull-8{right:66.66666667%}.col-lg-pull-7{right:58.33333333%}.col-lg-pull-6{right:50%}.col-lg-pull-5{right:41.66666667%}.col-lg-pull-4{right:33.33333333%}.col-lg-pull-3{right:25%}.col-lg-pull-2{right:16.66666667%}.col-lg-pull-1{right:8.33333333%}.col-lg-pull-0{right:auto}.col-lg-push-12{left:100%}.col-lg-push-11{left:91.66666667%}.col-lg-push-10{left:83.33333333%}.col-lg-push-9{left:75%}.col-lg-push-8{left:66.66666667%}.col-lg-push-7{left:58.33333333%}.col-lg-push-6{left:50%}.col-lg-push-5{left:41.66666667%}.col-lg-push-4{left:33.33333333%}.col-lg-push-3{left:25%}.col-lg-push-2{left:16.66666667%}.col-lg-push-1{left:8.33333333%}.col-lg-push-0{left:auto}.col-lg-offset-12{margin-left:100%}.col-lg-offset-11{margin-left:91.66666667%}.col-lg-offset-10{margin-left:83.33333333%}.col-lg-offset-9{margin-left:75%}.col-lg-offset-8{margin-left:66.66666667%}.col-lg-offset-7{margin-left:58.33333333%}.col-lg-offset-6{margin-left:50%}.col-lg-offset-5{margin-left:41.66666667%}.col-lg-offset-4{margin-left:33.33333333%}.col-lg-offset-3{margin-left:25%}.col-lg-offset-2{margin-left:16.66666667%}.col-lg-offset-1{margin-left:8.33333333%}.col-lg-offset-0{margin-left:0}}table{background-color:transparent}caption{padding-top:8px;padding-bottom:8px;color:#777;text-align:left}th{text-align:left}.table{width:100%;max-width:100%;margin-bottom:20px}.table>tbody>tr>td,.table>tbody>tr>th,.table>tfoot>tr>td,.table>tfoot>tr>th,.table>thead>tr>td,.table>thead>tr>th{padding:8px;line-height:1.42857143;vertical-align:top;border-top:1px solid #ddd}.table>thead>tr>th{vertical-align:bottom;border-bottom:2px solid #ddd}.table>caption+thead>tr:first-child>td,.table>caption+thead>tr:first-child>th,.table>colgroup+thead>tr:first-child>td,.table>colgroup+thead>tr:first-child>th,.table>thead:first-child>tr:first-child>td,.table>thead:first-child>tr:first-child>th{border-top:0}.table>tbody+tbody{border-top:2px solid #ddd}.table .table{background-color:#fff}.table-condensed>tbody>tr>td,.table-condensed>tbody>tr>th,.table-condensed>tfoot>tr>td,.table-condensed>tfoot>tr>th,.table-condensed>thead>tr>td,.table-condensed>thead>tr>th{padding:5px}.table-bordered{border:1px solid #ddd}.table-bordered>tbody>tr>td,.table-bordered>tbody>tr>th,.table-bordered>tfoot>tr>td,.table-bordered>tfoot>tr>th,.table-bordered>thead>tr>td,.table-bordered>thead>tr>th{border:1px solid #ddd}.table-bordered>thead>tr>td,.table-bordered>thead>tr>th{border-bottom-width:2px}.table-striped>tbody>tr:nth-of-type(odd){background-color:#f9f9f9}.table-hover>tbody>tr:hover{background-color:#f5f5f5}table col[class*=col-]{position:static;display:table-column;float:none}table td[class*=col-],table th[class*=col-]{position:static;display:table-cell;float:none}.table>tbody>tr.active>td,.table>tbody>tr.active>th,.table>tbody>tr>td.active,.table>tbody>tr>th.active,.table>tfoot>tr.active>td,.table>tfoot>tr.active>th,.table>tfoot>tr>td.active,.table>tfoot>tr>th.active,.table>thead>tr.active>td,.table>thead>tr.active>th,.table>thead>tr>td.active,.table>thead>tr>th.active{background-color:#f5f5f5}.table-hover>tbody>tr.active:hover>td,.table-hover>tbody>tr.active:hover>th,.table-hover>tbody>tr:hover>.active,.table-hover>tbody>tr>td.active:hover,.table-hover>tbody>tr>th.active:hover{background-color:#e8e8e8}.table>tbody>tr.success>td,.table>tbody>tr.success>th,.table>tbody>tr>td.success,.table>tbody>tr>th.success,.table>tfoot>tr.success>td,.table>tfoot>tr.success>th,.table>tfoot>tr>td.success,.table>tfoot>tr>th.success,.table>thead>tr.success>td,.table>thead>tr.success>th,.table>thead>tr>td.success,.table>thead>tr>th.success{background-color:#dff0d8}.table-hover>tbody>tr.success:hover>td,.table-hover>tbody>tr.success:hover>th,.table-hover>tbody>tr:hover>.success,.table-hover>tbody>tr>td.success:hover,.table-hover>tbody>tr>th.success:hover{background-color:#d0e9c6}.table>tbody>tr.info>td,.table>tbody>tr.info>th,.table>tbody>tr>td.info,.table>tbody>tr>th.info,.table>tfoot>tr.info>td,.table>tfoot>tr.info>th,.table>tfoot>tr>td.info,.table>tfoot>tr>th.info,.table>thead>tr.info>td,.table>thead>tr.info>th,.table>thead>tr>td.info,.table>thead>tr>th.info{background-color:#d9edf7}.table-hover>tbody>tr.info:hover>td,.table-hover>tbody>tr.info:hover>th,.table-hover>tbody>tr:hover>.info,.table-hover>tbody>tr>td.info:hover,.table-hover>tbody>tr>th.info:hover{background-color:#c4e3f3}.table>tbody>tr.warning>td,.table>tbody>tr.warning>th,.table>tbody>tr>td.warning,.table>tbody>tr>th.warning,.table>tfoot>tr.warning>td,.table>tfoot>tr.warning>th,.table>tfoot>tr>td.warning,.table>tfoot>tr>th.warning,.table>thead>tr.warning>td,.table>thead>tr.warning>th,.table>thead>tr>td.warning,.table>thead>tr>th.warning{background-color:#fcf8e3}.table-hover>tbody>tr.warning:hover>td,.table-hover>tbody>tr.warning:hover>th,.table-hover>tbody>tr:hover>.warning,.table-hover>tbody>tr>td.warning:hover,.table-hover>tbody>tr>th.warning:hover{background-color:#faf2cc}.table>tbody>tr.danger>td,.table>tbody>tr.danger>th,.table>tbody>tr>td.danger,.table>tbody>tr>th.danger,.table>tfoot>tr.danger>td,.table>tfoot>tr.danger>th,.table>tfoot>tr>td.danger,.table>tfoot>tr>th.danger,.table>thead>tr.danger>td,.table>thead>tr.danger>th,.table>thead>tr>td.danger,.table>thead>tr>th.danger{background-color:#f2dede}.table-hover>tbody>tr.danger:hover>td,.table-hover>tbody>tr.danger:hover>th,.table-hover>tbody>tr:hover>.danger,.table-hover>tbody>tr>td.danger:hover,.table-hover>tbody>tr>th.danger:hover{background-color:#ebcccc}.table-responsive{min-height:.01%;overflow-x:auto}@media screen and (max-width:767px){.table-responsive{width:100%;margin-bottom:15px;overflow-y:hidden;-ms-overflow-style:-ms-autohiding-scrollbar;border:1px solid #ddd}.table-responsive>.table{margin-bottom:0}.table-responsive>.table>tbody>tr>td,.table-responsive>.table>tbody>tr>th,.table-responsive>.table>tfoot>tr>td,.table-responsive>.table>tfoot>tr>th,.table-responsive>.table>thead>tr>td,.table-responsive>.table>thead>tr>th{white-space:nowrap}.table-responsive>.table-bordered{border:0}.table-responsive>.table-bordered>tbody>tr>td:first-child,.table-responsive>.table-bordered>tbody>tr>th:first-child,.table-responsive>.table-bordered>tfoot>tr>td:first-child,.table-responsive>.table-bordered>tfoot>tr>th:first-child,.table-responsive>.table-bordered>thead>tr>td:first-child,.table-responsive>.table-bordered>thead>tr>th:first-child{border-left:0}.table-responsive>.table-bordered>tbody>tr>td:last-child,.table-responsive>.table-bordered>tbody>tr>th:last-child,.table-responsive>.table-bordered>tfoot>tr>td:last-child,.table-responsive>.table-bordered>tfoot>tr>th:last-child,.table-responsive>.table-bordered>thead>tr>td:last-child,.table-responsive>.table-bordered>thead>tr>th:last-child{border-right:0}.table-responsive>.table-bordered>tbody>tr:last-child>td,.table-responsive>.table-bordered>tbody>tr:last-child>th,.table-responsive>.table-bordered>tfoot>tr:last-child>td,.table-responsive>.table-bordered>tfoot>tr:last-child>th{border-bottom:0}}fieldset{min-width:0;padding:0;margin:0;border:0}legend{display:block;width:100%;padding:0;margin-bottom:20px;font-size:21px;line-height:inherit;color:#333;border:0;border-bottom:1px solid #e5e5e5}label{display:inline-block;max-width:100%;margin-bottom:5px;font-weight:700}input[type=search]{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}input[type=checkbox],input[type=radio]{margin:4px 0 0;margin-top:1px\9;line-height:normal}input[type=file]{display:block}input[type=range]{display:block;width:100%}select[multiple],select[size]{height:auto}input[type=file]:focus,input[type=checkbox]:focus,input[type=radio]:focus{outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}output{display:block;padding-top:7px;font-size:14px;line-height:1.42857143;color:#555}.form-control{display:block;width:100%;height:34px;padding:6px 12px;font-size:14px;line-height:1.42857143;color:#555;background-color:#fff;background-image:none;border:1px solid #ccc;border-radius:4px;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075);box-shadow:inset 0 1px 1px rgba(0,0,0,.075);-webkit-transition:border-color ease-in-out .15s,-webkit-box-shadow ease-in-out .15s;-o-transition:border-color ease-in-out .15s,box-shadow ease-in-out .15s;transition:border-color ease-in-out .15s,box-shadow ease-in-out .15s}.form-control:focus{border-color:#66afe9;outline:0;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 8px rgba(102,175,233,.6);box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 8px rgba(102,175,233,.6)}.form-control::-moz-placeholder{color:#999;opacity:1}.form-control:-ms-input-placeholder{color:#999}.form-control::-webkit-input-placeholder{color:#999}.form-control::-ms-expand{background-color:transparent;border:0}.form-control[disabled],.form-control[readonly],fieldset[disabled] .form-control{background-color:#eee;opacity:1}.form-control[disabled],fieldset[disabled] .form-control{cursor:not-allowed}textarea.form-control{height:auto}input[type=search]{-webkit-appearance:none}@media screen and (-webkit-min-device-pixel-ratio:0){input[type=date].form-control,input[type=time].form-control,input[type=datetime-local].form-control,input[type=month].form-control{line-height:34px}.input-group-sm input[type=date],.input-group-sm input[type=time],.input-group-sm input[type=datetime-local],.input-group-sm input[type=month],input[type=date].input-sm,input[type=time].input-sm,input[type=datetime-local].input-sm,input[type=month].input-sm{line-height:30px}.input-group-lg input[type=date],.input-group-lg input[type=time],.input-group-lg input[type=datetime-local],.input-group-lg input[type=month],input[type=date].input-lg,input[type=time].input-lg,input[type=datetime-local].input-lg,input[type=month].input-lg{line-height:46px}}.form-group{margin-bottom:15px}.checkbox,.radio{position:relative;display:block;margin-top:10px;margin-bottom:10px}.checkbox label,.radio label{min-height:20px;padding-left:20px;margin-bottom:0;font-weight:400;cursor:pointer}.checkbox input[type=checkbox],.checkbox-inline input[type=checkbox],.radio input[type=radio],.radio-inline input[type=radio]{position:absolute;margin-top:4px\9;margin-left:-20px}.checkbox+.checkbox,.radio+.radio{margin-top:-5px}.checkbox-inline,.radio-inline{position:relative;display:inline-block;padding-left:20px;margin-bottom:0;font-weight:400;vertical-align:middle;cursor:pointer}.checkbox-inline+.checkbox-inline,.radio-inline+.radio-inline{margin-top:0;margin-left:10px}fieldset[disabled] input[type=checkbox],fieldset[disabled] input[type=radio],input[type=checkbox].disabled,input[type=checkbox][disabled],input[type=radio].disabled,input[type=radio][disabled]{cursor:not-allowed}.checkbox-inline.disabled,.radio-inline.disabled,fieldset[disabled] .checkbox-inline,fieldset[disabled] .radio-inline{cursor:not-allowed}.checkbox.disabled label,.radio.disabled label,fieldset[disabled] .checkbox label,fieldset[disabled] .radio label{cursor:not-allowed}.form-control-static{min-height:34px;padding-top:7px;padding-bottom:7px;margin-bottom:0}.form-control-static.input-lg,.form-control-static.input-sm{padding-right:0;padding-left:0}.input-sm{height:30px;padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}select.input-sm{height:30px;line-height:30px}select[multiple].input-sm,textarea.input-sm{height:auto}.form-group-sm .form-control{height:30px;padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}.form-group-sm select.form-control{height:30px;line-height:30px}.form-group-sm select[multiple].form-control,.form-group-sm textarea.form-control{height:auto}.form-group-sm .form-control-static{height:30px;min-height:32px;padding:6px 10px;font-size:12px;line-height:1.5}.input-lg{height:46px;padding:10px 16px;font-size:18px;line-height:1.3333333;border-radius:6px}select.input-lg{height:46px;line-height:46px}select[multiple].input-lg,textarea.input-lg{height:auto}.form-group-lg .form-control{height:46px;padding:10px 16px;font-size:18px;line-height:1.3333333;border-radius:6px}.form-group-lg select.form-control{height:46px;line-height:46px}.form-group-lg select[multiple].form-control,.form-group-lg textarea.form-control{height:auto}.form-group-lg .form-control-static{height:46px;min-height:38px;padding:11px 16px;font-size:18px;line-height:1.3333333}.has-feedback{position:relative}.has-feedback .form-control{padding-right:42.5px}.form-control-feedback{position:absolute;top:0;right:0;z-index:2;display:block;width:34px;height:34px;line-height:34px;text-align:center;pointer-events:none}.form-group-lg .form-control+.form-control-feedback,.input-group-lg+.form-control-feedback,.input-lg+.form-control-feedback{width:46px;height:46px;line-height:46px}.form-group-sm .form-control+.form-control-feedback,.input-group-sm+.form-control-feedback,.input-sm+.form-control-feedback{width:30px;height:30px;line-height:30px}.has-success .checkbox,.has-success .checkbox-inline,.has-success .control-label,.has-success .help-block,.has-success .radio,.has-success .radio-inline,.has-success.checkbox label,.has-success.checkbox-inline label,.has-success.radio label,.has-success.radio-inline label{color:#3c763d}.has-success .form-control{border-color:#3c763d;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075);box-shadow:inset 0 1px 1px rgba(0,0,0,.075)}.has-success .form-control:focus{border-color:#2b542c;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #67b168;box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #67b168}.has-success .input-group-addon{color:#3c763d;background-color:#dff0d8;border-color:#3c763d}.has-success .form-control-feedback{color:#3c763d}.has-warning .checkbox,.has-warning .checkbox-inline,.has-warning .control-label,.has-warning .help-block,.has-warning .radio,.has-warning .radio-inline,.has-warning.checkbox label,.has-warning.checkbox-inline label,.has-warning.radio label,.has-warning.radio-inline label{color:#8a6d3b}.has-warning .form-control{border-color:#8a6d3b;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075);box-shadow:inset 0 1px 1px rgba(0,0,0,.075)}.has-warning .form-control:focus{border-color:#66512c;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #c0a16b;box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #c0a16b}.has-warning .input-group-addon{color:#8a6d3b;background-color:#fcf8e3;border-color:#8a6d3b}.has-warning .form-control-feedback{color:#8a6d3b}.has-error .checkbox,.has-error .checkbox-inline,.has-error .control-label,.has-error .help-block,.has-error .radio,.has-error .radio-inline,.has-error.checkbox label,.has-error.checkbox-inline label,.has-error.radio label,.has-error.radio-inline label{color:#a94442}.has-error .form-control{border-color:#a94442;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075);box-shadow:inset 0 1px 1px rgba(0,0,0,.075)}.has-error .form-control:focus{border-color:#843534;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #ce8483;box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #ce8483}.has-error .input-group-addon{color:#a94442;background-color:#f2dede;border-color:#a94442}.has-error .form-control-feedback{color:#a94442}.has-feedback label~.form-control-feedback{top:25px}.has-feedback label.sr-only~.form-control-feedback{top:0}.help-block{display:block;margin-top:5px;margin-bottom:10px;color:#737373}@media (min-width:768px){.form-inline .form-group{display:inline-block;margin-bottom:0;vertical-align:middle}.form-inline .form-control{display:inline-block;width:auto;vertical-align:middle}.form-inline .form-control-static{display:inline-block}.form-inline .input-group{display:inline-table;vertical-align:middle}.form-inline .input-group .form-control,.form-inline .input-group .input-group-addon,.form-inline .input-group .input-group-btn{width:auto}.form-inline .input-group>.form-control{width:100%}.form-inline .control-label{margin-bottom:0;vertical-align:middle}.form-inline .checkbox,.form-inline .radio{display:inline-block;margin-top:0;margin-bottom:0;vertical-align:middle}.form-inline .checkbox label,.form-inline .radio label{padding-left:0}.form-inline .checkbox input[type=checkbox],.form-inline .radio input[type=radio]{position:relative;margin-left:0}.form-inline .has-feedback .form-control-feedback{top:0}}.form-horizontal .checkbox,.form-horizontal .checkbox-inline,.form-horizontal .radio,.form-horizontal .radio-inline{padding-top:7px;margin-top:0;margin-bottom:0}.form-horizontal .checkbox,.form-horizontal .radio{min-height:27px}.form-horizontal .form-group{margin-right:-15px;margin-left:-15px}@media (min-width:768px){.form-horizontal .control-label{padding-top:7px;margin-bottom:0;text-align:right}}.form-horizontal .has-feedback .form-control-feedback{right:15px}@media (min-width:768px){.form-horizontal .form-group-lg .control-label{padding-top:11px;font-size:18px}}@media (min-width:768px){.form-horizontal .form-group-sm .control-label{padding-top:6px;font-size:12px}}.btn{display:inline-block;padding:6px 12px;margin-bottom:0;font-size:14px;font-weight:400;line-height:1.42857143;text-align:center;white-space:nowrap;vertical-align:middle;-ms-touch-action:manipulation;touch-action:manipulation;cursor:pointer;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;background-image:none;border:1px solid transparent;border-radius:4px}.btn.active.focus,.btn.active:focus,.btn.focus,.btn:active.focus,.btn:active:focus,.btn:focus{outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}.btn.focus,.btn:focus,.btn:hover{color:#333;text-decoration:none}.btn.active,.btn:active{background-image:none;outline:0;-webkit-box-shadow:inset 0 3px 5px rgba(0,0,0,.125);box-shadow:inset 0 3px 5px rgba(0,0,0,.125)}.btn.disabled,.btn[disabled],fieldset[disabled] .btn{cursor:not-allowed;filter:alpha(opacity=65);-webkit-box-shadow:none;box-shadow:none;opacity:.65}a.btn.disabled,fieldset[disabled] a.btn{pointer-events:none}.btn-default{color:#333;background-color:#fff;border-color:#ccc}.btn-default.focus,.btn-default:focus{color:#333;background-color:#e6e6e6;border-color:#8c8c8c}.btn-default:hover{color:#333;background-color:#e6e6e6;border-color:#adadad}.btn-default.active,.btn-default:active,.open>.dropdown-toggle.btn-default{color:#333;background-color:#e6e6e6;border-color:#adadad}.btn-default.active.focus,.btn-default.active:focus,.btn-default.active:hover,.btn-default:active.focus,.btn-default:active:focus,.btn-default:active:hover,.open>.dropdown-toggle.btn-default.focus,.open>.dropdown-toggle.btn-default:focus,.open>.dropdown-toggle.btn-default:hover{color:#333;background-color:#d4d4d4;border-color:#8c8c8c}.btn-default.active,.btn-default:active,.open>.dropdown-toggle.btn-default{background-image:none}.btn-default.disabled.focus,.btn-default.disabled:focus,.btn-default.disabled:hover,.btn-default[disabled].focus,.btn-default[disabled]:focus,.btn-default[disabled]:hover,fieldset[disabled] .btn-default.focus,fieldset[disabled] .btn-default:focus,fieldset[disabled] .btn-default:hover{background-color:#fff;border-color:#ccc}.btn-default .badge{color:#fff;background-color:#333}.btn-primary{color:#fff;background-color:#337ab7;border-color:#2e6da4}.btn-primary.focus,.btn-primary:focus{color:#fff;background-color:#286090;border-color:#122b40}.btn-primary:hover{color:#fff;background-color:#286090;border-color:#204d74}.btn-primary.active,.btn-primary:active,.open>.dropdown-toggle.btn-primary{color:#fff;background-color:#286090;border-color:#204d74}.btn-primary.active.focus,.btn-primary.active:focus,.btn-primary.active:hover,.btn-primary:active.focus,.btn-primary:active:focus,.btn-primary:active:hover,.open>.dropdown-toggle.btn-primary.focus,.open>.dropdown-toggle.btn-primary:focus,.open>.dropdown-toggle.btn-primary:hover{color:#fff;background-color:#204d74;border-color:#122b40}.btn-primary.active,.btn-primary:active,.open>.dropdown-toggle.btn-primary{background-image:none}.btn-primary.disabled.focus,.btn-primary.disabled:focus,.btn-primary.disabled:hover,.btn-primary[disabled].focus,.btn-primary[disabled]:focus,.btn-primary[disabled]:hover,fieldset[disabled] .btn-primary.focus,fieldset[disabled] .btn-primary:focus,fieldset[disabled] .btn-primary:hover{background-color:#337ab7;border-color:#2e6da4}.btn-primary .badge{color:#337ab7;background-color:#fff}.btn-success{color:#fff;background-color:#5cb85c;border-color:#4cae4c}.btn-success.focus,.btn-success:focus{color:#fff;background-color:#449d44;border-color:#255625}.btn-success:hover{color:#fff;background-color:#449d44;border-color:#398439}.btn-success.active,.btn-success:active,.open>.dropdown-toggle.btn-success{color:#fff;background-color:#449d44;border-color:#398439}.btn-success.active.focus,.btn-success.active:focus,.btn-success.active:hover,.btn-success:active.focus,.btn-success:active:focus,.btn-success:active:hover,.open>.dropdown-toggle.btn-success.focus,.open>.dropdown-toggle.btn-success:focus,.open>.dropdown-toggle.btn-success:hover{color:#fff;background-color:#398439;border-color:#255625}.btn-success.active,.btn-success:active,.open>.dropdown-toggle.btn-success{background-image:none}.btn-success.disabled.focus,.btn-success.disabled:focus,.btn-success.disabled:hover,.btn-success[disabled].focus,.btn-success[disabled]:focus,.btn-success[disabled]:hover,fieldset[disabled] .btn-success.focus,fieldset[disabled] .btn-success:focus,fieldset[disabled] .btn-success:hover{background-color:#5cb85c;border-color:#4cae4c}.btn-success .badge{color:#5cb85c;background-color:#fff}.btn-info{color:#fff;background-color:#5bc0de;border-color:#46b8da}.btn-info.focus,.btn-info:focus{color:#fff;background-color:#31b0d5;border-color:#1b6d85}.btn-info:hover{color:#fff;background-color:#31b0d5;border-color:#269abc}.btn-info.active,.btn-info:active,.open>.dropdown-toggle.btn-info{color:#fff;background-color:#31b0d5;border-color:#269abc}.btn-info.active.focus,.btn-info.active:focus,.btn-info.active:hover,.btn-info:active.focus,.btn-info:active:focus,.btn-info:active:hover,.open>.dropdown-toggle.btn-info.focus,.open>.dropdown-toggle.btn-info:focus,.open>.dropdown-toggle.btn-info:hover{color:#fff;background-color:#269abc;border-color:#1b6d85}.btn-info.active,.btn-info:active,.open>.dropdown-toggle.btn-info{background-image:none}.btn-info.disabled.focus,.btn-info.disabled:focus,.btn-info.disabled:hover,.btn-info[disabled].focus,.btn-info[disabled]:focus,.btn-info[disabled]:hover,fieldset[disabled] .btn-info.focus,fieldset[disabled] .btn-info:focus,fieldset[disabled] .btn-info:hover{background-color:#5bc0de;border-color:#46b8da}.btn-info .badge{color:#5bc0de;background-color:#fff}.btn-warning{color:#fff;background-color:#f0ad4e;border-color:#eea236}.btn-warning.focus,.btn-warning:focus{color:#fff;background-color:#ec971f;border-color:#985f0d}.btn-warning:hover{color:#fff;background-color:#ec971f;border-color:#d58512}.btn-warning.active,.btn-warning:active,.open>.dropdown-toggle.btn-warning{color:#fff;background-color:#ec971f;border-color:#d58512}.btn-warning.active.focus,.btn-warning.active:focus,.btn-warning.active:hover,.btn-warning:active.focus,.btn-warning:active:focus,.btn-warning:active:hover,.open>.dropdown-toggle.btn-warning.focus,.open>.dropdown-toggle.btn-warning:focus,.open>.dropdown-toggle.btn-warning:hover{color:#fff;background-color:#d58512;border-color:#985f0d}.btn-warning.active,.btn-warning:active,.open>.dropdown-toggle.btn-warning{background-image:none}.btn-warning.disabled.focus,.btn-warning.disabled:focus,.btn-warning.disabled:hover,.btn-warning[disabled].focus,.btn-warning[disabled]:focus,.btn-warning[disabled]:hover,fieldset[disabled] .btn-warning.focus,fieldset[disabled] .btn-warning:focus,fieldset[disabled] .btn-warning:hover{background-color:#f0ad4e;border-color:#eea236}.btn-warning .badge{color:#f0ad4e;background-color:#fff}.btn-danger{color:#fff;background-color:#d9534f;border-color:#d43f3a}.btn-danger.focus,.btn-danger:focus{color:#fff;background-color:#c9302c;border-color:#761c19}.btn-danger:hover{color:#fff;background-color:#c9302c;border-color:#ac2925}.btn-danger.active,.btn-danger:active,.open>.dropdown-toggle.btn-danger{color:#fff;background-color:#c9302c;border-color:#ac2925}.btn-danger.active.focus,.btn-danger.active:focus,.btn-danger.active:hover,.btn-danger:active.focus,.btn-danger:active:focus,.btn-danger:active:hover,.open>.dropdown-toggle.btn-danger.focus,.open>.dropdown-toggle.btn-danger:focus,.open>.dropdown-toggle.btn-danger:hover{color:#fff;background-color:#ac2925;border-color:#761c19}.btn-danger.active,.btn-danger:active,.open>.dropdown-toggle.btn-danger{background-image:none}.btn-danger.disabled.focus,.btn-danger.disabled:focus,.btn-danger.disabled:hover,.btn-danger[disabled].focus,.btn-danger[disabled]:focus,.btn-danger[disabled]:hover,fieldset[disabled] .btn-danger.focus,fieldset[disabled] .btn-danger:focus,fieldset[disabled] .btn-danger:hover{background-color:#d9534f;border-color:#d43f3a}.btn-danger .badge{color:#d9534f;background-color:#fff}.btn-link{font-weight:400;color:#337ab7;border-radius:0}.btn-link,.btn-link.active,.btn-link:active,.btn-link[disabled],fieldset[disabled] .btn-link{background-color:transparent;-webkit-box-shadow:none;box-shadow:none}.btn-link,.btn-link:active,.btn-link:focus,.btn-link:hover{border-color:transparent}.btn-link:focus,.btn-link:hover{color:#23527c;text-decoration:underline;background-color:transparent}.btn-link[disabled]:focus,.btn-link[disabled]:hover,fieldset[disabled] .btn-link:focus,fieldset[disabled] .btn-link:hover{color:#777;text-decoration:none}.btn-group-lg>.btn,.btn-lg{padding:10px 16px;font-size:18px;line-height:1.3333333;border-radius:6px}.btn-group-sm>.btn,.btn-sm{padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}.btn-group-xs>.btn,.btn-xs{padding:1px 5px;font-size:12px;line-height:1.5;border-radius:3px}.btn-block{display:block;width:100%}.btn-block+.btn-block{margin-top:5px}input[type=button].btn-block,input[type=reset].btn-block,input[type=submit].btn-block{width:100%}.fade{opacity:0;-webkit-transition:opacity .15s linear;-o-transition:opacity .15s linear;transition:opacity .15s linear}.fade.in{opacity:1}.collapse{display:none}.collapse.in{display:block}tr.collapse.in{display:table-row}tbody.collapse.in{display:table-row-group}.collapsing{position:relative;height:0;overflow:hidden;-webkit-transition-timing-function:ease;-o-transition-timing-function:ease;transition-timing-function:ease;-webkit-transition-duration:.35s;-o-transition-duration:.35s;transition-duration:.35s;-webkit-transition-property:height,visibility;-o-transition-property:height,visibility;transition-property:height,visibility}.caret{display:inline-block;width:0;height:0;margin-left:2px;vertical-align:middle;border-top:4px dashed;border-top:4px solid\9;border-right:4px solid transparent;border-left:4px solid transparent}.dropdown,.dropup{position:relative}.dropdown-toggle:focus{outline:0}.dropdown-menu{position:absolute;top:100%;left:0;z-index:1000;display:none;float:left;min-width:160px;padding:5px 0;margin:2px 0 0;font-size:14px;text-align:left;list-style:none;background-color:#fff;-webkit-background-clip:padding-box;background-clip:padding-box;border:1px solid #ccc;border:1px solid rgba(0,0,0,.15);border-radius:4px;-webkit-box-shadow:0 6px 12px rgba(0,0,0,.175);box-shadow:0 6px 12px rgba(0,0,0,.175)}.dropdown-menu.pull-right{right:0;left:auto}.dropdown-menu .divider{height:1px;margin:9px 0;overflow:hidden;background-color:#e5e5e5}.dropdown-menu>li>a{display:block;padding:3px 20px;clear:both;font-weight:400;line-height:1.42857143;color:#333;white-space:nowrap}.dropdown-menu>li>a:focus,.dropdown-menu>li>a:hover{color:#262626;text-decoration:none;background-color:#f5f5f5}.dropdown-menu>.active>a,.dropdown-menu>.active>a:focus,.dropdown-menu>.active>a:hover{color:#fff;text-decoration:none;background-color:#337ab7;outline:0}.dropdown-menu>.disabled>a,.dropdown-menu>.disabled>a:focus,.dropdown-menu>.disabled>a:hover{color:#777}.dropdown-menu>.disabled>a:focus,.dropdown-menu>.disabled>a:hover{text-decoration:none;cursor:not-allowed;background-color:transparent;background-image:none;filter:progid:DXImageTransform.Microsoft.gradient(enabled=false)}.open>.dropdown-menu{display:block}.open>a{outline:0}.dropdown-menu-right{right:0;left:auto}.dropdown-menu-left{right:auto;left:0}.dropdown-header{display:block;padding:3px 20px;font-size:12px;line-height:1.42857143;color:#777;white-space:nowrap}.dropdown-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:990}.pull-right>.dropdown-menu{right:0;left:auto}.dropup .caret,.navbar-fixed-bottom .dropdown .caret{content:"";border-top:0;border-bottom:4px dashed;border-bottom:4px solid\9}.dropup .dropdown-menu,.navbar-fixed-bottom .dropdown .dropdown-menu{top:auto;bottom:100%;margin-bottom:2px}@media (min-width:768px){.navbar-right .dropdown-menu{right:0;left:auto}.navbar-right .dropdown-menu-left{right:auto;left:0}}.btn-group,.btn-group-vertical{position:relative;display:inline-block;vertical-align:middle}.btn-group-vertical>.btn,.btn-group>.btn{position:relative;float:left}.btn-group-vertical>.btn.active,.btn-group-vertical>.btn:active,.btn-group-vertical>.btn:focus,.btn-group-vertical>.btn:hover,.btn-group>.btn.active,.btn-group>.btn:active,.btn-group>.btn:focus,.btn-group>.btn:hover{z-index:2}.btn-group .btn+.btn,.btn-group .btn+.btn-group,.btn-group .btn-group+.btn,.btn-group .btn-group+.btn-group{margin-left:-1px}.btn-toolbar{margin-left:-5px}.btn-toolbar .btn,.btn-toolbar .btn-group,.btn-toolbar .input-group{float:left}.btn-toolbar>.btn,.btn-toolbar>.btn-group,.btn-toolbar>.input-group{margin-left:5px}.btn-group>.btn:not(:first-child):not(:last-child):not(.dropdown-toggle){border-radius:0}.btn-group>.btn:first-child{margin-left:0}.btn-group>.btn:first-child:not(:last-child):not(.dropdown-toggle){border-top-right-radius:0;border-bottom-right-radius:0}.btn-group>.btn:last-child:not(:first-child),.btn-group>.dropdown-toggle:not(:first-child){border-top-left-radius:0;border-bottom-left-radius:0}.btn-group>.btn-group{float:left}.btn-group>.btn-group:not(:first-child):not(:last-child)>.btn{border-radius:0}.btn-group>.btn-group:first-child:not(:last-child)>.btn:last-child,.btn-group>.btn-group:first-child:not(:last-child)>.dropdown-toggle{border-top-right-radius:0;border-bottom-right-radius:0}.btn-group>.btn-group:last-child:not(:first-child)>.btn:first-child{border-top-left-radius:0;border-bottom-left-radius:0}.btn-group .dropdown-toggle:active,.btn-group.open .dropdown-toggle{outline:0}.btn-group>.btn+.dropdown-toggle{padding-right:8px;padding-left:8px}.btn-group>.btn-lg+.dropdown-toggle{padding-right:12px;padding-left:12px}.btn-group.open .dropdown-toggle{-webkit-box-shadow:inset 0 3px 5px rgba(0,0,0,.125);box-shadow:inset 0 3px 5px rgba(0,0,0,.125)}.btn-group.open .dropdown-toggle.btn-link{-webkit-box-shadow:none;box-shadow:none}.btn .caret{margin-left:0}.btn-lg .caret{border-width:5px 5px 0;border-bottom-width:0}.dropup .btn-lg .caret{border-width:0 5px 5px}.btn-group-vertical>.btn,.btn-group-vertical>.btn-group,.btn-group-vertical>.btn-group>.btn{display:block;float:none;width:100%;max-width:100%}.btn-group-vertical>.btn-group>.btn{float:none}.btn-group-vertical>.btn+.btn,.btn-group-vertical>.btn+.btn-group,.btn-group-vertical>.btn-group+.btn,.btn-group-vertical>.btn-group+.btn-group{margin-top:-1px;margin-left:0}.btn-group-vertical>.btn:not(:first-child):not(:last-child){border-radius:0}.btn-group-vertical>.btn:first-child:not(:last-child){border-top-left-radius:4px;border-top-right-radius:4px;border-bottom-right-radius:0;border-bottom-left-radius:0}.btn-group-vertical>.btn:last-child:not(:first-child){border-top-left-radius:0;border-top-right-radius:0;border-bottom-right-radius:4px;border-bottom-left-radius:4px}.btn-group-vertical>.btn-group:not(:first-child):not(:last-child)>.btn{border-radius:0}.btn-group-vertical>.btn-group:first-child:not(:last-child)>.btn:last-child,.btn-group-vertical>.btn-group:first-child:not(:last-child)>.dropdown-toggle{border-bottom-right-radius:0;border-bottom-left-radius:0}.btn-group-vertical>.btn-group:last-child:not(:first-child)>.btn:first-child{border-top-left-radius:0;border-top-right-radius:0}.btn-group-justified{display:table;width:100%;table-layout:fixed;border-collapse:separate}.btn-group-justified>.btn,.btn-group-justified>.btn-group{display:table-cell;float:none;width:1%}.btn-group-justified>.btn-group .btn{width:100%}.btn-group-justified>.btn-group .dropdown-menu{left:auto}[data-toggle=buttons]>.btn input[type=checkbox],[data-toggle=buttons]>.btn input[type=radio],[data-toggle=buttons]>.btn-group>.btn input[type=checkbox],[data-toggle=buttons]>.btn-group>.btn input[type=radio]{position:absolute;clip:rect(0,0,0,0);pointer-events:none}.input-group{position:relative;display:table;border-collapse:separate}.input-group[class*=col-]{float:none;padding-right:0;padding-left:0}.input-group .form-control{position:relative;z-index:2;float:left;width:100%;margin-bottom:0}.input-group .form-control:focus{z-index:3}.input-group-lg>.form-control,.input-group-lg>.input-group-addon,.input-group-lg>.input-group-btn>.btn{height:46px;padding:10px 16px;font-size:18px;line-height:1.3333333;border-radius:6px}select.input-group-lg>.form-control,select.input-group-lg>.input-group-addon,select.input-group-lg>.input-group-btn>.btn{height:46px;line-height:46px}select[multiple].input-group-lg>.form-control,select[multiple].input-group-lg>.input-group-addon,select[multiple].input-group-lg>.input-group-btn>.btn,textarea.input-group-lg>.form-control,textarea.input-group-lg>.input-group-addon,textarea.input-group-lg>.input-group-btn>.btn{height:auto}.input-group-sm>.form-control,.input-group-sm>.input-group-addon,.input-group-sm>.input-group-btn>.btn{height:30px;padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}select.input-group-sm>.form-control,select.input-group-sm>.input-group-addon,select.input-group-sm>.input-group-btn>.btn{height:30px;line-height:30px}select[multiple].input-group-sm>.form-control,select[multiple].input-group-sm>.input-group-addon,select[multiple].input-group-sm>.input-group-btn>.btn,textarea.input-group-sm>.form-control,textarea.input-group-sm>.input-group-addon,textarea.input-group-sm>.input-group-btn>.btn{height:auto}.input-group .form-control,.input-group-addon,.input-group-btn{display:table-cell}.input-group .form-control:not(:first-child):not(:last-child),.input-group-addon:not(:first-child):not(:last-child),.input-group-btn:not(:first-child):not(:last-child){border-radius:0}.input-group-addon,.input-group-btn{width:1%;white-space:nowrap;vertical-align:middle}.input-group-addon{padding:6px 12px;font-size:14px;font-weight:400;line-height:1;color:#555;text-align:center;background-color:#eee;border:1px solid #ccc;border-radius:4px}.input-group-addon.input-sm{padding:5px 10px;font-size:12px;border-radius:3px}.input-group-addon.input-lg{padding:10px 16px;font-size:18px;border-radius:6px}.input-group-addon input[type=checkbox],.input-group-addon input[type=radio]{margin-top:0}.input-group .form-control:first-child,.input-group-addon:first-child,.input-group-btn:first-child>.btn,.input-group-btn:first-child>.btn-group>.btn,.input-group-btn:first-child>.dropdown-toggle,.input-group-btn:last-child>.btn-group:not(:last-child)>.btn,.input-group-btn:last-child>.btn:not(:last-child):not(.dropdown-toggle){border-top-right-radius:0;border-bottom-right-radius:0}.input-group-addon:first-child{border-right:0}.input-group .form-control:last-child,.input-group-addon:last-child,.input-group-btn:first-child>.btn-group:not(:first-child)>.btn,.input-group-btn:first-child>.btn:not(:first-child),.input-group-btn:last-child>.btn,.input-group-btn:last-child>.btn-group>.btn,.input-group-btn:last-child>.dropdown-toggle{border-top-left-radius:0;border-bottom-left-radius:0}.input-group-addon:last-child{border-left:0}.input-group-btn{position:relative;font-size:0;white-space:nowrap}.input-group-btn>.btn{position:relative}.input-group-btn>.btn+.btn{margin-left:-1px}.input-group-btn>.btn:active,.input-group-btn>.btn:focus,.input-group-btn>.btn:hover{z-index:2}.input-group-btn:first-child>.btn,.input-group-btn:first-child>.btn-group{margin-right:-1px}.input-group-btn:last-child>.btn,.input-group-btn:last-child>.btn-group{z-index:2;margin-left:-1px}.nav{padding-left:0;margin-bottom:0;list-style:none}.nav>li{position:relative;display:block}.nav>li>a{position:relative;display:block;padding:10px 15px}.nav>li>a:focus,.nav>li>a:hover{text-decoration:none;background-color:#eee}.nav>li.disabled>a{color:#777}.nav>li.disabled>a:focus,.nav>li.disabled>a:hover{color:#777;text-decoration:none;cursor:not-allowed;background-color:transparent}.nav .open>a,.nav .open>a:focus,.nav .open>a:hover{background-color:#eee;border-color:#337ab7}.nav .nav-divider{height:1px;margin:9px 0;overflow:hidden;background-color:#e5e5e5}.nav>li>a>img{max-width:none}.nav-tabs{border-bottom:1px solid #ddd}.nav-tabs>li{float:left;margin-bottom:-1px}.nav-tabs>li>a{margin-right:2px;line-height:1.42857143;border:1px solid transparent;border-radius:4px 4px 0 0}.nav-tabs>li>a:hover{border-color:#eee #eee #ddd}.nav-tabs>li.active>a,.nav-tabs>li.active>a:focus,.nav-tabs>li.active>a:hover{color:#555;cursor:default;background-color:#fff;border:1px solid #ddd;border-bottom-color:transparent}.nav-tabs.nav-justified{width:100%;border-bottom:0}.nav-tabs.nav-justified>li{float:none}.nav-tabs.nav-justified>li>a{margin-bottom:5px;text-align:center}.nav-tabs.nav-justified>.dropdown .dropdown-menu{top:auto;left:auto}@media (min-width:768px){.nav-tabs.nav-justified>li{display:table-cell;width:1%}.nav-tabs.nav-justified>li>a{margin-bottom:0}}.nav-tabs.nav-justified>li>a{margin-right:0;border-radius:4px}.nav-tabs.nav-justified>.active>a,.nav-tabs.nav-justified>.active>a:focus,.nav-tabs.nav-justified>.active>a:hover{border:1px solid #ddd}@media (min-width:768px){.nav-tabs.nav-justified>li>a{border-bottom:1px solid #ddd;border-radius:4px 4px 0 0}.nav-tabs.nav-justified>.active>a,.nav-tabs.nav-justified>.active>a:focus,.nav-tabs.nav-justified>.active>a:hover{border-bottom-color:#fff}}.nav-pills>li{float:left}.nav-pills>li>a{border-radius:4px}.nav-pills>li+li{margin-left:2px}.nav-pills>li.active>a,.nav-pills>li.active>a:focus,.nav-pills>li.active>a:hover{color:#fff;background-color:#337ab7}.nav-stacked>li{float:none}.nav-stacked>li+li{margin-top:2px;margin-left:0}.nav-justified{width:100%}.nav-justified>li{float:none}.nav-justified>li>a{margin-bottom:5px;text-align:center}.nav-justified>.dropdown .dropdown-menu{top:auto;left:auto}@media (min-width:768px){.nav-justified>li{display:table-cell;width:1%}.nav-justified>li>a{margin-bottom:0}}.nav-tabs-justified{border-bottom:0}.nav-tabs-justified>li>a{margin-right:0;border-radius:4px}.nav-tabs-justified>.active>a,.nav-tabs-justified>.active>a:focus,.nav-tabs-justified>.active>a:hover{border:1px solid #ddd}@media (min-width:768px){.nav-tabs-justified>li>a{border-bottom:1px solid #ddd;border-radius:4px 4px 0 0}.nav-tabs-justified>.active>a,.nav-tabs-justified>.active>a:focus,.nav-tabs-justified>.active>a:hover{border-bottom-color:#fff}}.tab-content>.tab-pane{display:none}.tab-content>.active{display:block}.nav-tabs .dropdown-menu{margin-top:-1px;border-top-left-radius:0;border-top-right-radius:0}.navbar{position:relative;min-height:50px;margin-bottom:20px;border:1px solid transparent}@media (min-width:768px){.navbar{border-radius:4px}}@media (min-width:768px){.navbar-header{float:left}}.navbar-collapse{padding-right:15px;padding-left:15px;overflow-x:visible;-webkit-overflow-scrolling:touch;border-top:1px solid transparent;-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,.1);box-shadow:inset 0 1px 0 rgba(255,255,255,.1)}.navbar-collapse.in{overflow-y:auto}@media (min-width:768px){.navbar-collapse{width:auto;border-top:0;-webkit-box-shadow:none;box-shadow:none}.navbar-collapse.collapse{display:block!important;height:auto!important;padding-bottom:0;overflow:visible!important}.navbar-collapse.in{overflow-y:visible}.navbar-fixed-bottom .navbar-collapse,.navbar-fixed-top .navbar-collapse,.navbar-static-top .navbar-collapse{padding-right:0;padding-left:0}}.navbar-fixed-bottom .navbar-collapse,.navbar-fixed-top .navbar-collapse{max-height:340px}@media (max-device-width:480px) and (orientation:landscape){.navbar-fixed-bottom .navbar-collapse,.navbar-fixed-top .navbar-collapse{max-height:200px}}.container-fluid>.navbar-collapse,.container-fluid>.navbar-header,.container>.navbar-collapse,.container>.navbar-header{margin-right:-15px;margin-left:-15px}@media (min-width:768px){.container-fluid>.navbar-collapse,.container-fluid>.navbar-header,.container>.navbar-collapse,.container>.navbar-header{margin-right:0;margin-left:0}}.navbar-static-top{z-index:1000;border-width:0 0 1px}@media (min-width:768px){.navbar-static-top{border-radius:0}}.navbar-fixed-bottom,.navbar-fixed-top{position:fixed;right:0;left:0;z-index:1030}@media (min-width:768px){.navbar-fixed-bottom,.navbar-fixed-top{border-radius:0}}.navbar-fixed-top{top:0;border-width:0 0 1px}.navbar-fixed-bottom{bottom:0;margin-bottom:0;border-width:1px 0 0}.navbar-brand{float:left;height:50px;padding:15px 15px;font-size:18px;line-height:20px}.navbar-brand:focus,.navbar-brand:hover{text-decoration:none}.navbar-brand>img{display:block}@media (min-width:768px){.navbar>.container .navbar-brand,.navbar>.container-fluid .navbar-brand{margin-left:-15px}}.navbar-toggle{position:relative;float:right;padding:9px 10px;margin-top:8px;margin-right:15px;margin-bottom:8px;background-color:transparent;background-image:none;border:1px solid transparent;border-radius:4px}.navbar-toggle:focus{outline:0}.navbar-toggle .icon-bar{display:block;width:22px;height:2px;border-radius:1px}.navbar-toggle .icon-bar+.icon-bar{margin-top:4px}@media (min-width:768px){.navbar-toggle{display:none}}.navbar-nav{margin:7.5px -15px}.navbar-nav>li>a{padding-top:10px;padding-bottom:10px;line-height:20px}@media (max-width:767px){.navbar-nav .open .dropdown-menu{position:static;float:none;width:auto;margin-top:0;background-color:transparent;border:0;-webkit-box-shadow:none;box-shadow:none}.navbar-nav .open .dropdown-menu .dropdown-header,.navbar-nav .open .dropdown-menu>li>a{padding:5px 15px 5px 25px}.navbar-nav .open .dropdown-menu>li>a{line-height:20px}.navbar-nav .open .dropdown-menu>li>a:focus,.navbar-nav .open .dropdown-menu>li>a:hover{background-image:none}}@media (min-width:768px){.navbar-nav{float:left;margin:0}.navbar-nav>li{float:left}.navbar-nav>li>a{padding-top:15px;padding-bottom:15px}}.navbar-form{padding:10px 15px;margin-top:8px;margin-right:-15px;margin-bottom:8px;margin-left:-15px;border-top:1px solid transparent;border-bottom:1px solid transparent;-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,.1),0 1px 0 rgba(255,255,255,.1);box-shadow:inset 0 1px 0 rgba(255,255,255,.1),0 1px 0 rgba(255,255,255,.1)}@media (min-width:768px){.navbar-form .form-group{display:inline-block;margin-bottom:0;vertical-align:middle}.navbar-form .form-control{display:inline-block;width:auto;vertical-align:middle}.navbar-form .form-control-static{display:inline-block}.navbar-form .input-group{display:inline-table;vertical-align:middle}.navbar-form .input-group .form-control,.navbar-form .input-group .input-group-addon,.navbar-form .input-group .input-group-btn{width:auto}.navbar-form .input-group>.form-control{width:100%}.navbar-form .control-label{margin-bottom:0;vertical-align:middle}.navbar-form .checkbox,.navbar-form .radio{display:inline-block;margin-top:0;margin-bottom:0;vertical-align:middle}.navbar-form .checkbox label,.navbar-form .radio label{padding-left:0}.navbar-form .checkbox input[type=checkbox],.navbar-form .radio input[type=radio]{position:relative;margin-left:0}.navbar-form .has-feedback .form-control-feedback{top:0}}@media (max-width:767px){.navbar-form .form-group{margin-bottom:5px}.navbar-form .form-group:last-child{margin-bottom:0}}@media (min-width:768px){.navbar-form{width:auto;padding-top:0;padding-bottom:0;margin-right:0;margin-left:0;border:0;-webkit-box-shadow:none;box-shadow:none}}.navbar-nav>li>.dropdown-menu{margin-top:0;border-top-left-radius:0;border-top-right-radius:0}.navbar-fixed-bottom .navbar-nav>li>.dropdown-menu{margin-bottom:0;border-top-left-radius:4px;border-top-right-radius:4px;border-bottom-right-radius:0;border-bottom-left-radius:0}.navbar-btn{margin-top:8px;margin-bottom:8px}.navbar-btn.btn-sm{margin-top:10px;margin-bottom:10px}.navbar-btn.btn-xs{margin-top:14px;margin-bottom:14px}.navbar-text{margin-top:15px;margin-bottom:15px}@media (min-width:768px){.navbar-text{float:left;margin-right:15px;margin-left:15px}}@media (min-width:768px){.navbar-left{float:left!important}.navbar-right{float:right!important;margin-right:-15px}.navbar-right~.navbar-right{margin-right:0}}.navbar-default{background-color:#f8f8f8;border-color:#e7e7e7}.navbar-default .navbar-brand{color:#777}.navbar-default .navbar-brand:focus,.navbar-default .navbar-brand:hover{color:#5e5e5e;background-color:transparent}.navbar-default .navbar-text{color:#777}.navbar-default .navbar-nav>li>a{color:#777}.navbar-default .navbar-nav>li>a:focus,.navbar-default .navbar-nav>li>a:hover{color:#333;background-color:transparent}.navbar-default .navbar-nav>.active>a,.navbar-default .navbar-nav>.active>a:focus,.navbar-default .navbar-nav>.active>a:hover{color:#555;background-color:#e7e7e7}.navbar-default .navbar-nav>.disabled>a,.navbar-default .navbar-nav>.disabled>a:focus,.navbar-default .navbar-nav>.disabled>a:hover{color:#ccc;background-color:transparent}.navbar-default .navbar-toggle{border-color:#ddd}.navbar-default .navbar-toggle:focus,.navbar-default .navbar-toggle:hover{background-color:#ddd}.navbar-default .navbar-toggle .icon-bar{background-color:#888}.navbar-default .navbar-collapse,.navbar-default .navbar-form{border-color:#e7e7e7}.navbar-default .navbar-nav>.open>a,.navbar-default .navbar-nav>.open>a:focus,.navbar-default .navbar-nav>.open>a:hover{color:#555;background-color:#e7e7e7}@media (max-width:767px){.navbar-default .navbar-nav .open .dropdown-menu>li>a{color:#777}.navbar-default .navbar-nav .open .dropdown-menu>li>a:focus,.navbar-default .navbar-nav .open .dropdown-menu>li>a:hover{color:#333;background-color:transparent}.navbar-default .navbar-nav .open .dropdown-menu>.active>a,.navbar-default .navbar-nav .open .dropdown-menu>.active>a:focus,.navbar-default .navbar-nav .open .dropdown-menu>.active>a:hover{color:#555;background-color:#e7e7e7}.navbar-default .navbar-nav .open .dropdown-menu>.disabled>a,.navbar-default .navbar-nav .open .dropdown-menu>.disabled>a:focus,.navbar-default .navbar-nav .open .dropdown-menu>.disabled>a:hover{color:#ccc;background-color:transparent}}.navbar-default .navbar-link{color:#777}.navbar-default .navbar-link:hover{color:#333}.navbar-default .btn-link{color:#777}.navbar-default .btn-link:focus,.navbar-default .btn-link:hover{color:#333}.navbar-default .btn-link[disabled]:focus,.navbar-default .btn-link[disabled]:hover,fieldset[disabled] .navbar-default .btn-link:focus,fieldset[disabled] .navbar-default .btn-link:hover{color:#ccc}.navbar-inverse{background-color:#222;border-color:#080808}.navbar-inverse .navbar-brand{color:#9d9d9d}.navbar-inverse .navbar-brand:focus,.navbar-inverse .navbar-brand:hover{color:#fff;background-color:transparent}.navbar-inverse .navbar-text{color:#9d9d9d}.navbar-inverse .navbar-nav>li>a{color:#9d9d9d}.navbar-inverse .navbar-nav>li>a:focus,.navbar-inverse .navbar-nav>li>a:hover{color:#fff;background-color:transparent}.navbar-inverse .navbar-nav>.active>a,.navbar-inverse .navbar-nav>.active>a:focus,.navbar-inverse .navbar-nav>.active>a:hover{color:#fff;background-color:#080808}.navbar-inverse .navbar-nav>.disabled>a,.navbar-inverse .navbar-nav>.disabled>a:focus,.navbar-inverse .navbar-nav>.disabled>a:hover{color:#444;background-color:transparent}.navbar-inverse .navbar-toggle{border-color:#333}.navbar-inverse .navbar-toggle:focus,.navbar-inverse .navbar-toggle:hover{background-color:#333}.navbar-inverse .navbar-toggle .icon-bar{background-color:#fff}.navbar-inverse .navbar-collapse,.navbar-inverse .navbar-form{border-color:#101010}.navbar-inverse .navbar-nav>.open>a,.navbar-inverse .navbar-nav>.open>a:focus,.navbar-inverse .navbar-nav>.open>a:hover{color:#fff;background-color:#080808}@media (max-width:767px){.navbar-inverse .navbar-nav .open .dropdown-menu>.dropdown-header{border-color:#080808}.navbar-inverse .navbar-nav .open .dropdown-menu .divider{background-color:#080808}.navbar-inverse .navbar-nav .open .dropdown-menu>li>a{color:#9d9d9d}.navbar-inverse .navbar-nav .open .dropdown-menu>li>a:focus,.navbar-inverse .navbar-nav .open .dropdown-menu>li>a:hover{color:#fff;background-color:transparent}.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a,.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a:focus,.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a:hover{color:#fff;background-color:#080808}.navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a,.navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a:focus,.navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a:hover{color:#444;background-color:transparent}}.navbar-inverse .navbar-link{color:#9d9d9d}.navbar-inverse .navbar-link:hover{color:#fff}.navbar-inverse .btn-link{color:#9d9d9d}.navbar-inverse .btn-link:focus,.navbar-inverse .btn-link:hover{color:#fff}.navbar-inverse .btn-link[disabled]:focus,.navbar-inverse .btn-link[disabled]:hover,fieldset[disabled] .navbar-inverse .btn-link:focus,fieldset[disabled] .navbar-inverse .btn-link:hover{color:#444}.breadcrumb{padding:8px 15px;margin-bottom:20px;list-style:none;background-color:#f5f5f5;border-radius:4px}.breadcrumb>li{display:inline-block}.breadcrumb>li+li:before{padding:0 5px;color:#ccc;content:"/\00a0"}.breadcrumb>.active{color:#777}.pagination{display:inline-block;padding-left:0;margin:20px 0;border-radius:4px}.pagination>li{display:inline}.pagination>li>a,.pagination>li>span{position:relative;float:left;padding:6px 12px;margin-left:-1px;line-height:1.42857143;color:#337ab7;text-decoration:none;background-color:#fff;border:1px solid #ddd}.pagination>li:first-child>a,.pagination>li:first-child>span{margin-left:0;border-top-left-radius:4px;border-bottom-left-radius:4px}.pagination>li:last-child>a,.pagination>li:last-child>span{border-top-right-radius:4px;border-bottom-right-radius:4px}.pagination>li>a:focus,.pagination>li>a:hover,.pagination>li>span:focus,.pagination>li>span:hover{z-index:2;color:#23527c;background-color:#eee;border-color:#ddd}.pagination>.active>a,.pagination>.active>a:focus,.pagination>.active>a:hover,.pagination>.active>span,.pagination>.active>span:focus,.pagination>.active>span:hover{z-index:3;color:#fff;cursor:default;background-color:#337ab7;border-color:#337ab7}.pagination>.disabled>a,.pagination>.disabled>a:focus,.pagination>.disabled>a:hover,.pagination>.disabled>span,.pagination>.disabled>span:focus,.pagination>.disabled>span:hover{color:#777;cursor:not-allowed;background-color:#fff;border-color:#ddd}.pagination-lg>li>a,.pagination-lg>li>span{padding:10px 16px;font-size:18px;line-height:1.3333333}.pagination-lg>li:first-child>a,.pagination-lg>li:first-child>span{border-top-left-radius:6px;border-bottom-left-radius:6px}.pagination-lg>li:last-child>a,.pagination-lg>li:last-child>span{border-top-right-radius:6px;border-bottom-right-radius:6px}.pagination-sm>li>a,.pagination-sm>li>span{padding:5px 10px;font-size:12px;line-height:1.5}.pagination-sm>li:first-child>a,.pagination-sm>li:first-child>span{border-top-left-radius:3px;border-bottom-left-radius:3px}.pagination-sm>li:last-child>a,.pagination-sm>li:last-child>span{border-top-right-radius:3px;border-bottom-right-radius:3px}.pager{padding-left:0;margin:20px 0;text-align:center;list-style:none}.pager li{display:inline}.pager li>a,.pager li>span{display:inline-block;padding:5px 14px;background-color:#fff;border:1px solid #ddd;border-radius:15px}.pager li>a:focus,.pager li>a:hover{text-decoration:none;background-color:#eee}.pager .next>a,.pager .next>span{float:right}.pager .previous>a,.pager .previous>span{float:left}.pager .disabled>a,.pager .disabled>a:focus,.pager .disabled>a:hover,.pager .disabled>span{color:#777;cursor:not-allowed;background-color:#fff}.label{display:inline;padding:.2em .6em .3em;font-size:75%;font-weight:700;line-height:1;color:#fff;text-align:center;white-space:nowrap;vertical-align:baseline;border-radius:.25em}a.label:focus,a.label:hover{color:#fff;text-decoration:none;cursor:pointer}.label:empty{display:none}.btn .label{position:relative;top:-1px}.label-default{background-color:#777}.label-default[href]:focus,.label-default[href]:hover{background-color:#5e5e5e}.label-primary{background-color:#337ab7}.label-primary[href]:focus,.label-primary[href]:hover{background-color:#286090}.label-success{background-color:#5cb85c}.label-success[href]:focus,.label-success[href]:hover{background-color:#449d44}.label-info{background-color:#5bc0de}.label-info[href]:focus,.label-info[href]:hover{background-color:#31b0d5}.label-warning{background-color:#f0ad4e}.label-warning[href]:focus,.label-warning[href]:hover{background-color:#ec971f}.label-danger{background-color:#d9534f}.label-danger[href]:focus,.label-danger[href]:hover{background-color:#c9302c}.badge{display:inline-block;min-width:10px;padding:3px 7px;font-size:12px;font-weight:700;line-height:1;color:#fff;text-align:center;white-space:nowrap;vertical-align:middle;background-color:#777;border-radius:10px}.badge:empty{display:none}.btn .badge{position:relative;top:-1px}.btn-group-xs>.btn .badge,.btn-xs .badge{top:0;padding:1px 5px}a.badge:focus,a.badge:hover{color:#fff;text-decoration:none;cursor:pointer}.list-group-item.active>.badge,.nav-pills>.active>a>.badge{color:#337ab7;background-color:#fff}.list-group-item>.badge{float:right}.list-group-item>.badge+.badge{margin-right:5px}.nav-pills>li>a>.badge{margin-left:3px}.jumbotron{padding-top:30px;padding-bottom:30px;margin-bottom:30px;color:inherit;background-color:#eee}.jumbotron .h1,.jumbotron h1{color:inherit}.jumbotron p{margin-bottom:15px;font-size:21px;font-weight:200}.jumbotron>hr{border-top-color:#d5d5d5}.container .jumbotron,.container-fluid .jumbotron{padding-right:15px;padding-left:15px;border-radius:6px}.jumbotron .container{max-width:100%}@media screen and (min-width:768px){.jumbotron{padding-top:48px;padding-bottom:48px}.container .jumbotron,.container-fluid .jumbotron{padding-right:60px;padding-left:60px}.jumbotron .h1,.jumbotron h1{font-size:63px}}.thumbnail{display:block;padding:4px;margin-bottom:20px;line-height:1.42857143;background-color:#fff;border:1px solid #ddd;border-radius:4px;-webkit-transition:border .2s ease-in-out;-o-transition:border .2s ease-in-out;transition:border .2s ease-in-out}.thumbnail a>img,.thumbnail>img{margin-right:auto;margin-left:auto}a.thumbnail.active,a.thumbnail:focus,a.thumbnail:hover{border-color:#337ab7}.thumbnail .caption{padding:9px;color:#333}.alert{padding:15px;margin-bottom:20px;border:1px solid transparent;border-radius:4px}.alert h4{margin-top:0;color:inherit}.alert .alert-link{font-weight:700}.alert>p,.alert>ul{margin-bottom:0}.alert>p+p{margin-top:5px}.alert-dismissable,.alert-dismissible{padding-right:35px}.alert-dismissable .close,.alert-dismissible .close{position:relative;top:-2px;right:-21px;color:inherit}.alert-success{color:#3c763d;background-color:#dff0d8;border-color:#d6e9c6}.alert-success hr{border-top-color:#c9e2b3}.alert-success .alert-link{color:#2b542c}.alert-info{color:#31708f;background-color:#d9edf7;border-color:#bce8f1}.alert-info hr{border-top-color:#a6e1ec}.alert-info .alert-link{color:#245269}.alert-warning{color:#8a6d3b;background-color:#fcf8e3;border-color:#faebcc}.alert-warning hr{border-top-color:#f7e1b5}.alert-warning .alert-link{color:#66512c}.alert-danger{color:#a94442;background-color:#f2dede;border-color:#ebccd1}.alert-danger hr{border-top-color:#e4b9c0}.alert-danger .alert-link{color:#843534}@-webkit-keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}@-o-keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}@keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}.progress{height:20px;margin-bottom:20px;overflow:hidden;background-color:#f5f5f5;border-radius:4px;-webkit-box-shadow:inset 0 1px 2px rgba(0,0,0,.1);box-shadow:inset 0 1px 2px rgba(0,0,0,.1)}.progress-bar{float:left;width:0;height:100%;font-size:12px;line-height:20px;color:#fff;text-align:center;background-color:#337ab7;-webkit-box-shadow:inset 0 -1px 0 rgba(0,0,0,.15);box-shadow:inset 0 -1px 0 rgba(0,0,0,.15);-webkit-transition:width .6s ease;-o-transition:width .6s ease;transition:width .6s ease}.progress-bar-striped,.progress-striped .progress-bar{background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);-webkit-background-size:40px 40px;background-size:40px 40px}.progress-bar.active,.progress.active .progress-bar{-webkit-animation:progress-bar-stripes 2s linear infinite;-o-animation:progress-bar-stripes 2s linear infinite;animation:progress-bar-stripes 2s linear infinite}.progress-bar-success{background-color:#5cb85c}.progress-striped .progress-bar-success{background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent)}.progress-bar-info{background-color:#5bc0de}.progress-striped .progress-bar-info{background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent)}.progress-bar-warning{background-color:#f0ad4e}.progress-striped .progress-bar-warning{background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent)}.progress-bar-danger{background-color:#d9534f}.progress-striped .progress-bar-danger{background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent)}.media{margin-top:15px}.media:first-child{margin-top:0}.media,.media-body{overflow:hidden;zoom:1}.media-body{width:10000px}.media-object{display:block}.media-object.img-thumbnail{max-width:none}.media-right,.media>.pull-right{padding-left:10px}.media-left,.media>.pull-left{padding-right:10px}.media-body,.media-left,.media-right{display:table-cell;vertical-align:top}.media-middle{vertical-align:middle}.media-bottom{vertical-align:bottom}.media-heading{margin-top:0;margin-bottom:5px}.media-list{padding-left:0;list-style:none}.list-group{padding-left:0;margin-bottom:20px}.list-group-item{position:relative;display:block;padding:10px 15px;margin-bottom:-1px;background-color:#fff;border:1px solid #ddd}.list-group-item:first-child{border-top-left-radius:4px;border-top-right-radius:4px}.list-group-item:last-child{margin-bottom:0;border-bottom-right-radius:4px;border-bottom-left-radius:4px}a.list-group-item,button.list-group-item{color:#555}a.list-group-item .list-group-item-heading,button.list-group-item .list-group-item-heading{color:#333}a.list-group-item:focus,a.list-group-item:hover,button.list-group-item:focus,button.list-group-item:hover{color:#555;text-decoration:none;background-color:#f5f5f5}button.list-group-item{width:100%;text-align:left}.list-group-item.disabled,.list-group-item.disabled:focus,.list-group-item.disabled:hover{color:#777;cursor:not-allowed;background-color:#eee}.list-group-item.disabled .list-group-item-heading,.list-group-item.disabled:focus .list-group-item-heading,.list-group-item.disabled:hover .list-group-item-heading{color:inherit}.list-group-item.disabled .list-group-item-text,.list-group-item.disabled:focus .list-group-item-text,.list-group-item.disabled:hover .list-group-item-text{color:#777}.list-group-item.active,.list-group-item.active:focus,.list-group-item.active:hover{z-index:2;color:#fff;background-color:#337ab7;border-color:#337ab7}.list-group-item.active .list-group-item-heading,.list-group-item.active .list-group-item-heading>.small,.list-group-item.active .list-group-item-heading>small,.list-group-item.active:focus .list-group-item-heading,.list-group-item.active:focus .list-group-item-heading>.small,.list-group-item.active:focus .list-group-item-heading>small,.list-group-item.active:hover .list-group-item-heading,.list-group-item.active:hover .list-group-item-heading>.small,.list-group-item.active:hover .list-group-item-heading>small{color:inherit}.list-group-item.active .list-group-item-text,.list-group-item.active:focus .list-group-item-text,.list-group-item.active:hover .list-group-item-text{color:#c7ddef}.list-group-item-success{color:#3c763d;background-color:#dff0d8}a.list-group-item-success,button.list-group-item-success{color:#3c763d}a.list-group-item-success .list-group-item-heading,button.list-group-item-success .list-group-item-heading{color:inherit}a.list-group-item-success:focus,a.list-group-item-success:hover,button.list-group-item-success:focus,button.list-group-item-success:hover{color:#3c763d;background-color:#d0e9c6}a.list-group-item-success.active,a.list-group-item-success.active:focus,a.list-group-item-success.active:hover,button.list-group-item-success.active,button.list-group-item-success.active:focus,button.list-group-item-success.active:hover{color:#fff;background-color:#3c763d;border-color:#3c763d}.list-group-item-info{color:#31708f;background-color:#d9edf7}a.list-group-item-info,button.list-group-item-info{color:#31708f}a.list-group-item-info .list-group-item-heading,button.list-group-item-info .list-group-item-heading{color:inherit}a.list-group-item-info:focus,a.list-group-item-info:hover,button.list-group-item-info:focus,button.list-group-item-info:hover{color:#31708f;background-color:#c4e3f3}a.list-group-item-info.active,a.list-group-item-info.active:focus,a.list-group-item-info.active:hover,button.list-group-item-info.active,button.list-group-item-info.active:focus,button.list-group-item-info.active:hover{color:#fff;background-color:#31708f;border-color:#31708f}.list-group-item-warning{color:#8a6d3b;background-color:#fcf8e3}a.list-group-item-warning,button.list-group-item-warning{color:#8a6d3b}a.list-group-item-warning .list-group-item-heading,button.list-group-item-warning .list-group-item-heading{color:inherit}a.list-group-item-warning:focus,a.list-group-item-warning:hover,button.list-group-item-warning:focus,button.list-group-item-warning:hover{color:#8a6d3b;background-color:#faf2cc}a.list-group-item-warning.active,a.list-group-item-warning.active:focus,a.list-group-item-warning.active:hover,button.list-group-item-warning.active,button.list-group-item-warning.active:focus,button.list-group-item-warning.active:hover{color:#fff;background-color:#8a6d3b;border-color:#8a6d3b}.list-group-item-danger{color:#a94442;background-color:#f2dede}a.list-group-item-danger,button.list-group-item-danger{color:#a94442}a.list-group-item-danger .list-group-item-heading,button.list-group-item-danger .list-group-item-heading{color:inherit}a.list-group-item-danger:focus,a.list-group-item-danger:hover,button.list-group-item-danger:focus,button.list-group-item-danger:hover{color:#a94442;background-color:#ebcccc}a.list-group-item-danger.active,a.list-group-item-danger.active:focus,a.list-group-item-danger.active:hover,button.list-group-item-danger.active,button.list-group-item-danger.active:focus,button.list-group-item-danger.active:hover{color:#fff;background-color:#a94442;border-color:#a94442}.list-group-item-heading{margin-top:0;margin-bottom:5px}.list-group-item-text{margin-bottom:0;line-height:1.3}.panel{margin-bottom:20px;background-color:#fff;border:1px solid transparent;border-radius:4px;-webkit-box-shadow:0 1px 1px rgba(0,0,0,.05);box-shadow:0 1px 1px rgba(0,0,0,.05)}.panel-body{padding:15px}.panel-heading{padding:10px 15px;border-bottom:1px solid transparent;border-top-left-radius:3px;border-top-right-radius:3px}.panel-heading>.dropdown .dropdown-toggle{color:inherit}.panel-title{margin-top:0;margin-bottom:0;font-size:16px;color:inherit}.panel-title>.small,.panel-title>.small>a,.panel-title>a,.panel-title>small,.panel-title>small>a{color:inherit}.panel-footer{padding:10px 15px;background-color:#f5f5f5;border-top:1px solid #ddd;border-bottom-right-radius:3px;border-bottom-left-radius:3px}.panel>.list-group,.panel>.panel-collapse>.list-group{margin-bottom:0}.panel>.list-group .list-group-item,.panel>.panel-collapse>.list-group .list-group-item{border-width:1px 0;border-radius:0}.panel>.list-group:first-child .list-group-item:first-child,.panel>.panel-collapse>.list-group:first-child .list-group-item:first-child{border-top:0;border-top-left-radius:3px;border-top-right-radius:3px}.panel>.list-group:last-child .list-group-item:last-child,.panel>.panel-collapse>.list-group:last-child .list-group-item:last-child{border-bottom:0;border-bottom-right-radius:3px;border-bottom-left-radius:3px}.panel>.panel-heading+.panel-collapse>.list-group .list-group-item:first-child{border-top-left-radius:0;border-top-right-radius:0}.panel-heading+.list-group .list-group-item:first-child{border-top-width:0}.list-group+.panel-footer{border-top-width:0}.panel>.panel-collapse>.table,.panel>.table,.panel>.table-responsive>.table{margin-bottom:0}.panel>.panel-collapse>.table caption,.panel>.table caption,.panel>.table-responsive>.table caption{padding-right:15px;padding-left:15px}.panel>.table-responsive:first-child>.table:first-child,.panel>.table:first-child{border-top-left-radius:3px;border-top-right-radius:3px}.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child,.panel>.table:first-child>tbody:first-child>tr:first-child,.panel>.table:first-child>thead:first-child>tr:first-child{border-top-left-radius:3px;border-top-right-radius:3px}.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child td:first-child,.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child th:first-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child td:first-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child th:first-child,.panel>.table:first-child>tbody:first-child>tr:first-child td:first-child,.panel>.table:first-child>tbody:first-child>tr:first-child th:first-child,.panel>.table:first-child>thead:first-child>tr:first-child td:first-child,.panel>.table:first-child>thead:first-child>tr:first-child th:first-child{border-top-left-radius:3px}.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child td:last-child,.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child th:last-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child td:last-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child th:last-child,.panel>.table:first-child>tbody:first-child>tr:first-child td:last-child,.panel>.table:first-child>tbody:first-child>tr:first-child th:last-child,.panel>.table:first-child>thead:first-child>tr:first-child td:last-child,.panel>.table:first-child>thead:first-child>tr:first-child th:last-child{border-top-right-radius:3px}.panel>.table-responsive:last-child>.table:last-child,.panel>.table:last-child{border-bottom-right-radius:3px;border-bottom-left-radius:3px}.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child,.panel>.table:last-child>tbody:last-child>tr:last-child,.panel>.table:last-child>tfoot:last-child>tr:last-child{border-bottom-right-radius:3px;border-bottom-left-radius:3px}.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child td:first-child,.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child th:first-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child td:first-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child th:first-child,.panel>.table:last-child>tbody:last-child>tr:last-child td:first-child,.panel>.table:last-child>tbody:last-child>tr:last-child th:first-child,.panel>.table:last-child>tfoot:last-child>tr:last-child td:first-child,.panel>.table:last-child>tfoot:last-child>tr:last-child th:first-child{border-bottom-left-radius:3px}.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child td:last-child,.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child th:last-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child td:last-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child th:last-child,.panel>.table:last-child>tbody:last-child>tr:last-child td:last-child,.panel>.table:last-child>tbody:last-child>tr:last-child th:last-child,.panel>.table:last-child>tfoot:last-child>tr:last-child td:last-child,.panel>.table:last-child>tfoot:last-child>tr:last-child th:last-child{border-bottom-right-radius:3px}.panel>.panel-body+.table,.panel>.panel-body+.table-responsive,.panel>.table+.panel-body,.panel>.table-responsive+.panel-body{border-top:1px solid #ddd}.panel>.table>tbody:first-child>tr:first-child td,.panel>.table>tbody:first-child>tr:first-child th{border-top:0}.panel>.table-bordered,.panel>.table-responsive>.table-bordered{border:0}.panel>.table-bordered>tbody>tr>td:first-child,.panel>.table-bordered>tbody>tr>th:first-child,.panel>.table-bordered>tfoot>tr>td:first-child,.panel>.table-bordered>tfoot>tr>th:first-child,.panel>.table-bordered>thead>tr>td:first-child,.panel>.table-bordered>thead>tr>th:first-child,.panel>.table-responsive>.table-bordered>tbody>tr>td:first-child,.panel>.table-responsive>.table-bordered>tbody>tr>th:first-child,.panel>.table-responsive>.table-bordered>tfoot>tr>td:first-child,.panel>.table-responsive>.table-bordered>tfoot>tr>th:first-child,.panel>.table-responsive>.table-bordered>thead>tr>td:first-child,.panel>.table-responsive>.table-bordered>thead>tr>th:first-child{border-left:0}.panel>.table-bordered>tbody>tr>td:last-child,.panel>.table-bordered>tbody>tr>th:last-child,.panel>.table-bordered>tfoot>tr>td:last-child,.panel>.table-bordered>tfoot>tr>th:last-child,.panel>.table-bordered>thead>tr>td:last-child,.panel>.table-bordered>thead>tr>th:last-child,.panel>.table-responsive>.table-bordered>tbody>tr>td:last-child,.panel>.table-responsive>.table-bordered>tbody>tr>th:last-child,.panel>.table-responsive>.table-bordered>tfoot>tr>td:last-child,.panel>.table-responsive>.table-bordered>tfoot>tr>th:last-child,.panel>.table-responsive>.table-bordered>thead>tr>td:last-child,.panel>.table-responsive>.table-bordered>thead>tr>th:last-child{border-right:0}.panel>.table-bordered>tbody>tr:first-child>td,.panel>.table-bordered>tbody>tr:first-child>th,.panel>.table-bordered>thead>tr:first-child>td,.panel>.table-bordered>thead>tr:first-child>th,.panel>.table-responsive>.table-bordered>tbody>tr:first-child>td,.panel>.table-responsive>.table-bordered>tbody>tr:first-child>th,.panel>.table-responsive>.table-bordered>thead>tr:first-child>td,.panel>.table-responsive>.table-bordered>thead>tr:first-child>th{border-bottom:0}.panel>.table-bordered>tbody>tr:last-child>td,.panel>.table-bordered>tbody>tr:last-child>th,.panel>.table-bordered>tfoot>tr:last-child>td,.panel>.table-bordered>tfoot>tr:last-child>th,.panel>.table-responsive>.table-bordered>tbody>tr:last-child>td,.panel>.table-responsive>.table-bordered>tbody>tr:last-child>th,.panel>.table-responsive>.table-bordered>tfoot>tr:last-child>td,.panel>.table-responsive>.table-bordered>tfoot>tr:last-child>th{border-bottom:0}.panel>.table-responsive{margin-bottom:0;border:0}.panel-group{margin-bottom:20px}.panel-group .panel{margin-bottom:0;border-radius:4px}.panel-group .panel+.panel{margin-top:5px}.panel-group .panel-heading{border-bottom:0}.panel-group .panel-heading+.panel-collapse>.list-group,.panel-group .panel-heading+.panel-collapse>.panel-body{border-top:1px solid #ddd}.panel-group .panel-footer{border-top:0}.panel-group .panel-footer+.panel-collapse .panel-body{border-bottom:1px solid #ddd}.panel-default{border-color:#ddd}.panel-default>.panel-heading{color:#333;background-color:#f5f5f5;border-color:#ddd}.panel-default>.panel-heading+.panel-collapse>.panel-body{border-top-color:#ddd}.panel-default>.panel-heading .badge{color:#f5f5f5;background-color:#333}.panel-default>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#ddd}.panel-primary{border-color:#337ab7}.panel-primary>.panel-heading{color:#fff;background-color:#337ab7;border-color:#337ab7}.panel-primary>.panel-heading+.panel-collapse>.panel-body{border-top-color:#337ab7}.panel-primary>.panel-heading .badge{color:#337ab7;background-color:#fff}.panel-primary>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#337ab7}.panel-success{border-color:#d6e9c6}.panel-success>.panel-heading{color:#3c763d;background-color:#dff0d8;border-color:#d6e9c6}.panel-success>.panel-heading+.panel-collapse>.panel-body{border-top-color:#d6e9c6}.panel-success>.panel-heading .badge{color:#dff0d8;background-color:#3c763d}.panel-success>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#d6e9c6}.panel-info{border-color:#bce8f1}.panel-info>.panel-heading{color:#31708f;background-color:#d9edf7;border-color:#bce8f1}.panel-info>.panel-heading+.panel-collapse>.panel-body{border-top-color:#bce8f1}.panel-info>.panel-heading .badge{color:#d9edf7;background-color:#31708f}.panel-info>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#bce8f1}.panel-warning{border-color:#faebcc}.panel-warning>.panel-heading{color:#8a6d3b;background-color:#fcf8e3;border-color:#faebcc}.panel-warning>.panel-heading+.panel-collapse>.panel-body{border-top-color:#faebcc}.panel-warning>.panel-heading .badge{color:#fcf8e3;background-color:#8a6d3b}.panel-warning>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#faebcc}.panel-danger{border-color:#ebccd1}.panel-danger>.panel-heading{color:#a94442;background-color:#f2dede;border-color:#ebccd1}.panel-danger>.panel-heading+.panel-collapse>.panel-body{border-top-color:#ebccd1}.panel-danger>.panel-heading .badge{color:#f2dede;background-color:#a94442}.panel-danger>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#ebccd1}.embed-responsive{position:relative;display:block;height:0;padding:0;overflow:hidden}.embed-responsive .embed-responsive-item,.embed-responsive embed,.embed-responsive iframe,.embed-responsive object,.embed-responsive video{position:absolute;top:0;bottom:0;left:0;width:100%;height:100%;border:0}.embed-responsive-16by9{padding-bottom:56.25%}.embed-responsive-4by3{padding-bottom:75%}.well{min-height:20px;padding:19px;margin-bottom:20px;background-color:#f5f5f5;border:1px solid #e3e3e3;border-radius:4px;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.05);box-shadow:inset 0 1px 1px rgba(0,0,0,.05)}.well blockquote{border-color:#ddd;border-color:rgba(0,0,0,.15)}.well-lg{padding:24px;border-radius:6px}.well-sm{padding:9px;border-radius:3px}.close{float:right;font-size:21px;font-weight:700;line-height:1;color:#000;text-shadow:0 1px 0 #fff;filter:alpha(opacity=20);opacity:.2}.close:focus,.close:hover{color:#000;text-decoration:none;cursor:pointer;filter:alpha(opacity=50);opacity:.5}button.close{-webkit-appearance:none;padding:0;cursor:pointer;background:0 0;border:0}.modal-open{overflow:hidden}.modal{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1050;display:none;overflow:hidden;-webkit-overflow-scrolling:touch;outline:0}.modal.fade .modal-dialog{-webkit-transition:-webkit-transform .3s ease-out;-o-transition:-o-transform .3s ease-out;transition:transform .3s ease-out;-webkit-transform:translate(0,-25%);-ms-transform:translate(0,-25%);-o-transform:translate(0,-25%);transform:translate(0,-25%)}.modal.in .modal-dialog{-webkit-transform:translate(0,0);-ms-transform:translate(0,0);-o-transform:translate(0,0);transform:translate(0,0)}.modal-open .modal{overflow-x:hidden;overflow-y:auto}.modal-dialog{position:relative;width:auto;margin:10px}.modal-content{position:relative;background-color:#fff;-webkit-background-clip:padding-box;background-clip:padding-box;border:1px solid #999;border:1px solid rgba(0,0,0,.2);border-radius:6px;outline:0;-webkit-box-shadow:0 3px 9px rgba(0,0,0,.5);box-shadow:0 3px 9px rgba(0,0,0,.5)}.modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1040;background-color:#000}.modal-backdrop.fade{filter:alpha(opacity=0);opacity:0}.modal-backdrop.in{filter:alpha(opacity=50);opacity:.5}.modal-header{padding:15px;border-bottom:1px solid #e5e5e5}.modal-header .close{margin-top:-2px}.modal-title{margin:0;line-height:1.42857143}.modal-body{position:relative;padding:15px}.modal-footer{padding:15px;text-align:right;border-top:1px solid #e5e5e5}.modal-footer .btn+.btn{margin-bottom:0;margin-left:5px}.modal-footer .btn-group .btn+.btn{margin-left:-1px}.modal-footer .btn-block+.btn-block{margin-left:0}.modal-scrollbar-measure{position:absolute;top:-9999px;width:50px;height:50px;overflow:scroll}@media (min-width:768px){.modal-dialog{width:600px;margin:30px auto}.modal-content{-webkit-box-shadow:0 5px 15px rgba(0,0,0,.5);box-shadow:0 5px 15px rgba(0,0,0,.5)}.modal-sm{width:300px}}@media (min-width:992px){.modal-lg{width:900px}}.tooltip{position:absolute;z-index:1070;display:block;font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-size:12px;font-style:normal;font-weight:400;line-height:1.42857143;text-align:left;text-align:start;text-decoration:none;text-shadow:none;text-transform:none;letter-spacing:normal;word-break:normal;word-spacing:normal;word-wrap:normal;white-space:normal;filter:alpha(opacity=0);opacity:0;line-break:auto}.tooltip.in{filter:alpha(opacity=90);opacity:.9}.tooltip.top{padding:5px 0;margin-top:-3px}.tooltip.right{padding:0 5px;margin-left:3px}.tooltip.bottom{padding:5px 0;margin-top:3px}.tooltip.left{padding:0 5px;margin-left:-3px}.tooltip-inner{max-width:200px;padding:3px 8px;color:#fff;text-align:center;background-color:#000;border-radius:4px}.tooltip-arrow{position:absolute;width:0;height:0;border-color:transparent;border-style:solid}.tooltip.top .tooltip-arrow{bottom:0;left:50%;margin-left:-5px;border-width:5px 5px 0;border-top-color:#000}.tooltip.top-left .tooltip-arrow{right:5px;bottom:0;margin-bottom:-5px;border-width:5px 5px 0;border-top-color:#000}.tooltip.top-right .tooltip-arrow{bottom:0;left:5px;margin-bottom:-5px;border-width:5px 5px 0;border-top-color:#000}.tooltip.right .tooltip-arrow{top:50%;left:0;margin-top:-5px;border-width:5px 5px 5px 0;border-right-color:#000}.tooltip.left .tooltip-arrow{top:50%;right:0;margin-top:-5px;border-width:5px 0 5px 5px;border-left-color:#000}.tooltip.bottom .tooltip-arrow{top:0;left:50%;margin-left:-5px;border-width:0 5px 5px;border-bottom-color:#000}.tooltip.bottom-left .tooltip-arrow{top:0;right:5px;margin-top:-5px;border-width:0 5px 5px;border-bottom-color:#000}.tooltip.bottom-right .tooltip-arrow{top:0;left:5px;margin-top:-5px;border-width:0 5px 5px;border-bottom-color:#000}.popover{position:absolute;top:0;left:0;z-index:1060;display:none;max-width:276px;padding:1px;font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-size:14px;font-style:normal;font-weight:400;line-height:1.42857143;text-align:left;text-align:start;text-decoration:none;text-shadow:none;text-transform:none;letter-spacing:normal;word-break:normal;word-spacing:normal;word-wrap:normal;white-space:normal;background-color:#fff;-webkit-background-clip:padding-box;background-clip:padding-box;border:1px solid #ccc;border:1px solid rgba(0,0,0,.2);border-radius:6px;-webkit-box-shadow:0 5px 10px rgba(0,0,0,.2);box-shadow:0 5px 10px rgba(0,0,0,.2);line-break:auto}.popover.top{margin-top:-10px}.popover.right{margin-left:10px}.popover.bottom{margin-top:10px}.popover.left{margin-left:-10px}.popover-title{padding:8px 14px;margin:0;font-size:14px;background-color:#f7f7f7;border-bottom:1px solid #ebebeb;border-radius:5px 5px 0 0}.popover-content{padding:9px 14px}.popover>.arrow,.popover>.arrow:after{position:absolute;display:block;width:0;height:0;border-color:transparent;border-style:solid}.popover>.arrow{border-width:11px}.popover>.arrow:after{content:"";border-width:10px}.popover.top>.arrow{bottom:-11px;left:50%;margin-left:-11px;border-top-color:#999;border-top-color:rgba(0,0,0,.25);border-bottom-width:0}.popover.top>.arrow:after{bottom:1px;margin-left:-10px;content:" ";border-top-color:#fff;border-bottom-width:0}.popover.right>.arrow{top:50%;left:-11px;margin-top:-11px;border-right-color:#999;border-right-color:rgba(0,0,0,.25);border-left-width:0}.popover.right>.arrow:after{bottom:-10px;left:1px;content:" ";border-right-color:#fff;border-left-width:0}.popover.bottom>.arrow{top:-11px;left:50%;margin-left:-11px;border-top-width:0;border-bottom-color:#999;border-bottom-color:rgba(0,0,0,.25)}.popover.bottom>.arrow:after{top:1px;margin-left:-10px;content:" ";border-top-width:0;border-bottom-color:#fff}.popover.left>.arrow{top:50%;right:-11px;margin-top:-11px;border-right-width:0;border-left-color:#999;border-left-color:rgba(0,0,0,.25)}.popover.left>.arrow:after{right:1px;bottom:-10px;content:" ";border-right-width:0;border-left-color:#fff}.carousel{position:relative}.carousel-inner{position:relative;width:100%;overflow:hidden}.carousel-inner>.item{position:relative;display:none;-webkit-transition:.6s ease-in-out left;-o-transition:.6s ease-in-out left;transition:.6s ease-in-out left}.carousel-inner>.item>a>img,.carousel-inner>.item>img{line-height:1}@media all and (transform-3d),(-webkit-transform-3d){.carousel-inner>.item{-webkit-transition:-webkit-transform .6s ease-in-out;-o-transition:-o-transform .6s ease-in-out;transition:transform .6s ease-in-out;-webkit-backface-visibility:hidden;backface-visibility:hidden;-webkit-perspective:1000px;perspective:1000px}.carousel-inner>.item.active.right,.carousel-inner>.item.next{left:0;-webkit-transform:translate3d(100%,0,0);transform:translate3d(100%,0,0)}.carousel-inner>.item.active.left,.carousel-inner>.item.prev{left:0;-webkit-transform:translate3d(-100%,0,0);transform:translate3d(-100%,0,0)}.carousel-inner>.item.active,.carousel-inner>.item.next.left,.carousel-inner>.item.prev.right{left:0;-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}}.carousel-inner>.active,.carousel-inner>.next,.carousel-inner>.prev{display:block}.carousel-inner>.active{left:0}.carousel-inner>.next,.carousel-inner>.prev{position:absolute;top:0;width:100%}.carousel-inner>.next{left:100%}.carousel-inner>.prev{left:-100%}.carousel-inner>.next.left,.carousel-inner>.prev.right{left:0}.carousel-inner>.active.left{left:-100%}.carousel-inner>.active.right{left:100%}.carousel-control{position:absolute;top:0;bottom:0;left:0;width:15%;font-size:20px;color:#fff;text-align:center;text-shadow:0 1px 2px rgba(0,0,0,.6);background-color:rgba(0,0,0,0);filter:alpha(opacity=50);opacity:.5}.carousel-control.left{background-image:-webkit-linear-gradient(left,rgba(0,0,0,.5) 0,rgba(0,0,0,.0001) 100%);background-image:-o-linear-gradient(left,rgba(0,0,0,.5) 0,rgba(0,0,0,.0001) 100%);background-image:-webkit-gradient(linear,left top,right top,from(rgba(0,0,0,.5)),to(rgba(0,0,0,.0001)));background-image:linear-gradient(to right,rgba(0,0,0,.5) 0,rgba(0,0,0,.0001) 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#80000000', endColorstr='#00000000', GradientType=1);background-repeat:repeat-x}.carousel-control.right{right:0;left:auto;background-image:-webkit-linear-gradient(left,rgba(0,0,0,.0001) 0,rgba(0,0,0,.5) 100%);background-image:-o-linear-gradient(left,rgba(0,0,0,.0001) 0,rgba(0,0,0,.5) 100%);background-image:-webkit-gradient(linear,left top,right top,from(rgba(0,0,0,.0001)),to(rgba(0,0,0,.5)));background-image:linear-gradient(to right,rgba(0,0,0,.0001) 0,rgba(0,0,0,.5) 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#00000000', endColorstr='#80000000', GradientType=1);background-repeat:repeat-x}.carousel-control:focus,.carousel-control:hover{color:#fff;text-decoration:none;filter:alpha(opacity=90);outline:0;opacity:.9}.carousel-control .glyphicon-chevron-left,.carousel-control .glyphicon-chevron-right,.carousel-control .icon-next,.carousel-control .icon-prev{position:absolute;top:50%;z-index:5;display:inline-block;margin-top:-10px}.carousel-control .glyphicon-chevron-left,.carousel-control .icon-prev{left:50%;margin-left:-10px}.carousel-control .glyphicon-chevron-right,.carousel-control .icon-next{right:50%;margin-right:-10px}.carousel-control .icon-next,.carousel-control .icon-prev{width:20px;height:20px;font-family:serif;line-height:1}.carousel-control .icon-prev:before{content:'\2039'}.carousel-control .icon-next:before{content:'\203a'}.carousel-indicators{position:absolute;bottom:10px;left:50%;z-index:15;width:60%;padding-left:0;margin-left:-30%;text-align:center;list-style:none}.carousel-indicators li{display:inline-block;width:10px;height:10px;margin:1px;text-indent:-999px;cursor:pointer;background-color:#000\9;background-color:rgba(0,0,0,0);border:1px solid #fff;border-radius:10px}.carousel-indicators .active{width:12px;height:12px;margin:0;background-color:#fff}.carousel-caption{position:absolute;right:15%;bottom:20px;left:15%;z-index:10;padding-top:20px;padding-bottom:20px;color:#fff;text-align:center;text-shadow:0 1px 2px rgba(0,0,0,.6)}.carousel-caption .btn{text-shadow:none}@media screen and (min-width:768px){.carousel-control .glyphicon-chevron-left,.carousel-control .glyphicon-chevron-right,.carousel-control .icon-next,.carousel-control .icon-prev{width:30px;height:30px;margin-top:-10px;font-size:30px}.carousel-control .glyphicon-chevron-left,.carousel-control .icon-prev{margin-left:-10px}.carousel-control .glyphicon-chevron-right,.carousel-control .icon-next{margin-right:-10px}.carousel-caption{right:20%;left:20%;padding-bottom:30px}.carousel-indicators{bottom:20px}}.btn-group-vertical>.btn-group:after,.btn-group-vertical>.btn-group:before,.btn-toolbar:after,.btn-toolbar:before,.clearfix:after,.clearfix:before,.container-fluid:after,.container-fluid:before,.container:after,.container:before,.dl-horizontal dd:after,.dl-horizontal dd:before,.form-horizontal .form-group:after,.form-horizontal .form-group:before,.modal-footer:after,.modal-footer:before,.modal-header:after,.modal-header:before,.nav:after,.nav:before,.navbar-collapse:after,.navbar-collapse:before,.navbar-header:after,.navbar-header:before,.navbar:after,.navbar:before,.pager:after,.pager:before,.panel-body:after,.panel-body:before,.row:after,.row:before{display:table;content:" "}.btn-group-vertical>.btn-group:after,.btn-toolbar:after,.clearfix:after,.container-fluid:after,.container:after,.dl-horizontal dd:after,.form-horizontal .form-group:after,.modal-footer:after,.modal-header:after,.nav:after,.navbar-collapse:after,.navbar-header:after,.navbar:after,.pager:after,.panel-body:after,.row:after{clear:both}.center-block{display:block;margin-right:auto;margin-left:auto}.pull-right{float:right!important}.pull-left{float:left!important}.hide{display:none!important}.show{display:block!important}.invisible{visibility:hidden}.text-hide{font:0/0 a;color:transparent;text-shadow:none;background-color:transparent;border:0}.hidden{display:none!important}.affix{position:fixed}@-ms-viewport{width:device-width}.visible-lg,.visible-md,.visible-sm,.visible-xs{display:none!important}.visible-lg-block,.visible-lg-inline,.visible-lg-inline-block,.visible-md-block,.visible-md-inline,.visible-md-inline-block,.visible-sm-block,.visible-sm-inline,.visible-sm-inline-block,.visible-xs-block,.visible-xs-inline,.visible-xs-inline-block{display:none!important}@media (max-width:767px){.visible-xs{display:block!important}table.visible-xs{display:table!important}tr.visible-xs{display:table-row!important}td.visible-xs,th.visible-xs{display:table-cell!important}}@media (max-width:767px){.visible-xs-block{display:block!important}}@media (max-width:767px){.visible-xs-inline{display:inline!important}}@media (max-width:767px){.visible-xs-inline-block{display:inline-block!important}}@media (min-width:768px) and (max-width:991px){.visible-sm{display:block!important}table.visible-sm{display:table!important}tr.visible-sm{display:table-row!important}td.visible-sm,th.visible-sm{display:table-cell!important}}@media (min-width:768px) and (max-width:991px){.visible-sm-block{display:block!important}}@media (min-width:768px) and (max-width:991px){.visible-sm-inline{display:inline!important}}@media (min-width:768px) and (max-width:991px){.visible-sm-inline-block{display:inline-block!important}}@media (min-width:992px) and (max-width:1199px){.visible-md{display:block!important}table.visible-md{display:table!important}tr.visible-md{display:table-row!important}td.visible-md,th.visible-md{display:table-cell!important}}@media (min-width:992px) and (max-width:1199px){.visible-md-block{display:block!important}}@media (min-width:992px) and (max-width:1199px){.visible-md-inline{display:inline!important}}@media (min-width:992px) and (max-width:1199px){.visible-md-inline-block{display:inline-block!important}}@media (min-width:1200px){.visible-lg{display:block!important}table.visible-lg{display:table!important}tr.visible-lg{display:table-row!important}td.visible-lg,th.visible-lg{display:table-cell!important}}@media (min-width:1200px){.visible-lg-block{display:block!important}}@media (min-width:1200px){.visible-lg-inline{display:inline!important}}@media (min-width:1200px){.visible-lg-inline-block{display:inline-block!important}}@media (max-width:767px){.hidden-xs{display:none!important}}@media (min-width:768px) and (max-width:991px){.hidden-sm{display:none!important}}@media (min-width:992px) and (max-width:1199px){.hidden-md{display:none!important}}@media (min-width:1200px){.hidden-lg{display:none!important}}.visible-print{display:none!important}@media print{.visible-print{display:block!important}table.visible-print{display:table!important}tr.visible-print{display:table-row!important}td.visible-print,th.visible-print{display:table-cell!important}}.visible-print-block{display:none!important}@media print{.visible-print-block{display:block!important}}.visible-print-inline{display:none!important}@media print{.visible-print-inline{display:inline!important}}.visible-print-inline-block{display:none!important}@media print{.visible-print-inline-block{display:inline-block!important}}@media print{.hidden-print{display:none!important}} +/*# sourceMappingURL=bootstrap.min.css.map */ \ No newline at end of file diff --git a/tools/NKeditor/libs/bootstrap/bootstrap.min.js b/tools/NKeditor/libs/bootstrap/bootstrap.min.js new file mode 100644 index 00000000..1b002497 --- /dev/null +++ b/tools/NKeditor/libs/bootstrap/bootstrap.min.js @@ -0,0 +1,7 @@ +/*! + * Bootstrap v3.3.7 (http://getbootstrap.com) + * Copyright 2011-2016 Twitter, Inc. + * Licensed under the MIT license + */ +if("undefined"==typeof jQuery)throw new Error("Bootstrap's JavaScript requires jQuery");+function(a){"use strict";var b=a.fn.jquery.split(" ")[0].split(".");if(b[0]<2&&b[1]<9||1==b[0]&&9==b[1]&&b[2]<1||b[0]>3)throw new Error("Bootstrap's JavaScript requires jQuery version 1.9.1 or higher, but lower than version 4")}(jQuery),+function(a){"use strict";function b(){var a=document.createElement("bootstrap"),b={WebkitTransition:"webkitTransitionEnd",MozTransition:"transitionend",OTransition:"oTransitionEnd otransitionend",transition:"transitionend"};for(var c in b)if(void 0!==a.style[c])return{end:b[c]};return!1}a.fn.emulateTransitionEnd=function(b){var c=!1,d=this;a(this).one("bsTransitionEnd",function(){c=!0});var e=function(){c||a(d).trigger(a.support.transition.end)};return setTimeout(e,b),this},a(function(){a.support.transition=b(),a.support.transition&&(a.event.special.bsTransitionEnd={bindType:a.support.transition.end,delegateType:a.support.transition.end,handle:function(b){if(a(b.target).is(this))return b.handleObj.handler.apply(this,arguments)}})})}(jQuery),+function(a){"use strict";function b(b){return this.each(function(){var c=a(this),e=c.data("bs.alert");e||c.data("bs.alert",e=new d(this)),"string"==typeof b&&e[b].call(c)})}var c='[data-dismiss="alert"]',d=function(b){a(b).on("click",c,this.close)};d.VERSION="3.3.7",d.TRANSITION_DURATION=150,d.prototype.close=function(b){function c(){g.detach().trigger("closed.bs.alert").remove()}var e=a(this),f=e.attr("data-target");f||(f=e.attr("href"),f=f&&f.replace(/.*(?=#[^\s]*$)/,""));var g=a("#"===f?[]:f);b&&b.preventDefault(),g.length||(g=e.closest(".alert")),g.trigger(b=a.Event("close.bs.alert")),b.isDefaultPrevented()||(g.removeClass("in"),a.support.transition&&g.hasClass("fade")?g.one("bsTransitionEnd",c).emulateTransitionEnd(d.TRANSITION_DURATION):c())};var e=a.fn.alert;a.fn.alert=b,a.fn.alert.Constructor=d,a.fn.alert.noConflict=function(){return a.fn.alert=e,this},a(document).on("click.bs.alert.data-api",c,d.prototype.close)}(jQuery),+function(a){"use strict";function b(b){return this.each(function(){var d=a(this),e=d.data("bs.button"),f="object"==typeof b&&b;e||d.data("bs.button",e=new c(this,f)),"toggle"==b?e.toggle():b&&e.setState(b)})}var c=function(b,d){this.$element=a(b),this.options=a.extend({},c.DEFAULTS,d),this.isLoading=!1};c.VERSION="3.3.7",c.DEFAULTS={loadingText:"loading..."},c.prototype.setState=function(b){var c="disabled",d=this.$element,e=d.is("input")?"val":"html",f=d.data();b+="Text",null==f.resetText&&d.data("resetText",d[e]()),setTimeout(a.proxy(function(){d[e](null==f[b]?this.options[b]:f[b]),"loadingText"==b?(this.isLoading=!0,d.addClass(c).attr(c,c).prop(c,!0)):this.isLoading&&(this.isLoading=!1,d.removeClass(c).removeAttr(c).prop(c,!1))},this),0)},c.prototype.toggle=function(){var a=!0,b=this.$element.closest('[data-toggle="buttons"]');if(b.length){var c=this.$element.find("input");"radio"==c.prop("type")?(c.prop("checked")&&(a=!1),b.find(".active").removeClass("active"),this.$element.addClass("active")):"checkbox"==c.prop("type")&&(c.prop("checked")!==this.$element.hasClass("active")&&(a=!1),this.$element.toggleClass("active")),c.prop("checked",this.$element.hasClass("active")),a&&c.trigger("change")}else this.$element.attr("aria-pressed",!this.$element.hasClass("active")),this.$element.toggleClass("active")};var d=a.fn.button;a.fn.button=b,a.fn.button.Constructor=c,a.fn.button.noConflict=function(){return a.fn.button=d,this},a(document).on("click.bs.button.data-api",'[data-toggle^="button"]',function(c){var d=a(c.target).closest(".btn");b.call(d,"toggle"),a(c.target).is('input[type="radio"], input[type="checkbox"]')||(c.preventDefault(),d.is("input,button")?d.trigger("focus"):d.find("input:visible,button:visible").first().trigger("focus"))}).on("focus.bs.button.data-api blur.bs.button.data-api",'[data-toggle^="button"]',function(b){a(b.target).closest(".btn").toggleClass("focus",/^focus(in)?$/.test(b.type))})}(jQuery),+function(a){"use strict";function b(b){return this.each(function(){var d=a(this),e=d.data("bs.carousel"),f=a.extend({},c.DEFAULTS,d.data(),"object"==typeof b&&b),g="string"==typeof b?b:f.slide;e||d.data("bs.carousel",e=new c(this,f)),"number"==typeof b?e.to(b):g?e[g]():f.interval&&e.pause().cycle()})}var c=function(b,c){this.$element=a(b),this.$indicators=this.$element.find(".carousel-indicators"),this.options=c,this.paused=null,this.sliding=null,this.interval=null,this.$active=null,this.$items=null,this.options.keyboard&&this.$element.on("keydown.bs.carousel",a.proxy(this.keydown,this)),"hover"==this.options.pause&&!("ontouchstart"in document.documentElement)&&this.$element.on("mouseenter.bs.carousel",a.proxy(this.pause,this)).on("mouseleave.bs.carousel",a.proxy(this.cycle,this))};c.VERSION="3.3.7",c.TRANSITION_DURATION=600,c.DEFAULTS={interval:5e3,pause:"hover",wrap:!0,keyboard:!0},c.prototype.keydown=function(a){if(!/input|textarea/i.test(a.target.tagName)){switch(a.which){case 37:this.prev();break;case 39:this.next();break;default:return}a.preventDefault()}},c.prototype.cycle=function(b){return b||(this.paused=!1),this.interval&&clearInterval(this.interval),this.options.interval&&!this.paused&&(this.interval=setInterval(a.proxy(this.next,this),this.options.interval)),this},c.prototype.getItemIndex=function(a){return this.$items=a.parent().children(".item"),this.$items.index(a||this.$active)},c.prototype.getItemForDirection=function(a,b){var c=this.getItemIndex(b),d="prev"==a&&0===c||"next"==a&&c==this.$items.length-1;if(d&&!this.options.wrap)return b;var e="prev"==a?-1:1,f=(c+e)%this.$items.length;return this.$items.eq(f)},c.prototype.to=function(a){var b=this,c=this.getItemIndex(this.$active=this.$element.find(".item.active"));if(!(a>this.$items.length-1||a<0))return this.sliding?this.$element.one("slid.bs.carousel",function(){b.to(a)}):c==a?this.pause().cycle():this.slide(a>c?"next":"prev",this.$items.eq(a))},c.prototype.pause=function(b){return b||(this.paused=!0),this.$element.find(".next, .prev").length&&a.support.transition&&(this.$element.trigger(a.support.transition.end),this.cycle(!0)),this.interval=clearInterval(this.interval),this},c.prototype.next=function(){if(!this.sliding)return this.slide("next")},c.prototype.prev=function(){if(!this.sliding)return this.slide("prev")},c.prototype.slide=function(b,d){var e=this.$element.find(".item.active"),f=d||this.getItemForDirection(b,e),g=this.interval,h="next"==b?"left":"right",i=this;if(f.hasClass("active"))return this.sliding=!1;var j=f[0],k=a.Event("slide.bs.carousel",{relatedTarget:j,direction:h});if(this.$element.trigger(k),!k.isDefaultPrevented()){if(this.sliding=!0,g&&this.pause(),this.$indicators.length){this.$indicators.find(".active").removeClass("active");var l=a(this.$indicators.children()[this.getItemIndex(f)]);l&&l.addClass("active")}var m=a.Event("slid.bs.carousel",{relatedTarget:j,direction:h});return a.support.transition&&this.$element.hasClass("slide")?(f.addClass(b),f[0].offsetWidth,e.addClass(h),f.addClass(h),e.one("bsTransitionEnd",function(){f.removeClass([b,h].join(" ")).addClass("active"),e.removeClass(["active",h].join(" ")),i.sliding=!1,setTimeout(function(){i.$element.trigger(m)},0)}).emulateTransitionEnd(c.TRANSITION_DURATION)):(e.removeClass("active"),f.addClass("active"),this.sliding=!1,this.$element.trigger(m)),g&&this.cycle(),this}};var d=a.fn.carousel;a.fn.carousel=b,a.fn.carousel.Constructor=c,a.fn.carousel.noConflict=function(){return a.fn.carousel=d,this};var e=function(c){var d,e=a(this),f=a(e.attr("data-target")||(d=e.attr("href"))&&d.replace(/.*(?=#[^\s]+$)/,""));if(f.hasClass("carousel")){var g=a.extend({},f.data(),e.data()),h=e.attr("data-slide-to");h&&(g.interval=!1),b.call(f,g),h&&f.data("bs.carousel").to(h),c.preventDefault()}};a(document).on("click.bs.carousel.data-api","[data-slide]",e).on("click.bs.carousel.data-api","[data-slide-to]",e),a(window).on("load",function(){a('[data-ride="carousel"]').each(function(){var c=a(this);b.call(c,c.data())})})}(jQuery),+function(a){"use strict";function b(b){var c,d=b.attr("data-target")||(c=b.attr("href"))&&c.replace(/.*(?=#[^\s]+$)/,"");return a(d)}function c(b){return this.each(function(){var c=a(this),e=c.data("bs.collapse"),f=a.extend({},d.DEFAULTS,c.data(),"object"==typeof b&&b);!e&&f.toggle&&/show|hide/.test(b)&&(f.toggle=!1),e||c.data("bs.collapse",e=new d(this,f)),"string"==typeof b&&e[b]()})}var d=function(b,c){this.$element=a(b),this.options=a.extend({},d.DEFAULTS,c),this.$trigger=a('[data-toggle="collapse"][href="#'+b.id+'"],[data-toggle="collapse"][data-target="#'+b.id+'"]'),this.transitioning=null,this.options.parent?this.$parent=this.getParent():this.addAriaAndCollapsedClass(this.$element,this.$trigger),this.options.toggle&&this.toggle()};d.VERSION="3.3.7",d.TRANSITION_DURATION=350,d.DEFAULTS={toggle:!0},d.prototype.dimension=function(){var a=this.$element.hasClass("width");return a?"width":"height"},d.prototype.show=function(){if(!this.transitioning&&!this.$element.hasClass("in")){var b,e=this.$parent&&this.$parent.children(".panel").children(".in, .collapsing");if(!(e&&e.length&&(b=e.data("bs.collapse"),b&&b.transitioning))){var f=a.Event("show.bs.collapse");if(this.$element.trigger(f),!f.isDefaultPrevented()){e&&e.length&&(c.call(e,"hide"),b||e.data("bs.collapse",null));var g=this.dimension();this.$element.removeClass("collapse").addClass("collapsing")[g](0).attr("aria-expanded",!0),this.$trigger.removeClass("collapsed").attr("aria-expanded",!0),this.transitioning=1;var h=function(){this.$element.removeClass("collapsing").addClass("collapse in")[g](""),this.transitioning=0,this.$element.trigger("shown.bs.collapse")};if(!a.support.transition)return h.call(this);var i=a.camelCase(["scroll",g].join("-"));this.$element.one("bsTransitionEnd",a.proxy(h,this)).emulateTransitionEnd(d.TRANSITION_DURATION)[g](this.$element[0][i])}}}},d.prototype.hide=function(){if(!this.transitioning&&this.$element.hasClass("in")){var b=a.Event("hide.bs.collapse");if(this.$element.trigger(b),!b.isDefaultPrevented()){var c=this.dimension();this.$element[c](this.$element[c]())[0].offsetHeight,this.$element.addClass("collapsing").removeClass("collapse in").attr("aria-expanded",!1),this.$trigger.addClass("collapsed").attr("aria-expanded",!1),this.transitioning=1;var e=function(){this.transitioning=0,this.$element.removeClass("collapsing").addClass("collapse").trigger("hidden.bs.collapse")};return a.support.transition?void this.$element[c](0).one("bsTransitionEnd",a.proxy(e,this)).emulateTransitionEnd(d.TRANSITION_DURATION):e.call(this)}}},d.prototype.toggle=function(){this[this.$element.hasClass("in")?"hide":"show"]()},d.prototype.getParent=function(){return a(this.options.parent).find('[data-toggle="collapse"][data-parent="'+this.options.parent+'"]').each(a.proxy(function(c,d){var e=a(d);this.addAriaAndCollapsedClass(b(e),e)},this)).end()},d.prototype.addAriaAndCollapsedClass=function(a,b){var c=a.hasClass("in");a.attr("aria-expanded",c),b.toggleClass("collapsed",!c).attr("aria-expanded",c)};var e=a.fn.collapse;a.fn.collapse=c,a.fn.collapse.Constructor=d,a.fn.collapse.noConflict=function(){return a.fn.collapse=e,this},a(document).on("click.bs.collapse.data-api",'[data-toggle="collapse"]',function(d){var e=a(this);e.attr("data-target")||d.preventDefault();var f=b(e),g=f.data("bs.collapse"),h=g?"toggle":e.data();c.call(f,h)})}(jQuery),+function(a){"use strict";function b(b){var c=b.attr("data-target");c||(c=b.attr("href"),c=c&&/#[A-Za-z]/.test(c)&&c.replace(/.*(?=#[^\s]*$)/,""));var d=c&&a(c);return d&&d.length?d:b.parent()}function c(c){c&&3===c.which||(a(e).remove(),a(f).each(function(){var d=a(this),e=b(d),f={relatedTarget:this};e.hasClass("open")&&(c&&"click"==c.type&&/input|textarea/i.test(c.target.tagName)&&a.contains(e[0],c.target)||(e.trigger(c=a.Event("hide.bs.dropdown",f)),c.isDefaultPrevented()||(d.attr("aria-expanded","false"),e.removeClass("open").trigger(a.Event("hidden.bs.dropdown",f)))))}))}function d(b){return this.each(function(){var c=a(this),d=c.data("bs.dropdown");d||c.data("bs.dropdown",d=new g(this)),"string"==typeof b&&d[b].call(c)})}var e=".dropdown-backdrop",f='[data-toggle="dropdown"]',g=function(b){a(b).on("click.bs.dropdown",this.toggle)};g.VERSION="3.3.7",g.prototype.toggle=function(d){var e=a(this);if(!e.is(".disabled, :disabled")){var f=b(e),g=f.hasClass("open");if(c(),!g){"ontouchstart"in document.documentElement&&!f.closest(".navbar-nav").length&&a(document.createElement("div")).addClass("dropdown-backdrop").insertAfter(a(this)).on("click",c);var h={relatedTarget:this};if(f.trigger(d=a.Event("show.bs.dropdown",h)),d.isDefaultPrevented())return;e.trigger("focus").attr("aria-expanded","true"),f.toggleClass("open").trigger(a.Event("shown.bs.dropdown",h))}return!1}},g.prototype.keydown=function(c){if(/(38|40|27|32)/.test(c.which)&&!/input|textarea/i.test(c.target.tagName)){var d=a(this);if(c.preventDefault(),c.stopPropagation(),!d.is(".disabled, :disabled")){var e=b(d),g=e.hasClass("open");if(!g&&27!=c.which||g&&27==c.which)return 27==c.which&&e.find(f).trigger("focus"),d.trigger("click");var h=" li:not(.disabled):visible a",i=e.find(".dropdown-menu"+h);if(i.length){var j=i.index(c.target);38==c.which&&j>0&&j--,40==c.which&&jdocument.documentElement.clientHeight;this.$element.css({paddingLeft:!this.bodyIsOverflowing&&a?this.scrollbarWidth:"",paddingRight:this.bodyIsOverflowing&&!a?this.scrollbarWidth:""})},c.prototype.resetAdjustments=function(){this.$element.css({paddingLeft:"",paddingRight:""})},c.prototype.checkScrollbar=function(){var a=window.innerWidth;if(!a){var b=document.documentElement.getBoundingClientRect();a=b.right-Math.abs(b.left)}this.bodyIsOverflowing=document.body.clientWidth
      ',trigger:"hover focus",title:"",delay:0,html:!1,container:!1,viewport:{selector:"body",padding:0}},c.prototype.init=function(b,c,d){if(this.enabled=!0,this.type=b,this.$element=a(c),this.options=this.getOptions(d),this.$viewport=this.options.viewport&&a(a.isFunction(this.options.viewport)?this.options.viewport.call(this,this.$element):this.options.viewport.selector||this.options.viewport),this.inState={click:!1,hover:!1,focus:!1},this.$element[0]instanceof document.constructor&&!this.options.selector)throw new Error("`selector` option must be specified when initializing "+this.type+" on the window.document object!");for(var e=this.options.trigger.split(" "),f=e.length;f--;){var g=e[f];if("click"==g)this.$element.on("click."+this.type,this.options.selector,a.proxy(this.toggle,this));else if("manual"!=g){var h="hover"==g?"mouseenter":"focusin",i="hover"==g?"mouseleave":"focusout";this.$element.on(h+"."+this.type,this.options.selector,a.proxy(this.enter,this)),this.$element.on(i+"."+this.type,this.options.selector,a.proxy(this.leave,this))}}this.options.selector?this._options=a.extend({},this.options,{trigger:"manual",selector:""}):this.fixTitle()},c.prototype.getDefaults=function(){return c.DEFAULTS},c.prototype.getOptions=function(b){return b=a.extend({},this.getDefaults(),this.$element.data(),b),b.delay&&"number"==typeof b.delay&&(b.delay={show:b.delay,hide:b.delay}),b},c.prototype.getDelegateOptions=function(){var b={},c=this.getDefaults();return this._options&&a.each(this._options,function(a,d){c[a]!=d&&(b[a]=d)}),b},c.prototype.enter=function(b){var c=b instanceof this.constructor?b:a(b.currentTarget).data("bs."+this.type);return c||(c=new this.constructor(b.currentTarget,this.getDelegateOptions()),a(b.currentTarget).data("bs."+this.type,c)),b instanceof a.Event&&(c.inState["focusin"==b.type?"focus":"hover"]=!0),c.tip().hasClass("in")||"in"==c.hoverState?void(c.hoverState="in"):(clearTimeout(c.timeout),c.hoverState="in",c.options.delay&&c.options.delay.show?void(c.timeout=setTimeout(function(){"in"==c.hoverState&&c.show()},c.options.delay.show)):c.show())},c.prototype.isInStateTrue=function(){for(var a in this.inState)if(this.inState[a])return!0;return!1},c.prototype.leave=function(b){var c=b instanceof this.constructor?b:a(b.currentTarget).data("bs."+this.type);if(c||(c=new this.constructor(b.currentTarget,this.getDelegateOptions()),a(b.currentTarget).data("bs."+this.type,c)),b instanceof a.Event&&(c.inState["focusout"==b.type?"focus":"hover"]=!1),!c.isInStateTrue())return clearTimeout(c.timeout),c.hoverState="out",c.options.delay&&c.options.delay.hide?void(c.timeout=setTimeout(function(){"out"==c.hoverState&&c.hide()},c.options.delay.hide)):c.hide()},c.prototype.show=function(){var b=a.Event("show.bs."+this.type);if(this.hasContent()&&this.enabled){this.$element.trigger(b);var d=a.contains(this.$element[0].ownerDocument.documentElement,this.$element[0]);if(b.isDefaultPrevented()||!d)return;var e=this,f=this.tip(),g=this.getUID(this.type);this.setContent(),f.attr("id",g),this.$element.attr("aria-describedby",g),this.options.animation&&f.addClass("fade");var h="function"==typeof this.options.placement?this.options.placement.call(this,f[0],this.$element[0]):this.options.placement,i=/\s?auto?\s?/i,j=i.test(h);j&&(h=h.replace(i,"")||"top"),f.detach().css({top:0,left:0,display:"block"}).addClass(h).data("bs."+this.type,this),this.options.container?f.appendTo(this.options.container):f.insertAfter(this.$element),this.$element.trigger("inserted.bs."+this.type);var k=this.getPosition(),l=f[0].offsetWidth,m=f[0].offsetHeight;if(j){var n=h,o=this.getPosition(this.$viewport);h="bottom"==h&&k.bottom+m>o.bottom?"top":"top"==h&&k.top-mo.width?"left":"left"==h&&k.left-lg.top+g.height&&(e.top=g.top+g.height-i)}else{var j=b.left-f,k=b.left+f+c;jg.right&&(e.left=g.left+g.width-k)}return e},c.prototype.getTitle=function(){var a,b=this.$element,c=this.options;return a=b.attr("data-original-title")||("function"==typeof c.title?c.title.call(b[0]):c.title)},c.prototype.getUID=function(a){do a+=~~(1e6*Math.random());while(document.getElementById(a));return a},c.prototype.tip=function(){if(!this.$tip&&(this.$tip=a(this.options.template),1!=this.$tip.length))throw new Error(this.type+" `template` option must consist of exactly 1 top-level element!");return this.$tip},c.prototype.arrow=function(){return this.$arrow=this.$arrow||this.tip().find(".tooltip-arrow")},c.prototype.enable=function(){this.enabled=!0},c.prototype.disable=function(){this.enabled=!1},c.prototype.toggleEnabled=function(){this.enabled=!this.enabled},c.prototype.toggle=function(b){var c=this;b&&(c=a(b.currentTarget).data("bs."+this.type),c||(c=new this.constructor(b.currentTarget,this.getDelegateOptions()),a(b.currentTarget).data("bs."+this.type,c))),b?(c.inState.click=!c.inState.click,c.isInStateTrue()?c.enter(c):c.leave(c)):c.tip().hasClass("in")?c.leave(c):c.enter(c)},c.prototype.destroy=function(){var a=this;clearTimeout(this.timeout),this.hide(function(){a.$element.off("."+a.type).removeData("bs."+a.type),a.$tip&&a.$tip.detach(),a.$tip=null,a.$arrow=null,a.$viewport=null,a.$element=null})};var d=a.fn.tooltip;a.fn.tooltip=b,a.fn.tooltip.Constructor=c,a.fn.tooltip.noConflict=function(){return a.fn.tooltip=d,this}}(jQuery),+function(a){"use strict";function b(b){return this.each(function(){var d=a(this),e=d.data("bs.popover"),f="object"==typeof b&&b;!e&&/destroy|hide/.test(b)||(e||d.data("bs.popover",e=new c(this,f)),"string"==typeof b&&e[b]())})}var c=function(a,b){this.init("popover",a,b)};if(!a.fn.tooltip)throw new Error("Popover requires tooltip.js");c.VERSION="3.3.7",c.DEFAULTS=a.extend({},a.fn.tooltip.Constructor.DEFAULTS,{placement:"right",trigger:"click",content:"",template:''}),c.prototype=a.extend({},a.fn.tooltip.Constructor.prototype),c.prototype.constructor=c,c.prototype.getDefaults=function(){return c.DEFAULTS},c.prototype.setContent=function(){var a=this.tip(),b=this.getTitle(),c=this.getContent();a.find(".popover-title")[this.options.html?"html":"text"](b),a.find(".popover-content").children().detach().end()[this.options.html?"string"==typeof c?"html":"append":"text"](c),a.removeClass("fade top bottom left right in"),a.find(".popover-title").html()||a.find(".popover-title").hide()},c.prototype.hasContent=function(){return this.getTitle()||this.getContent()},c.prototype.getContent=function(){var a=this.$element,b=this.options;return a.attr("data-content")||("function"==typeof b.content?b.content.call(a[0]):b.content)},c.prototype.arrow=function(){return this.$arrow=this.$arrow||this.tip().find(".arrow")};var d=a.fn.popover;a.fn.popover=b,a.fn.popover.Constructor=c,a.fn.popover.noConflict=function(){return a.fn.popover=d,this}}(jQuery),+function(a){"use strict";function b(c,d){this.$body=a(document.body),this.$scrollElement=a(a(c).is(document.body)?window:c),this.options=a.extend({},b.DEFAULTS,d),this.selector=(this.options.target||"")+" .nav li > a",this.offsets=[],this.targets=[],this.activeTarget=null,this.scrollHeight=0,this.$scrollElement.on("scroll.bs.scrollspy",a.proxy(this.process,this)),this.refresh(),this.process()}function c(c){return this.each(function(){var d=a(this),e=d.data("bs.scrollspy"),f="object"==typeof c&&c;e||d.data("bs.scrollspy",e=new b(this,f)),"string"==typeof c&&e[c]()})}b.VERSION="3.3.7",b.DEFAULTS={offset:10},b.prototype.getScrollHeight=function(){return this.$scrollElement[0].scrollHeight||Math.max(this.$body[0].scrollHeight,document.documentElement.scrollHeight)},b.prototype.refresh=function(){var b=this,c="offset",d=0;this.offsets=[],this.targets=[],this.scrollHeight=this.getScrollHeight(),a.isWindow(this.$scrollElement[0])||(c="position",d=this.$scrollElement.scrollTop()),this.$body.find(this.selector).map(function(){var b=a(this),e=b.data("target")||b.attr("href"),f=/^#./.test(e)&&a(e);return f&&f.length&&f.is(":visible")&&[[f[c]().top+d,e]]||null}).sort(function(a,b){return a[0]-b[0]}).each(function(){b.offsets.push(this[0]),b.targets.push(this[1])})},b.prototype.process=function(){var a,b=this.$scrollElement.scrollTop()+this.options.offset,c=this.getScrollHeight(),d=this.options.offset+c-this.$scrollElement.height(),e=this.offsets,f=this.targets,g=this.activeTarget;if(this.scrollHeight!=c&&this.refresh(),b>=d)return g!=(a=f[f.length-1])&&this.activate(a);if(g&&b=e[a]&&(void 0===e[a+1]||b .dropdown-menu > .active").removeClass("active").end().find('[data-toggle="tab"]').attr("aria-expanded",!1),b.addClass("active").find('[data-toggle="tab"]').attr("aria-expanded",!0),h?(b[0].offsetWidth,b.addClass("in")):b.removeClass("fade"),b.parent(".dropdown-menu").length&&b.closest("li.dropdown").addClass("active").end().find('[data-toggle="tab"]').attr("aria-expanded",!0),e&&e()}var g=d.find("> .active"),h=e&&a.support.transition&&(g.length&&g.hasClass("fade")||!!d.find("> .fade").length);g.length&&h?g.one("bsTransitionEnd",f).emulateTransitionEnd(c.TRANSITION_DURATION):f(),g.removeClass("in")};var d=a.fn.tab;a.fn.tab=b,a.fn.tab.Constructor=c,a.fn.tab.noConflict=function(){return a.fn.tab=d,this};var e=function(c){c.preventDefault(),b.call(a(this),"show")};a(document).on("click.bs.tab.data-api",'[data-toggle="tab"]',e).on("click.bs.tab.data-api",'[data-toggle="pill"]',e)}(jQuery),+function(a){"use strict";function b(b){return this.each(function(){var d=a(this),e=d.data("bs.affix"),f="object"==typeof b&&b;e||d.data("bs.affix",e=new c(this,f)),"string"==typeof b&&e[b]()})}var c=function(b,d){this.options=a.extend({},c.DEFAULTS,d),this.$target=a(this.options.target).on("scroll.bs.affix.data-api",a.proxy(this.checkPosition,this)).on("click.bs.affix.data-api",a.proxy(this.checkPositionWithEventLoop,this)),this.$element=a(b),this.affixed=null,this.unpin=null,this.pinnedOffset=null,this.checkPosition()};c.VERSION="3.3.7",c.RESET="affix affix-top affix-bottom",c.DEFAULTS={offset:0,target:window},c.prototype.getState=function(a,b,c,d){var e=this.$target.scrollTop(),f=this.$element.offset(),g=this.$target.height();if(null!=c&&"top"==this.affixed)return e=a-d&&"bottom"},c.prototype.getPinnedOffset=function(){if(this.pinnedOffset)return this.pinnedOffset;this.$element.removeClass(c.RESET).addClass("affix");var a=this.$target.scrollTop(),b=this.$element.offset();return this.pinnedOffset=b.top-a},c.prototype.checkPositionWithEventLoop=function(){setTimeout(a.proxy(this.checkPosition,this),1)},c.prototype.checkPosition=function(){if(this.$element.is(":visible")){var b=this.$element.height(),d=this.options.offset,e=d.top,f=d.bottom,g=Math.max(a(document).height(),a(document.body).height());"object"!=typeof d&&(f=e=d),"function"==typeof e&&(e=d.top(this.$element)),"function"==typeof f&&(f=d.bottom(this.$element));var h=this.getState(g,b,e,f);if(this.affixed!=h){null!=this.unpin&&this.$element.css("top","");var i="affix"+(h?"-"+h:""),j=a.Event(i+".bs.affix");if(this.$element.trigger(j),j.isDefaultPrevented())return;this.affixed=h,this.unpin="bottom"==h?this.getPinnedOffset():null,this.$element.removeClass(c.RESET).addClass(i).trigger(i.replace("affix","affixed")+".bs.affix")}"bottom"==h&&this.$element.offset({top:g-b-f})}};var d=a.fn.affix;a.fn.affix=b,a.fn.affix.Constructor=c,a.fn.affix.noConflict=function(){return a.fn.affix=d,this},a(window).on("load",function(){a('[data-spy="affix"]').each(function(){var c=a(this),d=c.data();d.offset=d.offset||{},null!=d.offsetBottom&&(d.offset.bottom=d.offsetBottom),null!=d.offsetTop&&(d.offset.top=d.offsetTop),b.call(c,d)})})}(jQuery); \ No newline at end of file diff --git a/tools/NKeditor/libs/jquery.min.js b/tools/NKeditor/libs/jquery.min.js new file mode 100644 index 00000000..dc672fb6 --- /dev/null +++ b/tools/NKeditor/libs/jquery.min.js @@ -0,0 +1,5 @@ +/*! jQuery v1.11.1 -effects,-effects/Tween,-effects/animatedSelector,-effects/support | (c) 2005, 2014 jQuery Foundation, Inc. | jquery.org/license */ +!function(a,b){"object"==typeof module&&"object"==typeof module.exports?module.exports=a.document?b(a,!0):function(a){if(!a.document)throw new Error("jQuery requires a window with a document");return b(a)}:b(a)}("undefined"!=typeof window?window:this,function(a,b){var c=[],d=c.slice,e=c.concat,f=c.push,g=c.indexOf,h={},i=h.toString,j=h.hasOwnProperty,k={},l="1.11.1 -effects,-effects/Tween,-effects/animatedSelector,-effects/support",m=function(a,b){return new m.fn.init(a,b)},n=/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g,o=/^-ms-/,p=/-([\da-z])/gi,q=function(a,b){return b.toUpperCase()};m.fn=m.prototype={jquery:l,constructor:m,selector:"",length:0,toArray:function(){return d.call(this)},get:function(a){return null!=a?0>a?this[a+this.length]:this[a]:d.call(this)},pushStack:function(a){var b=m.merge(this.constructor(),a);return b.prevObject=this,b.context=this.context,b},each:function(a,b){return m.each(this,a,b)},map:function(a){return this.pushStack(m.map(this,function(b,c){return a.call(b,c,b)}))},slice:function(){return this.pushStack(d.apply(this,arguments))},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},eq:function(a){var b=this.length,c=+a+(0>a?b:0);return this.pushStack(c>=0&&b>c?[this[c]]:[])},end:function(){return this.prevObject||this.constructor(null)},push:f,sort:c.sort,splice:c.splice},m.extend=m.fn.extend=function(){var a,b,c,d,e,f,g=arguments[0]||{},h=1,i=arguments.length,j=!1;for("boolean"==typeof g&&(j=g,g=arguments[h]||{},h++),"object"==typeof g||m.isFunction(g)||(g={}),h===i&&(g=this,h--);i>h;h++)if(null!=(e=arguments[h]))for(d in e)a=g[d],c=e[d],g!==c&&(j&&c&&(m.isPlainObject(c)||(b=m.isArray(c)))?(b?(b=!1,f=a&&m.isArray(a)?a:[]):f=a&&m.isPlainObject(a)?a:{},g[d]=m.extend(j,f,c)):void 0!==c&&(g[d]=c));return g},m.extend({expando:"jQuery"+(l+Math.random()).replace(/\D/g,""),isReady:!0,error:function(a){throw new Error(a)},noop:function(){},isFunction:function(a){return"function"===m.type(a)},isArray:Array.isArray||function(a){return"array"===m.type(a)},isWindow:function(a){return null!=a&&a==a.window},isNumeric:function(a){return!m.isArray(a)&&a-parseFloat(a)>=0},isEmptyObject:function(a){var b;for(b in a)return!1;return!0},isPlainObject:function(a){var b;if(!a||"object"!==m.type(a)||a.nodeType||m.isWindow(a))return!1;try{if(a.constructor&&!j.call(a,"constructor")&&!j.call(a.constructor.prototype,"isPrototypeOf"))return!1}catch(c){return!1}if(k.ownLast)for(b in a)return j.call(a,b);for(b in a);return void 0===b||j.call(a,b)},type:function(a){return null==a?a+"":"object"==typeof a||"function"==typeof a?h[i.call(a)]||"object":typeof a},globalEval:function(b){b&&m.trim(b)&&(a.execScript||function(b){a.eval.call(a,b)})(b)},camelCase:function(a){return a.replace(o,"ms-").replace(p,q)},nodeName:function(a,b){return a.nodeName&&a.nodeName.toLowerCase()===b.toLowerCase()},each:function(a,b,c){var d,e=0,f=a.length,g=r(a);if(c){if(g){for(;f>e;e++)if(d=b.apply(a[e],c),d===!1)break}else for(e in a)if(d=b.apply(a[e],c),d===!1)break}else if(g){for(;f>e;e++)if(d=b.call(a[e],e,a[e]),d===!1)break}else for(e in a)if(d=b.call(a[e],e,a[e]),d===!1)break;return a},trim:function(a){return null==a?"":(a+"").replace(n,"")},makeArray:function(a,b){var c=b||[];return null!=a&&(r(Object(a))?m.merge(c,"string"==typeof a?[a]:a):f.call(c,a)),c},inArray:function(a,b,c){var d;if(b){if(g)return g.call(b,a,c);for(d=b.length,c=c?0>c?Math.max(0,d+c):c:0;d>c;c++)if(c in b&&b[c]===a)return c}return-1},merge:function(a,b){var c=+b.length,d=0,e=a.length;while(c>d)a[e++]=b[d++];if(c!==c)while(void 0!==b[d])a[e++]=b[d++];return a.length=e,a},grep:function(a,b,c){for(var d,e=[],f=0,g=a.length,h=!c;g>f;f++)d=!b(a[f],f),d!==h&&e.push(a[f]);return e},map:function(a,b,c){var d,f=0,g=a.length,h=r(a),i=[];if(h)for(;g>f;f++)d=b(a[f],f,c),null!=d&&i.push(d);else for(f in a)d=b(a[f],f,c),null!=d&&i.push(d);return e.apply([],i)},guid:1,proxy:function(a,b){var c,e,f;return"string"==typeof b&&(f=a[b],b=a,a=f),m.isFunction(a)?(c=d.call(arguments,2),e=function(){return a.apply(b||this,c.concat(d.call(arguments)))},e.guid=a.guid=a.guid||m.guid++,e):void 0},now:function(){return+new Date},support:k}),m.each("Boolean Number String Function Array Date RegExp Object Error".split(" "),function(a,b){h["[object "+b+"]"]=b.toLowerCase()});function r(a){var b=a.length,c=m.type(a);return"function"===c||m.isWindow(a)?!1:1===a.nodeType&&b?!0:"array"===c||0===b||"number"==typeof b&&b>0&&b-1 in a}var s=function(a){var b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u="sizzle"+-new Date,v=a.document,w=0,x=0,y=gb(),z=gb(),A=gb(),B=function(a,b){return a===b&&(l=!0),0},C="undefined",D=1<<31,E={}.hasOwnProperty,F=[],G=F.pop,H=F.push,I=F.push,J=F.slice,K=F.indexOf||function(a){for(var b=0,c=this.length;c>b;b++)if(this[b]===a)return b;return-1},L="checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped",M="[\\x20\\t\\r\\n\\f]",N="(?:\\\\.|[\\w-]|[^\\x00-\\xa0])+",O=N.replace("w","w#"),P="\\["+M+"*("+N+")(?:"+M+"*([*^$|!~]?=)"+M+"*(?:'((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\"|("+O+"))|)"+M+"*\\]",Q=":("+N+")(?:\\((('((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\")|((?:\\\\.|[^\\\\()[\\]]|"+P+")*)|.*)\\)|)",R=new RegExp("^"+M+"+|((?:^|[^\\\\])(?:\\\\.)*)"+M+"+$","g"),S=new RegExp("^"+M+"*,"+M+"*"),T=new RegExp("^"+M+"*([>+~]|"+M+")"+M+"*"),U=new RegExp("="+M+"*([^\\]'\"]*?)"+M+"*\\]","g"),V=new RegExp(Q),W=new RegExp("^"+O+"$"),X={ID:new RegExp("^#("+N+")"),CLASS:new RegExp("^\\.("+N+")"),TAG:new RegExp("^("+N.replace("w","w*")+")"),ATTR:new RegExp("^"+P),PSEUDO:new RegExp("^"+Q),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+M+"*(even|odd|(([+-]|)(\\d*)n|)"+M+"*(?:([+-]|)"+M+"*(\\d+)|))"+M+"*\\)|)","i"),bool:new RegExp("^(?:"+L+")$","i"),needsContext:new RegExp("^"+M+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+M+"*((?:-\\d)?\\d*)"+M+"*\\)|)(?=[^-]|$)","i")},Y=/^(?:input|select|textarea|button)$/i,Z=/^h\d$/i,$=/^[^{]+\{\s*\[native \w/,_=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,ab=/[+~]/,bb=/'|\\/g,cb=new RegExp("\\\\([\\da-f]{1,6}"+M+"?|("+M+")|.)","ig"),db=function(a,b,c){var d="0x"+b-65536;return d!==d||c?b:0>d?String.fromCharCode(d+65536):String.fromCharCode(d>>10|55296,1023&d|56320)};try{I.apply(F=J.call(v.childNodes),v.childNodes),F[v.childNodes.length].nodeType}catch(eb){I={apply:F.length?function(a,b){H.apply(a,J.call(b))}:function(a,b){var c=a.length,d=0;while(a[c++]=b[d++]);a.length=c-1}}}function fb(a,b,d,e){var f,h,j,k,l,o,r,s,w,x;if((b?b.ownerDocument||b:v)!==n&&m(b),b=b||n,d=d||[],!a||"string"!=typeof a)return d;if(1!==(k=b.nodeType)&&9!==k)return[];if(p&&!e){if(f=_.exec(a))if(j=f[1]){if(9===k){if(h=b.getElementById(j),!h||!h.parentNode)return d;if(h.id===j)return d.push(h),d}else if(b.ownerDocument&&(h=b.ownerDocument.getElementById(j))&&t(b,h)&&h.id===j)return d.push(h),d}else{if(f[2])return I.apply(d,b.getElementsByTagName(a)),d;if((j=f[3])&&c.getElementsByClassName&&b.getElementsByClassName)return I.apply(d,b.getElementsByClassName(j)),d}if(c.qsa&&(!q||!q.test(a))){if(s=r=u,w=b,x=9===k&&a,1===k&&"object"!==b.nodeName.toLowerCase()){o=g(a),(r=b.getAttribute("id"))?s=r.replace(bb,"\\$&"):b.setAttribute("id",s),s="[id='"+s+"'] ",l=o.length;while(l--)o[l]=s+qb(o[l]);w=ab.test(a)&&ob(b.parentNode)||b,x=o.join(",")}if(x)try{return I.apply(d,w.querySelectorAll(x)),d}catch(y){}finally{r||b.removeAttribute("id")}}}return i(a.replace(R,"$1"),b,d,e)}function gb(){var a=[];function b(c,e){return a.push(c+" ")>d.cacheLength&&delete b[a.shift()],b[c+" "]=e}return b}function hb(a){return a[u]=!0,a}function ib(a){var b=n.createElement("div");try{return!!a(b)}catch(c){return!1}finally{b.parentNode&&b.parentNode.removeChild(b),b=null}}function jb(a,b){var c=a.split("|"),e=a.length;while(e--)d.attrHandle[c[e]]=b}function kb(a,b){var c=b&&a,d=c&&1===a.nodeType&&1===b.nodeType&&(~b.sourceIndex||D)-(~a.sourceIndex||D);if(d)return d;if(c)while(c=c.nextSibling)if(c===b)return-1;return a?1:-1}function lb(a){return function(b){var c=b.nodeName.toLowerCase();return"input"===c&&b.type===a}}function mb(a){return function(b){var c=b.nodeName.toLowerCase();return("input"===c||"button"===c)&&b.type===a}}function nb(a){return hb(function(b){return b=+b,hb(function(c,d){var e,f=a([],c.length,b),g=f.length;while(g--)c[e=f[g]]&&(c[e]=!(d[e]=c[e]))})})}function ob(a){return a&&typeof a.getElementsByTagName!==C&&a}c=fb.support={},f=fb.isXML=function(a){var b=a&&(a.ownerDocument||a).documentElement;return b?"HTML"!==b.nodeName:!1},m=fb.setDocument=function(a){var b,e=a?a.ownerDocument||a:v,g=e.defaultView;return e!==n&&9===e.nodeType&&e.documentElement?(n=e,o=e.documentElement,p=!f(e),g&&g!==g.top&&(g.addEventListener?g.addEventListener("unload",function(){m()},!1):g.attachEvent&&g.attachEvent("onunload",function(){m()})),c.attributes=ib(function(a){return a.className="i",!a.getAttribute("className")}),c.getElementsByTagName=ib(function(a){return a.appendChild(e.createComment("")),!a.getElementsByTagName("*").length}),c.getElementsByClassName=$.test(e.getElementsByClassName)&&ib(function(a){return a.innerHTML="
      ",a.firstChild.className="i",2===a.getElementsByClassName("i").length}),c.getById=ib(function(a){return o.appendChild(a).id=u,!e.getElementsByName||!e.getElementsByName(u).length}),c.getById?(d.find.ID=function(a,b){if(typeof b.getElementById!==C&&p){var c=b.getElementById(a);return c&&c.parentNode?[c]:[]}},d.filter.ID=function(a){var b=a.replace(cb,db);return function(a){return a.getAttribute("id")===b}}):(delete d.find.ID,d.filter.ID=function(a){var b=a.replace(cb,db);return function(a){var c=typeof a.getAttributeNode!==C&&a.getAttributeNode("id");return c&&c.value===b}}),d.find.TAG=c.getElementsByTagName?function(a,b){return typeof b.getElementsByTagName!==C?b.getElementsByTagName(a):void 0}:function(a,b){var c,d=[],e=0,f=b.getElementsByTagName(a);if("*"===a){while(c=f[e++])1===c.nodeType&&d.push(c);return d}return f},d.find.CLASS=c.getElementsByClassName&&function(a,b){return typeof b.getElementsByClassName!==C&&p?b.getElementsByClassName(a):void 0},r=[],q=[],(c.qsa=$.test(e.querySelectorAll))&&(ib(function(a){a.innerHTML="",a.querySelectorAll("[msallowclip^='']").length&&q.push("[*^$]="+M+"*(?:''|\"\")"),a.querySelectorAll("[selected]").length||q.push("\\["+M+"*(?:value|"+L+")"),a.querySelectorAll(":checked").length||q.push(":checked")}),ib(function(a){var b=e.createElement("input");b.setAttribute("type","hidden"),a.appendChild(b).setAttribute("name","D"),a.querySelectorAll("[name=d]").length&&q.push("name"+M+"*[*^$|!~]?="),a.querySelectorAll(":enabled").length||q.push(":enabled",":disabled"),a.querySelectorAll("*,:x"),q.push(",.*:")})),(c.matchesSelector=$.test(s=o.matches||o.webkitMatchesSelector||o.mozMatchesSelector||o.oMatchesSelector||o.msMatchesSelector))&&ib(function(a){c.disconnectedMatch=s.call(a,"div"),s.call(a,"[s!='']:x"),r.push("!=",Q)}),q=q.length&&new RegExp(q.join("|")),r=r.length&&new RegExp(r.join("|")),b=$.test(o.compareDocumentPosition),t=b||$.test(o.contains)?function(a,b){var c=9===a.nodeType?a.documentElement:a,d=b&&b.parentNode;return a===d||!(!d||1!==d.nodeType||!(c.contains?c.contains(d):a.compareDocumentPosition&&16&a.compareDocumentPosition(d)))}:function(a,b){if(b)while(b=b.parentNode)if(b===a)return!0;return!1},B=b?function(a,b){if(a===b)return l=!0,0;var d=!a.compareDocumentPosition-!b.compareDocumentPosition;return d?d:(d=(a.ownerDocument||a)===(b.ownerDocument||b)?a.compareDocumentPosition(b):1,1&d||!c.sortDetached&&b.compareDocumentPosition(a)===d?a===e||a.ownerDocument===v&&t(v,a)?-1:b===e||b.ownerDocument===v&&t(v,b)?1:k?K.call(k,a)-K.call(k,b):0:4&d?-1:1)}:function(a,b){if(a===b)return l=!0,0;var c,d=0,f=a.parentNode,g=b.parentNode,h=[a],i=[b];if(!f||!g)return a===e?-1:b===e?1:f?-1:g?1:k?K.call(k,a)-K.call(k,b):0;if(f===g)return kb(a,b);c=a;while(c=c.parentNode)h.unshift(c);c=b;while(c=c.parentNode)i.unshift(c);while(h[d]===i[d])d++;return d?kb(h[d],i[d]):h[d]===v?-1:i[d]===v?1:0},e):n},fb.matches=function(a,b){return fb(a,null,null,b)},fb.matchesSelector=function(a,b){if((a.ownerDocument||a)!==n&&m(a),b=b.replace(U,"='$1']"),!(!c.matchesSelector||!p||r&&r.test(b)||q&&q.test(b)))try{var d=s.call(a,b);if(d||c.disconnectedMatch||a.document&&11!==a.document.nodeType)return d}catch(e){}return fb(b,n,null,[a]).length>0},fb.contains=function(a,b){return(a.ownerDocument||a)!==n&&m(a),t(a,b)},fb.attr=function(a,b){(a.ownerDocument||a)!==n&&m(a);var e=d.attrHandle[b.toLowerCase()],f=e&&E.call(d.attrHandle,b.toLowerCase())?e(a,b,!p):void 0;return void 0!==f?f:c.attributes||!p?a.getAttribute(b):(f=a.getAttributeNode(b))&&f.specified?f.value:null},fb.error=function(a){throw new Error("Syntax error, unrecognized expression: "+a)},fb.uniqueSort=function(a){var b,d=[],e=0,f=0;if(l=!c.detectDuplicates,k=!c.sortStable&&a.slice(0),a.sort(B),l){while(b=a[f++])b===a[f]&&(e=d.push(f));while(e--)a.splice(d[e],1)}return k=null,a},e=fb.getText=function(a){var b,c="",d=0,f=a.nodeType;if(f){if(1===f||9===f||11===f){if("string"==typeof a.textContent)return a.textContent;for(a=a.firstChild;a;a=a.nextSibling)c+=e(a)}else if(3===f||4===f)return a.nodeValue}else while(b=a[d++])c+=e(b);return c},d=fb.selectors={cacheLength:50,createPseudo:hb,match:X,attrHandle:{},find:{},relative:{">":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(a){return a[1]=a[1].replace(cb,db),a[3]=(a[3]||a[4]||a[5]||"").replace(cb,db),"~="===a[2]&&(a[3]=" "+a[3]+" "),a.slice(0,4)},CHILD:function(a){return a[1]=a[1].toLowerCase(),"nth"===a[1].slice(0,3)?(a[3]||fb.error(a[0]),a[4]=+(a[4]?a[5]+(a[6]||1):2*("even"===a[3]||"odd"===a[3])),a[5]=+(a[7]+a[8]||"odd"===a[3])):a[3]&&fb.error(a[0]),a},PSEUDO:function(a){var b,c=!a[6]&&a[2];return X.CHILD.test(a[0])?null:(a[3]?a[2]=a[4]||a[5]||"":c&&V.test(c)&&(b=g(c,!0))&&(b=c.indexOf(")",c.length-b)-c.length)&&(a[0]=a[0].slice(0,b),a[2]=c.slice(0,b)),a.slice(0,3))}},filter:{TAG:function(a){var b=a.replace(cb,db).toLowerCase();return"*"===a?function(){return!0}:function(a){return a.nodeName&&a.nodeName.toLowerCase()===b}},CLASS:function(a){var b=y[a+" "];return b||(b=new RegExp("(^|"+M+")"+a+"("+M+"|$)"))&&y(a,function(a){return b.test("string"==typeof a.className&&a.className||typeof a.getAttribute!==C&&a.getAttribute("class")||"")})},ATTR:function(a,b,c){return function(d){var e=fb.attr(d,a);return null==e?"!="===b:b?(e+="","="===b?e===c:"!="===b?e!==c:"^="===b?c&&0===e.indexOf(c):"*="===b?c&&e.indexOf(c)>-1:"$="===b?c&&e.slice(-c.length)===c:"~="===b?(" "+e+" ").indexOf(c)>-1:"|="===b?e===c||e.slice(0,c.length+1)===c+"-":!1):!0}},CHILD:function(a,b,c,d,e){var f="nth"!==a.slice(0,3),g="last"!==a.slice(-4),h="of-type"===b;return 1===d&&0===e?function(a){return!!a.parentNode}:function(b,c,i){var j,k,l,m,n,o,p=f!==g?"nextSibling":"previousSibling",q=b.parentNode,r=h&&b.nodeName.toLowerCase(),s=!i&&!h;if(q){if(f){while(p){l=b;while(l=l[p])if(h?l.nodeName.toLowerCase()===r:1===l.nodeType)return!1;o=p="only"===a&&!o&&"nextSibling"}return!0}if(o=[g?q.firstChild:q.lastChild],g&&s){k=q[u]||(q[u]={}),j=k[a]||[],n=j[0]===w&&j[1],m=j[0]===w&&j[2],l=n&&q.childNodes[n];while(l=++n&&l&&l[p]||(m=n=0)||o.pop())if(1===l.nodeType&&++m&&l===b){k[a]=[w,n,m];break}}else if(s&&(j=(b[u]||(b[u]={}))[a])&&j[0]===w)m=j[1];else while(l=++n&&l&&l[p]||(m=n=0)||o.pop())if((h?l.nodeName.toLowerCase()===r:1===l.nodeType)&&++m&&(s&&((l[u]||(l[u]={}))[a]=[w,m]),l===b))break;return m-=e,m===d||m%d===0&&m/d>=0}}},PSEUDO:function(a,b){var c,e=d.pseudos[a]||d.setFilters[a.toLowerCase()]||fb.error("unsupported pseudo: "+a);return e[u]?e(b):e.length>1?(c=[a,a,"",b],d.setFilters.hasOwnProperty(a.toLowerCase())?hb(function(a,c){var d,f=e(a,b),g=f.length;while(g--)d=K.call(a,f[g]),a[d]=!(c[d]=f[g])}):function(a){return e(a,0,c)}):e}},pseudos:{not:hb(function(a){var b=[],c=[],d=h(a.replace(R,"$1"));return d[u]?hb(function(a,b,c,e){var f,g=d(a,null,e,[]),h=a.length;while(h--)(f=g[h])&&(a[h]=!(b[h]=f))}):function(a,e,f){return b[0]=a,d(b,null,f,c),!c.pop()}}),has:hb(function(a){return function(b){return fb(a,b).length>0}}),contains:hb(function(a){return function(b){return(b.textContent||b.innerText||e(b)).indexOf(a)>-1}}),lang:hb(function(a){return W.test(a||"")||fb.error("unsupported lang: "+a),a=a.replace(cb,db).toLowerCase(),function(b){var c;do if(c=p?b.lang:b.getAttribute("xml:lang")||b.getAttribute("lang"))return c=c.toLowerCase(),c===a||0===c.indexOf(a+"-");while((b=b.parentNode)&&1===b.nodeType);return!1}}),target:function(b){var c=a.location&&a.location.hash;return c&&c.slice(1)===b.id},root:function(a){return a===o},focus:function(a){return a===n.activeElement&&(!n.hasFocus||n.hasFocus())&&!!(a.type||a.href||~a.tabIndex)},enabled:function(a){return a.disabled===!1},disabled:function(a){return a.disabled===!0},checked:function(a){var b=a.nodeName.toLowerCase();return"input"===b&&!!a.checked||"option"===b&&!!a.selected},selected:function(a){return a.parentNode&&a.parentNode.selectedIndex,a.selected===!0},empty:function(a){for(a=a.firstChild;a;a=a.nextSibling)if(a.nodeType<6)return!1;return!0},parent:function(a){return!d.pseudos.empty(a)},header:function(a){return Z.test(a.nodeName)},input:function(a){return Y.test(a.nodeName)},button:function(a){var b=a.nodeName.toLowerCase();return"input"===b&&"button"===a.type||"button"===b},text:function(a){var b;return"input"===a.nodeName.toLowerCase()&&"text"===a.type&&(null==(b=a.getAttribute("type"))||"text"===b.toLowerCase())},first:nb(function(){return[0]}),last:nb(function(a,b){return[b-1]}),eq:nb(function(a,b,c){return[0>c?c+b:c]}),even:nb(function(a,b){for(var c=0;b>c;c+=2)a.push(c);return a}),odd:nb(function(a,b){for(var c=1;b>c;c+=2)a.push(c);return a}),lt:nb(function(a,b,c){for(var d=0>c?c+b:c;--d>=0;)a.push(d);return a}),gt:nb(function(a,b,c){for(var d=0>c?c+b:c;++db;b++)d+=a[b].value;return d}function rb(a,b,c){var d=b.dir,e=c&&"parentNode"===d,f=x++;return b.first?function(b,c,f){while(b=b[d])if(1===b.nodeType||e)return a(b,c,f)}:function(b,c,g){var h,i,j=[w,f];if(g){while(b=b[d])if((1===b.nodeType||e)&&a(b,c,g))return!0}else while(b=b[d])if(1===b.nodeType||e){if(i=b[u]||(b[u]={}),(h=i[d])&&h[0]===w&&h[1]===f)return j[2]=h[2];if(i[d]=j,j[2]=a(b,c,g))return!0}}}function sb(a){return a.length>1?function(b,c,d){var e=a.length;while(e--)if(!a[e](b,c,d))return!1;return!0}:a[0]}function tb(a,b,c){for(var d=0,e=b.length;e>d;d++)fb(a,b[d],c);return c}function ub(a,b,c,d,e){for(var f,g=[],h=0,i=a.length,j=null!=b;i>h;h++)(f=a[h])&&(!c||c(f,d,e))&&(g.push(f),j&&b.push(h));return g}function vb(a,b,c,d,e,f){return d&&!d[u]&&(d=vb(d)),e&&!e[u]&&(e=vb(e,f)),hb(function(f,g,h,i){var j,k,l,m=[],n=[],o=g.length,p=f||tb(b||"*",h.nodeType?[h]:h,[]),q=!a||!f&&b?p:ub(p,m,a,h,i),r=c?e||(f?a:o||d)?[]:g:q;if(c&&c(q,r,h,i),d){j=ub(r,n),d(j,[],h,i),k=j.length;while(k--)(l=j[k])&&(r[n[k]]=!(q[n[k]]=l))}if(f){if(e||a){if(e){j=[],k=r.length;while(k--)(l=r[k])&&j.push(q[k]=l);e(null,r=[],j,i)}k=r.length;while(k--)(l=r[k])&&(j=e?K.call(f,l):m[k])>-1&&(f[j]=!(g[j]=l))}}else r=ub(r===g?r.splice(o,r.length):r),e?e(null,g,r,i):I.apply(g,r)})}function wb(a){for(var b,c,e,f=a.length,g=d.relative[a[0].type],h=g||d.relative[" "],i=g?1:0,k=rb(function(a){return a===b},h,!0),l=rb(function(a){return K.call(b,a)>-1},h,!0),m=[function(a,c,d){return!g&&(d||c!==j)||((b=c).nodeType?k(a,c,d):l(a,c,d))}];f>i;i++)if(c=d.relative[a[i].type])m=[rb(sb(m),c)];else{if(c=d.filter[a[i].type].apply(null,a[i].matches),c[u]){for(e=++i;f>e;e++)if(d.relative[a[e].type])break;return vb(i>1&&sb(m),i>1&&qb(a.slice(0,i-1).concat({value:" "===a[i-2].type?"*":""})).replace(R,"$1"),c,e>i&&wb(a.slice(i,e)),f>e&&wb(a=a.slice(e)),f>e&&qb(a))}m.push(c)}return sb(m)}function xb(a,b){var c=b.length>0,e=a.length>0,f=function(f,g,h,i,k){var l,m,o,p=0,q="0",r=f&&[],s=[],t=j,u=f||e&&d.find.TAG("*",k),v=w+=null==t?1:Math.random()||.1,x=u.length;for(k&&(j=g!==n&&g);q!==x&&null!=(l=u[q]);q++){if(e&&l){m=0;while(o=a[m++])if(o(l,g,h)){i.push(l);break}k&&(w=v)}c&&((l=!o&&l)&&p--,f&&r.push(l))}if(p+=q,c&&q!==p){m=0;while(o=b[m++])o(r,s,g,h);if(f){if(p>0)while(q--)r[q]||s[q]||(s[q]=G.call(i));s=ub(s)}I.apply(i,s),k&&!f&&s.length>0&&p+b.length>1&&fb.uniqueSort(i)}return k&&(w=v,j=t),r};return c?hb(f):f}return h=fb.compile=function(a,b){var c,d=[],e=[],f=A[a+" "];if(!f){b||(b=g(a)),c=b.length;while(c--)f=wb(b[c]),f[u]?d.push(f):e.push(f);f=A(a,xb(e,d)),f.selector=a}return f},i=fb.select=function(a,b,e,f){var i,j,k,l,m,n="function"==typeof a&&a,o=!f&&g(a=n.selector||a);if(e=e||[],1===o.length){if(j=o[0]=o[0].slice(0),j.length>2&&"ID"===(k=j[0]).type&&c.getById&&9===b.nodeType&&p&&d.relative[j[1].type]){if(b=(d.find.ID(k.matches[0].replace(cb,db),b)||[])[0],!b)return e;n&&(b=b.parentNode),a=a.slice(j.shift().value.length)}i=X.needsContext.test(a)?0:j.length;while(i--){if(k=j[i],d.relative[l=k.type])break;if((m=d.find[l])&&(f=m(k.matches[0].replace(cb,db),ab.test(j[0].type)&&ob(b.parentNode)||b))){if(j.splice(i,1),a=f.length&&qb(j),!a)return I.apply(e,f),e;break}}}return(n||h(a,o))(f,b,!p,e,ab.test(a)&&ob(b.parentNode)||b),e},c.sortStable=u.split("").sort(B).join("")===u,c.detectDuplicates=!!l,m(),c.sortDetached=ib(function(a){return 1&a.compareDocumentPosition(n.createElement("div"))}),ib(function(a){return a.innerHTML="","#"===a.firstChild.getAttribute("href")})||jb("type|href|height|width",function(a,b,c){return c?void 0:a.getAttribute(b,"type"===b.toLowerCase()?1:2)}),c.attributes&&ib(function(a){return a.innerHTML="",a.firstChild.setAttribute("value",""),""===a.firstChild.getAttribute("value")})||jb("value",function(a,b,c){return c||"input"!==a.nodeName.toLowerCase()?void 0:a.defaultValue}),ib(function(a){return null==a.getAttribute("disabled")})||jb(L,function(a,b,c){var d;return c?void 0:a[b]===!0?b.toLowerCase():(d=a.getAttributeNode(b))&&d.specified?d.value:null}),fb}(a);m.find=s,m.expr=s.selectors,m.expr[":"]=m.expr.pseudos,m.unique=s.uniqueSort,m.text=s.getText,m.isXMLDoc=s.isXML,m.contains=s.contains;var t=m.expr.match.needsContext,u=/^<(\w+)\s*\/?>(?:<\/\1>|)$/,v=/^.[^:#\[\.,]*$/;function w(a,b,c){if(m.isFunction(b))return m.grep(a,function(a,d){return!!b.call(a,d,a)!==c});if(b.nodeType)return m.grep(a,function(a){return a===b!==c});if("string"==typeof b){if(v.test(b))return m.filter(b,a,c);b=m.filter(b,a)}return m.grep(a,function(a){return m.inArray(a,b)>=0!==c})}m.filter=function(a,b,c){var d=b[0];return c&&(a=":not("+a+")"),1===b.length&&1===d.nodeType?m.find.matchesSelector(d,a)?[d]:[]:m.find.matches(a,m.grep(b,function(a){return 1===a.nodeType}))},m.fn.extend({find:function(a){var b,c=[],d=this,e=d.length;if("string"!=typeof a)return this.pushStack(m(a).filter(function(){for(b=0;e>b;b++)if(m.contains(d[b],this))return!0}));for(b=0;e>b;b++)m.find(a,d[b],c);return c=this.pushStack(e>1?m.unique(c):c),c.selector=this.selector?this.selector+" "+a:a,c},filter:function(a){return this.pushStack(w(this,a||[],!1))},not:function(a){return this.pushStack(w(this,a||[],!0))},is:function(a){return!!w(this,"string"==typeof a&&t.test(a)?m(a):a||[],!1).length}});var x,y=a.document,z=/^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]*))$/,A=m.fn.init=function(a,b){var c,d;if(!a)return this;if("string"==typeof a){if(c="<"===a.charAt(0)&&">"===a.charAt(a.length-1)&&a.length>=3?[null,a,null]:z.exec(a),!c||!c[1]&&b)return!b||b.jquery?(b||x).find(a):this.constructor(b).find(a);if(c[1]){if(b=b instanceof m?b[0]:b,m.merge(this,m.parseHTML(c[1],b&&b.nodeType?b.ownerDocument||b:y,!0)),u.test(c[1])&&m.isPlainObject(b))for(c in b)m.isFunction(this[c])?this[c](b[c]):this.attr(c,b[c]);return this}if(d=y.getElementById(c[2]),d&&d.parentNode){if(d.id!==c[2])return x.find(a);this.length=1,this[0]=d}return this.context=y,this.selector=a,this}return a.nodeType?(this.context=this[0]=a,this.length=1,this):m.isFunction(a)?"undefined"!=typeof x.ready?x.ready(a):a(m):(void 0!==a.selector&&(this.selector=a.selector,this.context=a.context),m.makeArray(a,this))};A.prototype=m.fn,x=m(y);var B=/^(?:parents|prev(?:Until|All))/,C={children:!0,contents:!0,next:!0,prev:!0};m.extend({dir:function(a,b,c){var d=[],e=a[b];while(e&&9!==e.nodeType&&(void 0===c||1!==e.nodeType||!m(e).is(c)))1===e.nodeType&&d.push(e),e=e[b];return d},sibling:function(a,b){for(var c=[];a;a=a.nextSibling)1===a.nodeType&&a!==b&&c.push(a);return c}}),m.fn.extend({has:function(a){var b,c=m(a,this),d=c.length;return this.filter(function(){for(b=0;d>b;b++)if(m.contains(this,c[b]))return!0})},closest:function(a,b){for(var c,d=0,e=this.length,f=[],g=t.test(a)||"string"!=typeof a?m(a,b||this.context):0;e>d;d++)for(c=this[d];c&&c!==b;c=c.parentNode)if(c.nodeType<11&&(g?g.index(c)>-1:1===c.nodeType&&m.find.matchesSelector(c,a))){f.push(c);break}return this.pushStack(f.length>1?m.unique(f):f)},index:function(a){return a?"string"==typeof a?m.inArray(this[0],m(a)):m.inArray(a.jquery?a[0]:a,this):this[0]&&this[0].parentNode?this.first().prevAll().length:-1},add:function(a,b){return this.pushStack(m.unique(m.merge(this.get(),m(a,b))))},addBack:function(a){return this.add(null==a?this.prevObject:this.prevObject.filter(a))}});function D(a,b){do a=a[b];while(a&&1!==a.nodeType);return a}m.each({parent:function(a){var b=a.parentNode;return b&&11!==b.nodeType?b:null},parents:function(a){return m.dir(a,"parentNode")},parentsUntil:function(a,b,c){return m.dir(a,"parentNode",c)},next:function(a){return D(a,"nextSibling")},prev:function(a){return D(a,"previousSibling")},nextAll:function(a){return m.dir(a,"nextSibling")},prevAll:function(a){return m.dir(a,"previousSibling")},nextUntil:function(a,b,c){return m.dir(a,"nextSibling",c)},prevUntil:function(a,b,c){return m.dir(a,"previousSibling",c)},siblings:function(a){return m.sibling((a.parentNode||{}).firstChild,a)},children:function(a){return m.sibling(a.firstChild)},contents:function(a){return m.nodeName(a,"iframe")?a.contentDocument||a.contentWindow.document:m.merge([],a.childNodes)}},function(a,b){m.fn[a]=function(c,d){var e=m.map(this,b,c);return"Until"!==a.slice(-5)&&(d=c),d&&"string"==typeof d&&(e=m.filter(d,e)),this.length>1&&(C[a]||(e=m.unique(e)),B.test(a)&&(e=e.reverse())),this.pushStack(e)}});var E=/\S+/g,F={};function G(a){var b=F[a]={};return m.each(a.match(E)||[],function(a,c){b[c]=!0}),b}m.Callbacks=function(a){a="string"==typeof a?F[a]||G(a):m.extend({},a);var b,c,d,e,f,g,h=[],i=!a.once&&[],j=function(l){for(c=a.memory&&l,d=!0,f=g||0,g=0,e=h.length,b=!0;h&&e>f;f++)if(h[f].apply(l[0],l[1])===!1&&a.stopOnFalse){c=!1;break}b=!1,h&&(i?i.length&&j(i.shift()):c?h=[]:k.disable())},k={add:function(){if(h){var d=h.length;!function f(b){m.each(b,function(b,c){var d=m.type(c);"function"===d?a.unique&&k.has(c)||h.push(c):c&&c.length&&"string"!==d&&f(c)})}(arguments),b?e=h.length:c&&(g=d,j(c))}return this},remove:function(){return h&&m.each(arguments,function(a,c){var d;while((d=m.inArray(c,h,d))>-1)h.splice(d,1),b&&(e>=d&&e--,f>=d&&f--)}),this},has:function(a){return a?m.inArray(a,h)>-1:!(!h||!h.length)},empty:function(){return h=[],e=0,this},disable:function(){return h=i=c=void 0,this},disabled:function(){return!h},lock:function(){return i=void 0,c||k.disable(),this},locked:function(){return!i},fireWith:function(a,c){return!h||d&&!i||(c=c||[],c=[a,c.slice?c.slice():c],b?i.push(c):j(c)),this},fire:function(){return k.fireWith(this,arguments),this},fired:function(){return!!d}};return k},m.extend({Deferred:function(a){var b=[["resolve","done",m.Callbacks("once memory"),"resolved"],["reject","fail",m.Callbacks("once memory"),"rejected"],["notify","progress",m.Callbacks("memory")]],c="pending",d={state:function(){return c},always:function(){return e.done(arguments).fail(arguments),this},then:function(){var a=arguments;return m.Deferred(function(c){m.each(b,function(b,f){var g=m.isFunction(a[b])&&a[b];e[f[1]](function(){var a=g&&g.apply(this,arguments);a&&m.isFunction(a.promise)?a.promise().done(c.resolve).fail(c.reject).progress(c.notify):c[f[0]+"With"](this===d?c.promise():this,g?[a]:arguments)})}),a=null}).promise()},promise:function(a){return null!=a?m.extend(a,d):d}},e={};return d.pipe=d.then,m.each(b,function(a,f){var g=f[2],h=f[3];d[f[1]]=g.add,h&&g.add(function(){c=h},b[1^a][2].disable,b[2][2].lock),e[f[0]]=function(){return e[f[0]+"With"](this===e?d:this,arguments),this},e[f[0]+"With"]=g.fireWith}),d.promise(e),a&&a.call(e,e),e},when:function(a){var b=0,c=d.call(arguments),e=c.length,f=1!==e||a&&m.isFunction(a.promise)?e:0,g=1===f?a:m.Deferred(),h=function(a,b,c){return function(e){b[a]=this,c[a]=arguments.length>1?d.call(arguments):e,c===i?g.notifyWith(b,c):--f||g.resolveWith(b,c)}},i,j,k;if(e>1)for(i=new Array(e),j=new Array(e),k=new Array(e);e>b;b++)c[b]&&m.isFunction(c[b].promise)?c[b].promise().done(h(b,k,c)).fail(g.reject).progress(h(b,j,i)):--f;return f||g.resolveWith(k,c),g.promise()}});var H;m.fn.ready=function(a){return m.ready.promise().done(a),this},m.extend({isReady:!1,readyWait:1,holdReady:function(a){a?m.readyWait++:m.ready(!0)},ready:function(a){if(a===!0?!--m.readyWait:!m.isReady){if(!y.body)return setTimeout(m.ready);m.isReady=!0,a!==!0&&--m.readyWait>0||(H.resolveWith(y,[m]),m.fn.triggerHandler&&(m(y).triggerHandler("ready"),m(y).off("ready")))}}});function I(){y.addEventListener?(y.removeEventListener("DOMContentLoaded",J,!1),a.removeEventListener("load",J,!1)):(y.detachEvent("onreadystatechange",J),a.detachEvent("onload",J))}function J(){(y.addEventListener||"load"===event.type||"complete"===y.readyState)&&(I(),m.ready())}m.ready.promise=function(b){if(!H)if(H=m.Deferred(),"complete"===y.readyState)setTimeout(m.ready);else if(y.addEventListener)y.addEventListener("DOMContentLoaded",J,!1),a.addEventListener("load",J,!1);else{y.attachEvent("onreadystatechange",J),a.attachEvent("onload",J);var c=!1;try{c=null==a.frameElement&&y.documentElement}catch(d){}c&&c.doScroll&&!function e(){if(!m.isReady){try{c.doScroll("left")}catch(a){return setTimeout(e,50)}I(),m.ready()}}()}return H.promise(b)};var K="undefined",L;for(L in m(k))break;k.ownLast="0"!==L,k.inlineBlockNeedsLayout=!1,m(function(){var a,b,c,d;c=y.getElementsByTagName("body")[0],c&&c.style&&(b=y.createElement("div"),d=y.createElement("div"),d.style.cssText="position:absolute;border:0;width:0;height:0;top:0;left:-9999px",c.appendChild(d).appendChild(b),typeof b.style.zoom!==K&&(b.style.cssText="display:inline;margin:0;border:0;padding:1px;width:1px;zoom:1",k.inlineBlockNeedsLayout=a=3===b.offsetWidth,a&&(c.style.zoom=1)),c.removeChild(d))}),function(){var a=y.createElement("div");if(null==k.deleteExpando){k.deleteExpando=!0;try{delete a.test}catch(b){k.deleteExpando=!1}}a=null}(),m.acceptData=function(a){var b=m.noData[(a.nodeName+" ").toLowerCase()],c=+a.nodeType||1;return 1!==c&&9!==c?!1:!b||b!==!0&&a.getAttribute("classid")===b};var M=/^(?:\{[\w\W]*\}|\[[\w\W]*\])$/,N=/([A-Z])/g;function O(a,b,c){if(void 0===c&&1===a.nodeType){var d="data-"+b.replace(N,"-$1").toLowerCase();if(c=a.getAttribute(d),"string"==typeof c){try{c="true"===c?!0:"false"===c?!1:"null"===c?null:+c+""===c?+c:M.test(c)?m.parseJSON(c):c}catch(e){}m.data(a,b,c)}else c=void 0}return c}function P(a){var b;for(b in a)if(("data"!==b||!m.isEmptyObject(a[b]))&&"toJSON"!==b)return!1; +return!0}function Q(a,b,d,e){if(m.acceptData(a)){var f,g,h=m.expando,i=a.nodeType,j=i?m.cache:a,k=i?a[h]:a[h]&&h;if(k&&j[k]&&(e||j[k].data)||void 0!==d||"string"!=typeof b)return k||(k=i?a[h]=c.pop()||m.guid++:h),j[k]||(j[k]=i?{}:{toJSON:m.noop}),("object"==typeof b||"function"==typeof b)&&(e?j[k]=m.extend(j[k],b):j[k].data=m.extend(j[k].data,b)),g=j[k],e||(g.data||(g.data={}),g=g.data),void 0!==d&&(g[m.camelCase(b)]=d),"string"==typeof b?(f=g[b],null==f&&(f=g[m.camelCase(b)])):f=g,f}}function R(a,b,c){if(m.acceptData(a)){var d,e,f=a.nodeType,g=f?m.cache:a,h=f?a[m.expando]:m.expando;if(g[h]){if(b&&(d=c?g[h]:g[h].data)){m.isArray(b)?b=b.concat(m.map(b,m.camelCase)):b in d?b=[b]:(b=m.camelCase(b),b=b in d?[b]:b.split(" ")),e=b.length;while(e--)delete d[b[e]];if(c?!P(d):!m.isEmptyObject(d))return}(c||(delete g[h].data,P(g[h])))&&(f?m.cleanData([a],!0):k.deleteExpando||g!=g.window?delete g[h]:g[h]=null)}}}m.extend({cache:{},noData:{"applet ":!0,"embed ":!0,"object ":"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"},hasData:function(a){return a=a.nodeType?m.cache[a[m.expando]]:a[m.expando],!!a&&!P(a)},data:function(a,b,c){return Q(a,b,c)},removeData:function(a,b){return R(a,b)},_data:function(a,b,c){return Q(a,b,c,!0)},_removeData:function(a,b){return R(a,b,!0)}}),m.fn.extend({data:function(a,b){var c,d,e,f=this[0],g=f&&f.attributes;if(void 0===a){if(this.length&&(e=m.data(f),1===f.nodeType&&!m._data(f,"parsedAttrs"))){c=g.length;while(c--)g[c]&&(d=g[c].name,0===d.indexOf("data-")&&(d=m.camelCase(d.slice(5)),O(f,d,e[d])));m._data(f,"parsedAttrs",!0)}return e}return"object"==typeof a?this.each(function(){m.data(this,a)}):arguments.length>1?this.each(function(){m.data(this,a,b)}):f?O(f,a,m.data(f,a)):void 0},removeData:function(a){return this.each(function(){m.removeData(this,a)})}}),m.extend({queue:function(a,b,c){var d;return a?(b=(b||"fx")+"queue",d=m._data(a,b),c&&(!d||m.isArray(c)?d=m._data(a,b,m.makeArray(c)):d.push(c)),d||[]):void 0},dequeue:function(a,b){b=b||"fx";var c=m.queue(a,b),d=c.length,e=c.shift(),f=m._queueHooks(a,b),g=function(){m.dequeue(a,b)};"inprogress"===e&&(e=c.shift(),d--),e&&("fx"===b&&c.unshift("inprogress"),delete f.stop,e.call(a,g,f)),!d&&f&&f.empty.fire()},_queueHooks:function(a,b){var c=b+"queueHooks";return m._data(a,c)||m._data(a,c,{empty:m.Callbacks("once memory").add(function(){m._removeData(a,b+"queue"),m._removeData(a,c)})})}}),m.fn.extend({queue:function(a,b){var c=2;return"string"!=typeof a&&(b=a,a="fx",c--),arguments.lengthh;h++)b(a[h],c,g?d:d.call(a[h],h,b(a[h],c)));return e?a:j?b.call(a):i?b(a[0],c):f},W=/^(?:checkbox|radio)$/i;!function(){var a=y.createElement("input"),b=y.createElement("div"),c=y.createDocumentFragment();if(b.innerHTML="
      a",k.leadingWhitespace=3===b.firstChild.nodeType,k.tbody=!b.getElementsByTagName("tbody").length,k.htmlSerialize=!!b.getElementsByTagName("link").length,k.html5Clone="<:nav>"!==y.createElement("nav").cloneNode(!0).outerHTML,a.type="checkbox",a.checked=!0,c.appendChild(a),k.appendChecked=a.checked,b.innerHTML="",k.noCloneChecked=!!b.cloneNode(!0).lastChild.defaultValue,c.appendChild(b),b.innerHTML="",k.checkClone=b.cloneNode(!0).cloneNode(!0).lastChild.checked,k.noCloneEvent=!0,b.attachEvent&&(b.attachEvent("onclick",function(){k.noCloneEvent=!1}),b.cloneNode(!0).click()),null==k.deleteExpando){k.deleteExpando=!0;try{delete b.test}catch(d){k.deleteExpando=!1}}}(),function(){var b,c,d=y.createElement("div");for(b in{submit:!0,change:!0,focusin:!0})c="on"+b,(k[b+"Bubbles"]=c in a)||(d.setAttribute(c,"t"),k[b+"Bubbles"]=d.attributes[c].expando===!1);d=null}();var X=/^(?:input|select|textarea)$/i,Y=/^key/,Z=/^(?:mouse|pointer|contextmenu)|click/,$=/^(?:focusinfocus|focusoutblur)$/,_=/^([^.]*)(?:\.(.+)|)$/;function ab(){return!0}function bb(){return!1}function cb(){try{return y.activeElement}catch(a){}}m.event={global:{},add:function(a,b,c,d,e){var f,g,h,i,j,k,l,n,o,p,q,r=m._data(a);if(r){c.handler&&(i=c,c=i.handler,e=i.selector),c.guid||(c.guid=m.guid++),(g=r.events)||(g=r.events={}),(k=r.handle)||(k=r.handle=function(a){return typeof m===K||a&&m.event.triggered===a.type?void 0:m.event.dispatch.apply(k.elem,arguments)},k.elem=a),b=(b||"").match(E)||[""],h=b.length;while(h--)f=_.exec(b[h])||[],o=q=f[1],p=(f[2]||"").split(".").sort(),o&&(j=m.event.special[o]||{},o=(e?j.delegateType:j.bindType)||o,j=m.event.special[o]||{},l=m.extend({type:o,origType:q,data:d,handler:c,guid:c.guid,selector:e,needsContext:e&&m.expr.match.needsContext.test(e),namespace:p.join(".")},i),(n=g[o])||(n=g[o]=[],n.delegateCount=0,j.setup&&j.setup.call(a,d,p,k)!==!1||(a.addEventListener?a.addEventListener(o,k,!1):a.attachEvent&&a.attachEvent("on"+o,k))),j.add&&(j.add.call(a,l),l.handler.guid||(l.handler.guid=c.guid)),e?n.splice(n.delegateCount++,0,l):n.push(l),m.event.global[o]=!0);a=null}},remove:function(a,b,c,d,e){var f,g,h,i,j,k,l,n,o,p,q,r=m.hasData(a)&&m._data(a);if(r&&(k=r.events)){b=(b||"").match(E)||[""],j=b.length;while(j--)if(h=_.exec(b[j])||[],o=q=h[1],p=(h[2]||"").split(".").sort(),o){l=m.event.special[o]||{},o=(d?l.delegateType:l.bindType)||o,n=k[o]||[],h=h[2]&&new RegExp("(^|\\.)"+p.join("\\.(?:.*\\.|)")+"(\\.|$)"),i=f=n.length;while(f--)g=n[f],!e&&q!==g.origType||c&&c.guid!==g.guid||h&&!h.test(g.namespace)||d&&d!==g.selector&&("**"!==d||!g.selector)||(n.splice(f,1),g.selector&&n.delegateCount--,l.remove&&l.remove.call(a,g));i&&!n.length&&(l.teardown&&l.teardown.call(a,p,r.handle)!==!1||m.removeEvent(a,o,r.handle),delete k[o])}else for(o in k)m.event.remove(a,o+b[j],c,d,!0);m.isEmptyObject(k)&&(delete r.handle,m._removeData(a,"events"))}},trigger:function(b,c,d,e){var f,g,h,i,k,l,n,o=[d||y],p=j.call(b,"type")?b.type:b,q=j.call(b,"namespace")?b.namespace.split("."):[];if(h=l=d=d||y,3!==d.nodeType&&8!==d.nodeType&&!$.test(p+m.event.triggered)&&(p.indexOf(".")>=0&&(q=p.split("."),p=q.shift(),q.sort()),g=p.indexOf(":")<0&&"on"+p,b=b[m.expando]?b:new m.Event(p,"object"==typeof b&&b),b.isTrigger=e?2:3,b.namespace=q.join("."),b.namespace_re=b.namespace?new RegExp("(^|\\.)"+q.join("\\.(?:.*\\.|)")+"(\\.|$)"):null,b.result=void 0,b.target||(b.target=d),c=null==c?[b]:m.makeArray(c,[b]),k=m.event.special[p]||{},e||!k.trigger||k.trigger.apply(d,c)!==!1)){if(!e&&!k.noBubble&&!m.isWindow(d)){for(i=k.delegateType||p,$.test(i+p)||(h=h.parentNode);h;h=h.parentNode)o.push(h),l=h;l===(d.ownerDocument||y)&&o.push(l.defaultView||l.parentWindow||a)}n=0;while((h=o[n++])&&!b.isPropagationStopped())b.type=n>1?i:k.bindType||p,f=(m._data(h,"events")||{})[b.type]&&m._data(h,"handle"),f&&f.apply(h,c),f=g&&h[g],f&&f.apply&&m.acceptData(h)&&(b.result=f.apply(h,c),b.result===!1&&b.preventDefault());if(b.type=p,!e&&!b.isDefaultPrevented()&&(!k._default||k._default.apply(o.pop(),c)===!1)&&m.acceptData(d)&&g&&d[p]&&!m.isWindow(d)){l=d[g],l&&(d[g]=null),m.event.triggered=p;try{d[p]()}catch(r){}m.event.triggered=void 0,l&&(d[g]=l)}return b.result}},dispatch:function(a){a=m.event.fix(a);var b,c,e,f,g,h=[],i=d.call(arguments),j=(m._data(this,"events")||{})[a.type]||[],k=m.event.special[a.type]||{};if(i[0]=a,a.delegateTarget=this,!k.preDispatch||k.preDispatch.call(this,a)!==!1){h=m.event.handlers.call(this,a,j),b=0;while((f=h[b++])&&!a.isPropagationStopped()){a.currentTarget=f.elem,g=0;while((e=f.handlers[g++])&&!a.isImmediatePropagationStopped())(!a.namespace_re||a.namespace_re.test(e.namespace))&&(a.handleObj=e,a.data=e.data,c=((m.event.special[e.origType]||{}).handle||e.handler).apply(f.elem,i),void 0!==c&&(a.result=c)===!1&&(a.preventDefault(),a.stopPropagation()))}return k.postDispatch&&k.postDispatch.call(this,a),a.result}},handlers:function(a,b){var c,d,e,f,g=[],h=b.delegateCount,i=a.target;if(h&&i.nodeType&&(!a.button||"click"!==a.type))for(;i!=this;i=i.parentNode||this)if(1===i.nodeType&&(i.disabled!==!0||"click"!==a.type)){for(e=[],f=0;h>f;f++)d=b[f],c=d.selector+" ",void 0===e[c]&&(e[c]=d.needsContext?m(c,this).index(i)>=0:m.find(c,this,null,[i]).length),e[c]&&e.push(d);e.length&&g.push({elem:i,handlers:e})}return h]","i"),hb=/^\s+/,ib=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/gi,jb=/<([\w:]+)/,kb=/\s*$/g,rb={option:[1,""],legend:[1,"
      ","
      "],area:[1,"",""],param:[1,"",""],thead:[1,"","
      "],tr:[2,"","
      "],col:[2,"","
      "],td:[3,"","
      "],_default:k.htmlSerialize?[0,"",""]:[1,"X
      ","
      "]},sb=db(y),tb=sb.appendChild(y.createElement("div"));rb.optgroup=rb.option,rb.tbody=rb.tfoot=rb.colgroup=rb.caption=rb.thead,rb.th=rb.td;function ub(a,b){var c,d,e=0,f=typeof a.getElementsByTagName!==K?a.getElementsByTagName(b||"*"):typeof a.querySelectorAll!==K?a.querySelectorAll(b||"*"):void 0;if(!f)for(f=[],c=a.childNodes||a;null!=(d=c[e]);e++)!b||m.nodeName(d,b)?f.push(d):m.merge(f,ub(d,b));return void 0===b||b&&m.nodeName(a,b)?m.merge([a],f):f}function vb(a){W.test(a.type)&&(a.defaultChecked=a.checked)}function wb(a,b){return m.nodeName(a,"table")&&m.nodeName(11!==b.nodeType?b:b.firstChild,"tr")?a.getElementsByTagName("tbody")[0]||a.appendChild(a.ownerDocument.createElement("tbody")):a}function xb(a){return a.type=(null!==m.find.attr(a,"type"))+"/"+a.type,a}function yb(a){var b=pb.exec(a.type);return b?a.type=b[1]:a.removeAttribute("type"),a}function zb(a,b){for(var c,d=0;null!=(c=a[d]);d++)m._data(c,"globalEval",!b||m._data(b[d],"globalEval"))}function Ab(a,b){if(1===b.nodeType&&m.hasData(a)){var c,d,e,f=m._data(a),g=m._data(b,f),h=f.events;if(h){delete g.handle,g.events={};for(c in h)for(d=0,e=h[c].length;e>d;d++)m.event.add(b,c,h[c][d])}g.data&&(g.data=m.extend({},g.data))}}function Bb(a,b){var c,d,e;if(1===b.nodeType){if(c=b.nodeName.toLowerCase(),!k.noCloneEvent&&b[m.expando]){e=m._data(b);for(d in e.events)m.removeEvent(b,d,e.handle);b.removeAttribute(m.expando)}"script"===c&&b.text!==a.text?(xb(b).text=a.text,yb(b)):"object"===c?(b.parentNode&&(b.outerHTML=a.outerHTML),k.html5Clone&&a.innerHTML&&!m.trim(b.innerHTML)&&(b.innerHTML=a.innerHTML)):"input"===c&&W.test(a.type)?(b.defaultChecked=b.checked=a.checked,b.value!==a.value&&(b.value=a.value)):"option"===c?b.defaultSelected=b.selected=a.defaultSelected:("input"===c||"textarea"===c)&&(b.defaultValue=a.defaultValue)}}m.extend({clone:function(a,b,c){var d,e,f,g,h,i=m.contains(a.ownerDocument,a);if(k.html5Clone||m.isXMLDoc(a)||!gb.test("<"+a.nodeName+">")?f=a.cloneNode(!0):(tb.innerHTML=a.outerHTML,tb.removeChild(f=tb.firstChild)),!(k.noCloneEvent&&k.noCloneChecked||1!==a.nodeType&&11!==a.nodeType||m.isXMLDoc(a)))for(d=ub(f),h=ub(a),g=0;null!=(e=h[g]);++g)d[g]&&Bb(e,d[g]);if(b)if(c)for(h=h||ub(a),d=d||ub(f),g=0;null!=(e=h[g]);g++)Ab(e,d[g]);else Ab(a,f);return d=ub(f,"script"),d.length>0&&zb(d,!i&&ub(a,"script")),d=h=e=null,f},buildFragment:function(a,b,c,d){for(var e,f,g,h,i,j,l,n=a.length,o=db(b),p=[],q=0;n>q;q++)if(f=a[q],f||0===f)if("object"===m.type(f))m.merge(p,f.nodeType?[f]:f);else if(lb.test(f)){h=h||o.appendChild(b.createElement("div")),i=(jb.exec(f)||["",""])[1].toLowerCase(),l=rb[i]||rb._default,h.innerHTML=l[1]+f.replace(ib,"<$1>")+l[2],e=l[0];while(e--)h=h.lastChild;if(!k.leadingWhitespace&&hb.test(f)&&p.push(b.createTextNode(hb.exec(f)[0])),!k.tbody){f="table"!==i||kb.test(f)?""!==l[1]||kb.test(f)?0:h:h.firstChild,e=f&&f.childNodes.length;while(e--)m.nodeName(j=f.childNodes[e],"tbody")&&!j.childNodes.length&&f.removeChild(j)}m.merge(p,h.childNodes),h.textContent="";while(h.firstChild)h.removeChild(h.firstChild);h=o.lastChild}else p.push(b.createTextNode(f));h&&o.removeChild(h),k.appendChecked||m.grep(ub(p,"input"),vb),q=0;while(f=p[q++])if((!d||-1===m.inArray(f,d))&&(g=m.contains(f.ownerDocument,f),h=ub(o.appendChild(f),"script"),g&&zb(h),c)){e=0;while(f=h[e++])ob.test(f.type||"")&&c.push(f)}return h=null,o},cleanData:function(a,b){for(var d,e,f,g,h=0,i=m.expando,j=m.cache,l=k.deleteExpando,n=m.event.special;null!=(d=a[h]);h++)if((b||m.acceptData(d))&&(f=d[i],g=f&&j[f])){if(g.events)for(e in g.events)n[e]?m.event.remove(d,e):m.removeEvent(d,e,g.handle);j[f]&&(delete j[f],l?delete d[i]:typeof d.removeAttribute!==K?d.removeAttribute(i):d[i]=null,c.push(f))}}}),m.fn.extend({text:function(a){return V(this,function(a){return void 0===a?m.text(this):this.empty().append((this[0]&&this[0].ownerDocument||y).createTextNode(a))},null,a,arguments.length)},append:function(){return this.domManip(arguments,function(a){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var b=wb(this,a);b.appendChild(a)}})},prepend:function(){return this.domManip(arguments,function(a){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var b=wb(this,a);b.insertBefore(a,b.firstChild)}})},before:function(){return this.domManip(arguments,function(a){this.parentNode&&this.parentNode.insertBefore(a,this)})},after:function(){return this.domManip(arguments,function(a){this.parentNode&&this.parentNode.insertBefore(a,this.nextSibling)})},remove:function(a,b){for(var c,d=a?m.filter(a,this):this,e=0;null!=(c=d[e]);e++)b||1!==c.nodeType||m.cleanData(ub(c)),c.parentNode&&(b&&m.contains(c.ownerDocument,c)&&zb(ub(c,"script")),c.parentNode.removeChild(c));return this},empty:function(){for(var a,b=0;null!=(a=this[b]);b++){1===a.nodeType&&m.cleanData(ub(a,!1));while(a.firstChild)a.removeChild(a.firstChild);a.options&&m.nodeName(a,"select")&&(a.options.length=0)}return this},clone:function(a,b){return a=null==a?!1:a,b=null==b?a:b,this.map(function(){return m.clone(this,a,b)})},html:function(a){return V(this,function(a){var b=this[0]||{},c=0,d=this.length;if(void 0===a)return 1===b.nodeType?b.innerHTML.replace(fb,""):void 0;if(!("string"!=typeof a||mb.test(a)||!k.htmlSerialize&&gb.test(a)||!k.leadingWhitespace&&hb.test(a)||rb[(jb.exec(a)||["",""])[1].toLowerCase()])){a=a.replace(ib,"<$1>");try{for(;d>c;c++)b=this[c]||{},1===b.nodeType&&(m.cleanData(ub(b,!1)),b.innerHTML=a);b=0}catch(e){}}b&&this.empty().append(a)},null,a,arguments.length)},replaceWith:function(){var a=arguments[0];return this.domManip(arguments,function(b){a=this.parentNode,m.cleanData(ub(this)),a&&a.replaceChild(b,this)}),a&&(a.length||a.nodeType)?this:this.remove()},detach:function(a){return this.remove(a,!0)},domManip:function(a,b){a=e.apply([],a);var c,d,f,g,h,i,j=0,l=this.length,n=this,o=l-1,p=a[0],q=m.isFunction(p);if(q||l>1&&"string"==typeof p&&!k.checkClone&&nb.test(p))return this.each(function(c){var d=n.eq(c);q&&(a[0]=p.call(this,c,d.html())),d.domManip(a,b)});if(l&&(i=m.buildFragment(a,this[0].ownerDocument,!1,this),c=i.firstChild,1===i.childNodes.length&&(i=c),c)){for(g=m.map(ub(i,"script"),xb),f=g.length;l>j;j++)d=i,j!==o&&(d=m.clone(d,!0,!0),f&&m.merge(g,ub(d,"script"))),b.call(this[j],d,j);if(f)for(h=g[g.length-1].ownerDocument,m.map(g,yb),j=0;f>j;j++)d=g[j],ob.test(d.type||"")&&!m._data(d,"globalEval")&&m.contains(h,d)&&(d.src?m._evalUrl&&m._evalUrl(d.src):m.globalEval((d.text||d.textContent||d.innerHTML||"").replace(qb,"")));i=c=null}return this}}),m.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(a,b){m.fn[a]=function(a){for(var c,d=0,e=[],g=m(a),h=g.length-1;h>=d;d++)c=d===h?this:this.clone(!0),m(g[d])[b](c),f.apply(e,c.get());return this.pushStack(e)}});var Cb,Db={};function Eb(b,c){var d,e=m(c.createElement(b)).appendTo(c.body),f=a.getDefaultComputedStyle&&(d=a.getDefaultComputedStyle(e[0]))?d.display:m.css(e[0],"display");return e.detach(),f}function Fb(a){var b=y,c=Db[a];return c||(c=Eb(a,b),"none"!==c&&c||(Cb=(Cb||m("'); + } else { + self.exec('insertimage', url); + } + self.hideDialog().focus(); + } + }, + beforeRemove : function() { + searchBtn.remove(); + if (doc) { + doc.write(''); + } + iframe.remove(); + } + }); + var div = dialog.div, + addressBox = K('[name="address"]', div), + searchBtn = K('[name="searchBtn"]', div), + checkbox = K('[name="insertDynamicMap"]', dialog.div), + win, doc; + var iframe = K(''); + function ready() { + win = iframe[0].contentWindow; + doc = K.iframeDoc(iframe); + } + iframe.bind('load', function() { + iframe.unbind('load'); + if (K.IE) { + ready(); + } else { + setTimeout(ready, 0); + } + }); + K('.ke-map', div).replaceWith(iframe); + // search map + searchBtn.click(function() { + win.search(addressBox.val()); + }); + }); +}); diff --git a/tools/NKeditor/plugins/baidumap/index.html b/tools/NKeditor/plugins/baidumap/index.html new file mode 100644 index 00000000..e106d1ac --- /dev/null +++ b/tools/NKeditor/plugins/baidumap/index.html @@ -0,0 +1,83 @@ + + + + + + +百度地图API自定义地图 + + + + + + + +
      + + + \ No newline at end of file diff --git a/tools/NKeditor/plugins/baidumap/map.html b/tools/NKeditor/plugins/baidumap/map.html new file mode 100644 index 00000000..431b0d09 --- /dev/null +++ b/tools/NKeditor/plugins/baidumap/map.html @@ -0,0 +1,43 @@ + + + + + Baidu Maps + + + + + +
      + + diff --git a/tools/NKeditor/plugins/clearhtml/clearhtml.js b/tools/NKeditor/plugins/clearhtml/clearhtml.js new file mode 100644 index 00000000..1bf0e5dc --- /dev/null +++ b/tools/NKeditor/plugins/clearhtml/clearhtml.js @@ -0,0 +1,29 @@ +/******************************************************************************* +* KindEditor - WYSIWYG HTML Editor for Internet +* Copyright (C) 2006-2011 kindsoft.net +* +* @author Roddy +* @site http://www.kindsoft.net/ +* @licence http://www.kindsoft.net/license.php +*******************************************************************************/ + +KindEditor.plugin('clearhtml', function(K) { + var self = this, name = 'clearhtml'; + self.clickToolbar(name, function() { + self.focus(); + var html = self.html(); + html = html.replace(/(]*>)([\s\S]*?)(<\/script>)/ig, ''); + html = html.replace(/(]*>)([\s\S]*?)(<\/style>)/ig, ''); + html = K.formatHtml(html, { + a : ['href', 'target'], + embed : ['src', 'width', 'height', 'type', 'loop', 'autostart', 'quality', '.width', '.height', 'align', 'allowscriptaccess'], + img : ['src', 'width', 'height', 'border', 'alt', 'title', '.width', '.height'], + table : ['border'], + 'td,th' : ['rowspan', 'colspan'], + 'div,hr,br,tbody,tr,p,ol,ul,li,blockquote,h1,h2,h3,h4,h5,h6' : [] + }); + self.html(html); + self.cmd.selection(true); + self.addBookmark(); + }); +}); diff --git a/tools/NKeditor/plugins/code/code.js b/tools/NKeditor/plugins/code/code.js new file mode 100644 index 00000000..67bd09d3 --- /dev/null +++ b/tools/NKeditor/plugins/code/code.js @@ -0,0 +1,64 @@ +/******************************************************************************* +* KindEditor - WYSIWYG HTML Editor for Internet +* Copyright (C) 2006-2011 kindsoft.net +* +* @author Roddy +* @site http://www.kindsoft.net/ +* @licence http://www.kindsoft.net/license.php +*******************************************************************************/ + +// google code prettify: http://google-code-prettify.googlecode.com/ +// http://google-code-prettify.googlecode.com/ + +KindEditor.plugin('code', function(K) { + var self = this, name = 'code'; + self.clickToolbar(name, function() { + var lang = self.lang(name + '.'), + html = ['
      ', + '
      ', + '', + '
      ', + '', + '
      '].join(''), + dialog = self.createDialog({ + name : name, + width : 450, + title : self.lang(name), + body : html, + yesBtn : { + name : self.lang('yes'), + click : function(e) { + var type = K('.ke-select', dialog.div).val(), + code = textarea.val(), + cls = type === '' ? '' : 'language-' + type, + html = '
      ' + K.escape(code) + '

      '; + if (K.trim(code) === '') { + K.options.errorMsgHandler(lang.pleaseInput, "error"); + textarea[0].focus(); + return; + } + self.insertHtml(html).hideDialog().focus(); + } + } + }), + textarea = K('textarea', dialog.div); + textarea[0].focus(); + }); +}); diff --git a/tools/NKeditor/plugins/code/pretty.js b/tools/NKeditor/plugins/code/pretty.js new file mode 100644 index 00000000..ec84da94 --- /dev/null +++ b/tools/NKeditor/plugins/code/pretty.js @@ -0,0 +1,18 @@ +/** + * @author yangjian + * @since 18-9-11 下午9:02. + */ + +// function _bindEvent(el, type, fn) { +// if (el.addEventListener){ +// el.addEventListener(type, fn); +// } else if (el.attachEvent){ +// el.attachEvent('on' + type, fn); +// } +// } +// _bindEvent(document.body, "DOMNodeInserted", function(e) { +// var className = e.target.className; +// if (className && className.indexOf("language-") != -1) { +// Prism.highlightElement(e.target); +// } +// }) diff --git a/tools/NKeditor/plugins/code/prism.css b/tools/NKeditor/plugins/code/prism.css new file mode 100644 index 00000000..f88adbcf --- /dev/null +++ b/tools/NKeditor/plugins/code/prism.css @@ -0,0 +1,292 @@ +/* PrismJS 1.15.0 +https://prismjs.com/download.html#themes=prism&languages=markup+css+clike+javascript+c+csharp+bash+cpp+aspnet+ruby+markup-templating+go+markdown+php+python+sass+yaml&plugins=line-highlight+line-numbers+toolbar+highlight-keywords+show-language+copy-to-clipboard */ +/** + * prism.js default theme for JavaScript, CSS and HTML + * Based on dabblet (http://dabblet.com) + * @author Lea Verou + */ + +code[class*="language-"], +pre[class*="language-"] { + color: black; + background: none; + text-shadow: 0 1px white; + font-family: Consolas, Monaco, 'Andale Mono', 'Ubuntu Mono', monospace; + text-align: left; + white-space: pre; + word-spacing: normal; + word-break: normal; + word-wrap: normal; + line-height: 1.5; + + -moz-tab-size: 4; + -o-tab-size: 4; + tab-size: 4; + + -webkit-hyphens: none; + -moz-hyphens: none; + -ms-hyphens: none; + hyphens: none; +} + +pre[class*="language-"]::-moz-selection, pre[class*="language-"] ::-moz-selection, +code[class*="language-"]::-moz-selection, code[class*="language-"] ::-moz-selection { + text-shadow: none; + background: #b3d4fc; +} + +pre[class*="language-"]::selection, pre[class*="language-"] ::selection, +code[class*="language-"]::selection, code[class*="language-"] ::selection { + text-shadow: none; + background: #b3d4fc; +} + +@media print { + code[class*="language-"], + pre[class*="language-"] { + text-shadow: none; + } +} + +/* Code blocks */ +pre[class*="language-"] { + padding: 1em; + margin: .5em 0; + overflow: auto; +} + +:not(pre) > code[class*="language-"], +pre[class*="language-"] { + background: #f5f2f0; +} + +/* Inline code */ +:not(pre) > code[class*="language-"] { + padding: .1em; + border-radius: .3em; + white-space: normal; +} + +.token.comment, +.token.prolog, +.token.doctype, +.token.cdata { + color: slategray; +} + +.token.punctuation { + color: #999; +} + +.namespace { + opacity: .7; +} + +.token.property, +.token.tag, +.token.boolean, +.token.number, +.token.constant, +.token.symbol, +.token.deleted { + color: #905; +} + +.token.selector, +.token.attr-name, +.token.string, +.token.char, +.token.builtin, +.token.inserted { + color: #690; +} + +.token.operator, +.token.entity, +.token.url, +.language-css .token.string, +.style .token.string { + color: #9a6e3a; + background: hsla(0, 0%, 100%, .5); +} + +.token.atrule, +.token.attr-value, +.token.keyword { + color: #07a; +} + +.token.function, +.token.class-name { + color: #DD4A68; +} + +.token.regex, +.token.important, +.token.variable { + color: #e90; +} + +.token.important, +.token.bold { + font-weight: bold; +} +.token.italic { + font-style: italic; +} + +.token.entity { + cursor: help; +} + +pre[data-line] { + position: relative; + padding: 1em 0 1em 3em; +} + +.line-highlight { + position: absolute; + left: 0; + right: 0; + padding: inherit 0; + margin-top: 1em; /* Same as .prism’s padding-top */ + + background: hsla(24, 20%, 50%,.08); + background: linear-gradient(to right, hsla(24, 20%, 50%,.1) 70%, hsla(24, 20%, 50%,0)); + + pointer-events: none; + + line-height: inherit; + white-space: pre; +} + + .line-highlight:before, + .line-highlight[data-end]:after { + content: attr(data-start); + position: absolute; + top: .4em; + left: .6em; + min-width: 1em; + padding: 0 .5em; + background-color: hsla(24, 20%, 50%,.4); + color: hsl(24, 20%, 95%); + font: bold 65%/1.5 sans-serif; + text-align: center; + vertical-align: .3em; + border-radius: 999px; + text-shadow: none; + box-shadow: 0 1px white; + } + + .line-highlight[data-end]:after { + content: attr(data-end); + top: auto; + bottom: .4em; + } + +.line-numbers .line-highlight:before, +.line-numbers .line-highlight:after { + content: none; +} + +pre[class*="language-"].line-numbers { + position: relative; + padding-left: 3.8em; + counter-reset: linenumber; +} + +pre[class*="language-"].line-numbers > code { + position: relative; + white-space: inherit; +} + +.line-numbers .line-numbers-rows { + position: absolute; + pointer-events: none; + top: 0; + font-size: 100%; + left: -3.8em; + width: 3em; /* works for line-numbers below 1000 lines */ + letter-spacing: -1px; + border-right: 1px solid #999; + + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; + +} + + .line-numbers-rows > span { + pointer-events: none; + display: block; + counter-increment: linenumber; + } + + .line-numbers-rows > span:before { + content: counter(linenumber); + color: #999; + display: block; + padding-right: 0.8em; + text-align: right; + } + +div.code-toolbar { + position: relative; +} + +div.code-toolbar > .toolbar { + position: absolute; + top: .3em; + right: .2em; + transition: opacity 0.3s ease-in-out; + opacity: 0; +} + +div.code-toolbar:hover > .toolbar { + opacity: 1; +} + +div.code-toolbar > .toolbar .toolbar-item { + display: inline-block; +} + +div.code-toolbar > .toolbar a { + cursor: pointer; +} + +div.code-toolbar > .toolbar button { + background: none; + border: 0; + color: inherit; + font: inherit; + line-height: normal; + overflow: visible; + padding: 0; + -webkit-user-select: none; /* for button */ + -moz-user-select: none; + -ms-user-select: none; +} + +div.code-toolbar > .toolbar a, +div.code-toolbar > .toolbar button, +div.code-toolbar > .toolbar span { + color: #bbb; + font-size: .8em; + padding: 0 .5em; + background: #f5f2f0; + background: rgba(224, 224, 224, 0.2); + box-shadow: 0 2px 0 0 rgba(0,0,0,0.2); + border-radius: .5em; +} + +div.code-toolbar > .toolbar a:hover, +div.code-toolbar > .toolbar a:focus, +div.code-toolbar > .toolbar button:hover, +div.code-toolbar > .toolbar button:focus, +div.code-toolbar > .toolbar span:hover, +div.code-toolbar > .toolbar span:focus { + color: inherit; + text-decoration: none; +} + diff --git a/tools/NKeditor/plugins/code/prism.js b/tools/NKeditor/plugins/code/prism.js new file mode 100644 index 00000000..0f748e71 --- /dev/null +++ b/tools/NKeditor/plugins/code/prism.js @@ -0,0 +1,26 @@ +/* PrismJS 1.15.0 +https://prismjs.com/download.html#themes=prism&languages=markup+css+clike+javascript+c+csharp+bash+cpp+aspnet+ruby+markup-templating+go+markdown+php+python+sass+yaml&plugins=line-highlight+line-numbers+toolbar+highlight-keywords+show-language+copy-to-clipboard */ +var _self="undefined"!=typeof window?window:"undefined"!=typeof WorkerGlobalScope&&self instanceof WorkerGlobalScope?self:{},Prism=function(){var e=/\blang(?:uage)?-([\w-]+)\b/i,t=0,n=_self.Prism={manual:_self.Prism&&_self.Prism.manual,disableWorkerMessageHandler:_self.Prism&&_self.Prism.disableWorkerMessageHandler,util:{encode:function(e){return e instanceof r?new r(e.type,n.util.encode(e.content),e.alias):"Array"===n.util.type(e)?e.map(n.util.encode):e.replace(/&/g,"&").replace(/e.length)return;if(!(w instanceof s)){if(m&&b!=t.length-1){h.lastIndex=k;var _=h.exec(e);if(!_)break;for(var j=_.index+(d?_[1].length:0),P=_.index+_[0].length,A=b,x=k,O=t.length;O>A&&(P>x||!t[A].type&&!t[A-1].greedy);++A)x+=t[A].length,j>=x&&(++b,k=x);if(t[b]instanceof s)continue;I=A-b,w=e.slice(k,x),_.index-=k}else{h.lastIndex=0;var _=h.exec(w),I=1}if(_){d&&(p=_[1]?_[1].length:0);var j=_.index+p,_=_[0].slice(p),P=j+_.length,N=w.slice(0,j),S=w.slice(P),C=[b,I];N&&(++b,k+=N.length,C.push(N));var E=new s(u,f?n.tokenize(_,f):_,y,_,m);if(C.push(E),S&&C.push(S),Array.prototype.splice.apply(t,C),1!=I&&n.matchGrammar(e,t,r,b,k,!0,u),i)break}else if(i)break}}}}},tokenize:function(e,t){var r=[e],a=t.rest;if(a){for(var l in a)t[l]=a[l];delete t.rest}return n.matchGrammar(e,r,t,0,0,!1),r},hooks:{all:{},add:function(e,t){var r=n.hooks.all;r[e]=r[e]||[],r[e].push(t)},run:function(e,t){var r=n.hooks.all[e];if(r&&r.length)for(var a,l=0;a=r[l++];)a(t)}}},r=n.Token=function(e,t,n,r,a){this.type=e,this.content=t,this.alias=n,this.length=0|(r||"").length,this.greedy=!!a};if(r.stringify=function(e,t,a){if("string"==typeof e)return e;if("Array"===n.util.type(e))return e.map(function(n){return r.stringify(n,t,e)}).join("");var l={type:e.type,content:r.stringify(e.content,t,a),tag:"span",classes:["token",e.type],attributes:{},language:t,parent:a};if(e.alias){var i="Array"===n.util.type(e.alias)?e.alias:[e.alias];Array.prototype.push.apply(l.classes,i)}n.hooks.run("wrap",l);var o=Object.keys(l.attributes).map(function(e){return e+'="'+(l.attributes[e]||"").replace(/"/g,""")+'"'}).join(" ");return"<"+l.tag+' class="'+l.classes.join(" ")+'"'+(o?" "+o:"")+">"+l.content+""},!_self.document)return _self.addEventListener?(n.disableWorkerMessageHandler||_self.addEventListener("message",function(e){var t=JSON.parse(e.data),r=t.language,a=t.code,l=t.immediateClose;_self.postMessage(n.highlight(a,n.languages[r],r)),l&&_self.close()},!1),_self.Prism):_self.Prism;var a=document.currentScript||[].slice.call(document.getElementsByTagName("script")).pop();return a&&(n.filename=a.src,n.manual||a.hasAttribute("data-manual")||("loading"!==document.readyState?window.requestAnimationFrame?window.requestAnimationFrame(n.highlightAll):window.setTimeout(n.highlightAll,16):document.addEventListener("DOMContentLoaded",n.highlightAll))),_self.Prism}();"undefined"!=typeof module&&module.exports&&(module.exports=Prism),"undefined"!=typeof global&&(global.Prism=Prism); +Prism.languages.markup={comment://,prolog:/<\?[\s\S]+?\?>/,doctype://i,cdata://i,tag:{pattern:/<\/?(?!\d)[^\s>\/=$<%]+(?:\s+[^\s>\/=]+(?:=(?:("|')(?:\\[\s\S]|(?!\1)[^\\])*\1|[^\s'">=]+))?)*\s*\/?>/i,greedy:!0,inside:{tag:{pattern:/^<\/?[^\s>\/]+/i,inside:{punctuation:/^<\/?/,namespace:/^[^\s>\/:]+:/}},"attr-value":{pattern:/=(?:("|')(?:\\[\s\S]|(?!\1)[^\\])*\1|[^\s'">=]+)/i,inside:{punctuation:[/^=/,{pattern:/(^|[^\\])["']/,lookbehind:!0}]}},punctuation:/\/?>/,"attr-name":{pattern:/[^\s>\/]+/,inside:{namespace:/^[^\s>\/:]+:/}}}},entity:/&#?[\da-z]{1,8};/i},Prism.languages.markup.tag.inside["attr-value"].inside.entity=Prism.languages.markup.entity,Prism.hooks.add("wrap",function(a){"entity"===a.type&&(a.attributes.title=a.content.replace(/&/,"&"))}),Prism.languages.xml=Prism.languages.markup,Prism.languages.html=Prism.languages.markup,Prism.languages.mathml=Prism.languages.markup,Prism.languages.svg=Prism.languages.markup; +Prism.languages.css={comment:/\/\*[\s\S]*?\*\//,atrule:{pattern:/@[\w-]+?.*?(?:;|(?=\s*\{))/i,inside:{rule:/@[\w-]+/}},url:/url\((?:(["'])(?:\\(?:\r\n|[\s\S])|(?!\1)[^\\\r\n])*\1|.*?)\)/i,selector:/[^{}\s][^{};]*?(?=\s*\{)/,string:{pattern:/("|')(?:\\(?:\r\n|[\s\S])|(?!\1)[^\\\r\n])*\1/,greedy:!0},property:/[-_a-z\xA0-\uFFFF][-\w\xA0-\uFFFF]*(?=\s*:)/i,important:/\B!important\b/i,"function":/[-a-z0-9]+(?=\()/i,punctuation:/[(){};:]/},Prism.languages.css.atrule.inside.rest=Prism.languages.css,Prism.languages.markup&&(Prism.languages.insertBefore("markup","tag",{style:{pattern:/()[\s\S]*?(?=<\/style>)/i,lookbehind:!0,inside:Prism.languages.css,alias:"language-css",greedy:!0}}),Prism.languages.insertBefore("inside","attr-value",{"style-attr":{pattern:/\s*style=("|')(?:\\[\s\S]|(?!\1)[^\\])*\1/i,inside:{"attr-name":{pattern:/^\s*style/i,inside:Prism.languages.markup.tag.inside},punctuation:/^\s*=\s*['"]|['"]\s*$/,"attr-value":{pattern:/.+/i,inside:Prism.languages.css}},alias:"language-css"}},Prism.languages.markup.tag)); +Prism.languages.clike={comment:[{pattern:/(^|[^\\])\/\*[\s\S]*?(?:\*\/|$)/,lookbehind:!0},{pattern:/(^|[^\\:])\/\/.*/,lookbehind:!0,greedy:!0}],string:{pattern:/(["'])(?:\\(?:\r\n|[\s\S])|(?!\1)[^\\\r\n])*\1/,greedy:!0},"class-name":{pattern:/((?:\b(?:class|interface|extends|implements|trait|instanceof|new)\s+)|(?:catch\s+\())[\w.\\]+/i,lookbehind:!0,inside:{punctuation:/[.\\]/}},keyword:/\b(?:if|else|while|do|for|return|in|instanceof|function|new|try|throw|catch|finally|null|break|continue)\b/,"boolean":/\b(?:true|false)\b/,"function":/\w+(?=\()/,number:/\b0x[\da-f]+\b|(?:\b\d+\.?\d*|\B\.\d+)(?:e[+-]?\d+)?/i,operator:/--?|\+\+?|!=?=?|<=?|>=?|==?=?|&&?|\|\|?|\?|\*|\/|~|\^|%/,punctuation:/[{}[\];(),.:]/}; +Prism.languages.javascript=Prism.languages.extend("clike",{"class-name":[Prism.languages.clike["class-name"],{pattern:/(^|[^$\w\xA0-\uFFFF])[_$A-Z\xA0-\uFFFF][$\w\xA0-\uFFFF]*(?=\.(?:prototype|constructor))/,lookbehind:!0}],keyword:[{pattern:/((?:^|})\s*)(?:catch|finally)\b/,lookbehind:!0},/\b(?:as|async|await|break|case|class|const|continue|debugger|default|delete|do|else|enum|export|extends|for|from|function|get|if|implements|import|in|instanceof|interface|let|new|null|of|package|private|protected|public|return|set|static|super|switch|this|throw|try|typeof|var|void|while|with|yield)\b/],number:/\b(?:(?:0[xX][\dA-Fa-f]+|0[bB][01]+|0[oO][0-7]+)n?|\d+n|NaN|Infinity)\b|(?:\b\d+\.?\d*|\B\.\d+)(?:[Ee][+-]?\d+)?/,"function":/[_$a-zA-Z\xA0-\uFFFF][$\w\xA0-\uFFFF]*(?=\s*\(|\.(?:apply|bind|call)\()/,operator:/-[-=]?|\+[+=]?|!=?=?|<>?>?=?|=(?:==?|>)?|&[&=]?|\|[|=]?|\*\*?=?|\/=?|~|\^=?|%=?|\?|\.{3}/}),Prism.languages.javascript["class-name"][0].pattern=/(\b(?:class|interface|extends|implements|instanceof|new)\s+)[\w.\\]+/,Prism.languages.insertBefore("javascript","keyword",{regex:{pattern:/((?:^|[^$\w\xA0-\uFFFF."'\])\s])\s*)\/(\[[^\]\r\n]+]|\\.|[^\/\\\[\r\n])+\/[gimyu]{0,5}(?=\s*($|[\r\n,.;})\]]))/,lookbehind:!0,greedy:!0},"function-variable":{pattern:/[_$a-z\xA0-\uFFFF][$\w\xA0-\uFFFF]*(?=\s*[=:]\s*(?:function\b|(?:\([^()]*\)|[_$a-z\xA0-\uFFFF][$\w\xA0-\uFFFF]*)\s*=>))/i,alias:"function"},constant:/\b[A-Z][A-Z\d_]*\b/}),Prism.languages.insertBefore("javascript","string",{"template-string":{pattern:/`(?:\\[\s\S]|\${[^}]+}|[^\\`])*`/,greedy:!0,inside:{interpolation:{pattern:/\${[^}]+}/,inside:{"interpolation-punctuation":{pattern:/^\${|}$/,alias:"punctuation"},rest:Prism.languages.javascript}},string:/[\s\S]+/}}}),Prism.languages.markup&&Prism.languages.insertBefore("markup","tag",{script:{pattern:/()[\s\S]*?(?=<\/script>)/i,lookbehind:!0,inside:Prism.languages.javascript,alias:"language-javascript",greedy:!0}}),Prism.languages.js=Prism.languages.javascript; +Prism.languages.c=Prism.languages.extend("clike",{keyword:/\b(?:_Alignas|_Alignof|_Atomic|_Bool|_Complex|_Generic|_Imaginary|_Noreturn|_Static_assert|_Thread_local|asm|typeof|inline|auto|break|case|char|const|continue|default|do|double|else|enum|extern|float|for|goto|if|int|long|register|return|short|signed|sizeof|static|struct|switch|typedef|union|unsigned|void|volatile|while)\b/,operator:/>>=?|<<=?|->|([-+&|:])\1|[?:~]|[-+*\/%&|^!=<>]=?/,number:/(?:\b0x[\da-f]+|(?:\b\d+\.?\d*|\B\.\d+)(?:e[+-]?\d+)?)[ful]*/i}),Prism.languages.insertBefore("c","string",{macro:{pattern:/(^\s*)#\s*[a-z]+(?:[^\r\n\\]|\\(?:\r\n|[\s\S]))*/im,lookbehind:!0,alias:"property",inside:{string:{pattern:/(#\s*include\s*)(?:<.+?>|("|')(?:\\?.)+?\2)/,lookbehind:!0},directive:{pattern:/(#\s*)\b(?:define|defined|elif|else|endif|error|ifdef|ifndef|if|import|include|line|pragma|undef|using)\b/,lookbehind:!0,alias:"keyword"}}},constant:/\b(?:__FILE__|__LINE__|__DATE__|__TIME__|__TIMESTAMP__|__func__|EOF|NULL|SEEK_CUR|SEEK_END|SEEK_SET|stdin|stdout|stderr)\b/}),delete Prism.languages.c["class-name"],delete Prism.languages.c["boolean"]; +Prism.languages.csharp=Prism.languages.extend("clike",{keyword:/\b(?:abstract|add|alias|as|ascending|async|await|base|bool|break|byte|case|catch|char|checked|class|const|continue|decimal|default|delegate|descending|do|double|dynamic|else|enum|event|explicit|extern|false|finally|fixed|float|for|foreach|from|get|global|goto|group|if|implicit|in|int|interface|internal|into|is|join|let|lock|long|namespace|new|null|object|operator|orderby|out|override|params|partial|private|protected|public|readonly|ref|remove|return|sbyte|sealed|select|set|short|sizeof|stackalloc|static|string|struct|switch|this|throw|true|try|typeof|uint|ulong|unchecked|unsafe|ushort|using|value|var|virtual|void|volatile|where|while|yield)\b/,string:[{pattern:/@("|')(?:\1\1|\\[\s\S]|(?!\1)[^\\])*\1/,greedy:!0},{pattern:/("|')(?:\\.|(?!\1)[^\\\r\n])*?\1/,greedy:!0}],"class-name":[{pattern:/\b[A-Z]\w*(?:\.\w+)*\b(?=\s+\w+)/,inside:{punctuation:/\./}},{pattern:/(\[)[A-Z]\w*(?:\.\w+)*\b/,lookbehind:!0,inside:{punctuation:/\./}},{pattern:/(\b(?:class|interface)\s+[A-Z]\w*(?:\.\w+)*\s*:\s*)[A-Z]\w*(?:\.\w+)*\b/,lookbehind:!0,inside:{punctuation:/\./}},{pattern:/((?:\b(?:class|interface|new)\s+)|(?:catch\s+\())[A-Z]\w*(?:\.\w+)*\b/,lookbehind:!0,inside:{punctuation:/\./}}],number:/\b0x[\da-f]+\b|(?:\b\d+\.?\d*|\B\.\d+)f?/i}),Prism.languages.insertBefore("csharp","class-name",{"generic-method":{pattern:/\w+\s*<[^>\r\n]+?>\s*(?=\()/,inside:{"function":/^\w+/,"class-name":{pattern:/\b[A-Z]\w*(?:\.\w+)*\b/,inside:{punctuation:/\./}},keyword:Prism.languages.csharp.keyword,punctuation:/[<>(),.:]/}},preprocessor:{pattern:/(^\s*)#.*/m,lookbehind:!0,alias:"property",inside:{directive:{pattern:/(\s*#)\b(?:define|elif|else|endif|endregion|error|if|line|pragma|region|undef|warning)\b/,lookbehind:!0,alias:"keyword"}}}}),Prism.languages.dotnet=Prism.languages.csharp; +!function(e){var t={variable:[{pattern:/\$?\(\([\s\S]+?\)\)/,inside:{variable:[{pattern:/(^\$\(\([\s\S]+)\)\)/,lookbehind:!0},/^\$\(\(/],number:/\b0x[\dA-Fa-f]+\b|(?:\b\d+\.?\d*|\B\.\d+)(?:[Ee]-?\d+)?/,operator:/--?|-=|\+\+?|\+=|!=?|~|\*\*?|\*=|\/=?|%=?|<<=?|>>=?|<=?|>=?|==?|&&?|&=|\^=?|\|\|?|\|=|\?|:/,punctuation:/\(\(?|\)\)?|,|;/}},{pattern:/\$\([^)]+\)|`[^`]+`/,greedy:!0,inside:{variable:/^\$\(|^`|\)$|`$/}},/\$(?:[\w#?*!@]+|\{[^}]+\})/i]};e.languages.bash={shebang:{pattern:/^#!\s*\/bin\/bash|^#!\s*\/bin\/sh/,alias:"important"},comment:{pattern:/(^|[^"{\\])#.*/,lookbehind:!0},string:[{pattern:/((?:^|[^<])<<\s*)["']?(\w+?)["']?\s*\r?\n(?:[\s\S])*?\r?\n\2/,lookbehind:!0,greedy:!0,inside:t},{pattern:/(["'])(?:\\[\s\S]|\$\([^)]+\)|`[^`]+`|(?!\1)[^\\])*\1/,greedy:!0,inside:t}],variable:t.variable,"function":{pattern:/(^|[\s;|&])(?:alias|apropos|apt-get|aptitude|aspell|awk|basename|bash|bc|bg|builtin|bzip2|cal|cat|cd|cfdisk|chgrp|chmod|chown|chroot|chkconfig|cksum|clear|cmp|comm|command|cp|cron|crontab|csplit|curl|cut|date|dc|dd|ddrescue|df|diff|diff3|dig|dir|dircolors|dirname|dirs|dmesg|du|egrep|eject|enable|env|ethtool|eval|exec|expand|expect|export|expr|fdformat|fdisk|fg|fgrep|file|find|fmt|fold|format|free|fsck|ftp|fuser|gawk|getopts|git|grep|groupadd|groupdel|groupmod|groups|gzip|hash|head|help|hg|history|hostname|htop|iconv|id|ifconfig|ifdown|ifup|import|install|jobs|join|kill|killall|less|link|ln|locate|logname|logout|look|lpc|lpr|lprint|lprintd|lprintq|lprm|ls|lsof|make|man|mkdir|mkfifo|mkisofs|mknod|more|most|mount|mtools|mtr|mv|mmv|nano|netstat|nice|nl|nohup|notify-send|npm|nslookup|open|op|passwd|paste|pathchk|ping|pkill|popd|pr|printcap|printenv|printf|ps|pushd|pv|pwd|quota|quotacheck|quotactl|ram|rar|rcp|read|readarray|readonly|reboot|rename|renice|remsync|rev|rm|rmdir|rsync|screen|scp|sdiff|sed|seq|service|sftp|shift|shopt|shutdown|sleep|slocate|sort|source|split|ssh|stat|strace|su|sudo|sum|suspend|sync|tail|tar|tee|test|time|timeout|times|touch|top|traceroute|trap|tr|tsort|tty|type|ulimit|umask|umount|unalias|uname|unexpand|uniq|units|unrar|unshar|uptime|useradd|userdel|usermod|users|uuencode|uudecode|v|vdir|vi|vmstat|wait|watch|wc|wget|whereis|which|who|whoami|write|xargs|xdg-open|yes|zip)(?=$|[\s;|&])/,lookbehind:!0},keyword:{pattern:/(^|[\s;|&])(?:let|:|\.|if|then|else|elif|fi|for|break|continue|while|in|case|function|select|do|done|until|echo|exit|return|set|declare)(?=$|[\s;|&])/,lookbehind:!0},"boolean":{pattern:/(^|[\s;|&])(?:true|false)(?=$|[\s;|&])/,lookbehind:!0},operator:/&&?|\|\|?|==?|!=?|<<>|<=?|>=?|=~/,punctuation:/\$?\(\(?|\)\)?|\.\.|[{}[\];]/};var a=t.variable[1].inside;a.string=e.languages.bash.string,a["function"]=e.languages.bash["function"],a.keyword=e.languages.bash.keyword,a["boolean"]=e.languages.bash["boolean"],a.operator=e.languages.bash.operator,a.punctuation=e.languages.bash.punctuation,e.languages.shell=e.languages.bash}(Prism); +Prism.languages.cpp=Prism.languages.extend("c",{keyword:/\b(?:alignas|alignof|asm|auto|bool|break|case|catch|char|char16_t|char32_t|class|compl|const|constexpr|const_cast|continue|decltype|default|delete|do|double|dynamic_cast|else|enum|explicit|export|extern|float|for|friend|goto|if|inline|int|int8_t|int16_t|int32_t|int64_t|uint8_t|uint16_t|uint32_t|uint64_t|long|mutable|namespace|new|noexcept|nullptr|operator|private|protected|public|register|reinterpret_cast|return|short|signed|sizeof|static|static_assert|static_cast|struct|switch|template|this|thread_local|throw|try|typedef|typeid|typename|union|unsigned|using|virtual|void|volatile|wchar_t|while)\b/,"boolean":/\b(?:true|false)\b/,operator:/>>=?|<<=?|->|([-+&|:])\1|[?:~]|[-+*\/%&|^!=<>]=?|\b(?:and|and_eq|bitand|bitor|not|not_eq|or|or_eq|xor|xor_eq)\b/}),Prism.languages.insertBefore("cpp","keyword",{"class-name":{pattern:/(class\s+)\w+/i,lookbehind:!0}}),Prism.languages.insertBefore("cpp","string",{"raw-string":{pattern:/R"([^()\\ ]{0,16})\([\s\S]*?\)\1"/,alias:"string",greedy:!0}}); +Prism.languages.aspnet=Prism.languages.extend("markup",{"page-directive tag":{pattern:/<%\s*@.*%>/i,inside:{"page-directive tag":/<%\s*@\s*(?:Assembly|Control|Implements|Import|Master(?:Type)?|OutputCache|Page|PreviousPageType|Reference|Register)?|%>/i,rest:Prism.languages.markup.tag.inside}},"directive tag":{pattern:/<%.*%>/i,inside:{"directive tag":/<%\s*?[$=%#:]{0,2}|%>/i,rest:Prism.languages.csharp}}}),Prism.languages.aspnet.tag.pattern=/<(?!%)\/?[^\s>\/]+(?:\s+[^\s>\/=]+(?:=(?:("|')(?:\\[\s\S]|(?!\1)[^\\])*\1|[^\s'">=]+))?)*\s*\/?>/i,Prism.languages.insertBefore("inside","punctuation",{"directive tag":Prism.languages.aspnet["directive tag"]},Prism.languages.aspnet.tag.inside["attr-value"]),Prism.languages.insertBefore("aspnet","comment",{"asp comment":/<%--[\s\S]*?--%>/}),Prism.languages.insertBefore("aspnet",Prism.languages.javascript?"script":"tag",{"asp script":{pattern:/()[\s\S]*?(?=<\/script>)/i,lookbehind:!0,inside:Prism.languages.csharp||{}}}); +!function(e){e.languages.ruby=e.languages.extend("clike",{comment:[/#.*/,{pattern:/^=begin(?:\r?\n|\r)(?:.*(?:\r?\n|\r))*?=end/m,greedy:!0}],keyword:/\b(?:alias|and|BEGIN|begin|break|case|class|def|define_method|defined|do|each|else|elsif|END|end|ensure|false|for|if|in|module|new|next|nil|not|or|protected|private|public|raise|redo|require|rescue|retry|return|self|super|then|throw|true|undef|unless|until|when|while|yield)\b/});var n={pattern:/#\{[^}]+\}/,inside:{delimiter:{pattern:/^#\{|\}$/,alias:"tag"},rest:e.languages.ruby}};e.languages.insertBefore("ruby","keyword",{regex:[{pattern:/%r([^a-zA-Z0-9\s{(\[<])(?:(?!\1)[^\\]|\\[\s\S])*\1[gim]{0,3}/,greedy:!0,inside:{interpolation:n}},{pattern:/%r\((?:[^()\\]|\\[\s\S])*\)[gim]{0,3}/,greedy:!0,inside:{interpolation:n}},{pattern:/%r\{(?:[^#{}\\]|#(?:\{[^}]+\})?|\\[\s\S])*\}[gim]{0,3}/,greedy:!0,inside:{interpolation:n}},{pattern:/%r\[(?:[^\[\]\\]|\\[\s\S])*\][gim]{0,3}/,greedy:!0,inside:{interpolation:n}},{pattern:/%r<(?:[^<>\\]|\\[\s\S])*>[gim]{0,3}/,greedy:!0,inside:{interpolation:n}},{pattern:/(^|[^\/])\/(?!\/)(\[.+?]|\\.|[^\/\\\r\n])+\/[gim]{0,3}(?=\s*($|[\r\n,.;})]))/,lookbehind:!0,greedy:!0}],variable:/[@$]+[a-zA-Z_]\w*(?:[?!]|\b)/,symbol:{pattern:/(^|[^:]):[a-zA-Z_]\w*(?:[?!]|\b)/,lookbehind:!0}}),e.languages.insertBefore("ruby","number",{builtin:/\b(?:Array|Bignum|Binding|Class|Continuation|Dir|Exception|FalseClass|File|Stat|Fixnum|Float|Hash|Integer|IO|MatchData|Method|Module|NilClass|Numeric|Object|Proc|Range|Regexp|String|Struct|TMS|Symbol|ThreadGroup|Thread|Time|TrueClass)\b/,constant:/\b[A-Z]\w*(?:[?!]|\b)/}),e.languages.ruby.string=[{pattern:/%[qQiIwWxs]?([^a-zA-Z0-9\s{(\[<])(?:(?!\1)[^\\]|\\[\s\S])*\1/,greedy:!0,inside:{interpolation:n}},{pattern:/%[qQiIwWxs]?\((?:[^()\\]|\\[\s\S])*\)/,greedy:!0,inside:{interpolation:n}},{pattern:/%[qQiIwWxs]?\{(?:[^#{}\\]|#(?:\{[^}]+\})?|\\[\s\S])*\}/,greedy:!0,inside:{interpolation:n}},{pattern:/%[qQiIwWxs]?\[(?:[^\[\]\\]|\\[\s\S])*\]/,greedy:!0,inside:{interpolation:n}},{pattern:/%[qQiIwWxs]?<(?:[^<>\\]|\\[\s\S])*>/,greedy:!0,inside:{interpolation:n}},{pattern:/("|')(?:#\{[^}]+\}|\\(?:\r\n|[\s\S])|(?!\1)[^\\\r\n])*\1/,greedy:!0,inside:{interpolation:n}}]}(Prism); +Prism.languages["markup-templating"]={},Object.defineProperties(Prism.languages["markup-templating"],{buildPlaceholders:{value:function(e,t,n,a){e.language===t&&(e.tokenStack=[],e.code=e.code.replace(n,function(n){if("function"==typeof a&&!a(n))return n;for(var r=e.tokenStack.length;-1!==e.code.indexOf("___"+t.toUpperCase()+r+"___");)++r;return e.tokenStack[r]=n,"___"+t.toUpperCase()+r+"___"}),e.grammar=Prism.languages.markup)}},tokenizePlaceholders:{value:function(e,t){if(e.language===t&&e.tokenStack){e.grammar=Prism.languages[t];var n=0,a=Object.keys(e.tokenStack),r=function(o){if(!(n>=a.length))for(var i=0;i-1){++n;var f,u=l.substring(0,p),_=new Prism.Token(t,Prism.tokenize(s,e.grammar,t),"language-"+t,s),k=l.substring(p+("___"+t.toUpperCase()+c+"___").length);if(u||k?(f=[u,_,k].filter(function(e){return!!e}),r(f)):f=_,"string"==typeof g?Array.prototype.splice.apply(o,[i,1].concat(f)):g.content=f,n>=a.length)break}}else g.content&&"string"!=typeof g.content&&r(g.content)}};r(e.tokens)}}}}); +Prism.languages.go=Prism.languages.extend("clike",{keyword:/\b(?:break|case|chan|const|continue|default|defer|else|fallthrough|for|func|go(?:to)?|if|import|interface|map|package|range|return|select|struct|switch|type|var)\b/,builtin:/\b(?:bool|byte|complex(?:64|128)|error|float(?:32|64)|rune|string|u?int(?:8|16|32|64)?|uintptr|append|cap|close|complex|copy|delete|imag|len|make|new|panic|print(?:ln)?|real|recover)\b/,"boolean":/\b(?:_|iota|nil|true|false)\b/,operator:/[*\/%^!=]=?|\+[=+]?|-[=-]?|\|[=|]?|&(?:=|&|\^=?)?|>(?:>=?|=)?|<(?:<=?|=|-)?|:=|\.\.\./,number:/(?:\b0x[a-f\d]+|(?:\b\d+\.?\d*|\B\.\d+)(?:e[-+]?\d+)?)i?/i,string:{pattern:/(["'`])(\\[\s\S]|(?!\1)[^\\])*\1/,greedy:!0}}),delete Prism.languages.go["class-name"]; +Prism.languages.markdown=Prism.languages.extend("markup",{}),Prism.languages.insertBefore("markdown","prolog",{blockquote:{pattern:/^>(?:[\t ]*>)*/m,alias:"punctuation"},code:[{pattern:/^(?: {4}|\t).+/m,alias:"keyword"},{pattern:/``.+?``|`[^`\n]+`/,alias:"keyword"}],title:[{pattern:/\w+.*(?:\r?\n|\r)(?:==+|--+)/,alias:"important",inside:{punctuation:/==+$|--+$/}},{pattern:/(^\s*)#+.+/m,lookbehind:!0,alias:"important",inside:{punctuation:/^#+|#+$/}}],hr:{pattern:/(^\s*)([*-])(?:[\t ]*\2){2,}(?=\s*$)/m,lookbehind:!0,alias:"punctuation"},list:{pattern:/(^\s*)(?:[*+-]|\d+\.)(?=[\t ].)/m,lookbehind:!0,alias:"punctuation"},"url-reference":{pattern:/!?\[[^\]]+\]:[\t ]+(?:\S+|<(?:\\.|[^>\\])+>)(?:[\t ]+(?:"(?:\\.|[^"\\])*"|'(?:\\.|[^'\\])*'|\((?:\\.|[^)\\])*\)))?/,inside:{variable:{pattern:/^(!?\[)[^\]]+/,lookbehind:!0},string:/(?:"(?:\\.|[^"\\])*"|'(?:\\.|[^'\\])*'|\((?:\\.|[^)\\])*\))$/,punctuation:/^[\[\]!:]|[<>]/},alias:"url"},bold:{pattern:/(^|[^\\])(\*\*|__)(?:(?:\r?\n|\r)(?!\r?\n|\r)|.)+?\2/,lookbehind:!0,inside:{punctuation:/^\*\*|^__|\*\*$|__$/}},italic:{pattern:/(^|[^\\])([*_])(?:(?:\r?\n|\r)(?!\r?\n|\r)|.)+?\2/,lookbehind:!0,inside:{punctuation:/^[*_]|[*_]$/}},url:{pattern:/!?\[[^\]]+\](?:\([^\s)]+(?:[\t ]+"(?:\\.|[^"\\])*")?\)| ?\[[^\]\n]*\])/,inside:{variable:{pattern:/(!?\[)[^\]]+(?=\]$)/,lookbehind:!0},string:{pattern:/"(?:\\.|[^"\\])*"(?=\)$)/}}}}),Prism.languages.markdown.bold.inside.url=Prism.languages.markdown.url,Prism.languages.markdown.italic.inside.url=Prism.languages.markdown.url,Prism.languages.markdown.bold.inside.italic=Prism.languages.markdown.italic,Prism.languages.markdown.italic.inside.bold=Prism.languages.markdown.bold; +!function(e){e.languages.php=e.languages.extend("clike",{keyword:/\b(?:and|or|xor|array|as|break|case|cfunction|class|const|continue|declare|default|die|do|else|elseif|enddeclare|endfor|endforeach|endif|endswitch|endwhile|extends|for|foreach|function|include|include_once|global|if|new|return|static|switch|use|require|require_once|var|while|abstract|interface|public|implements|private|protected|parent|throw|null|echo|print|trait|namespace|final|yield|goto|instanceof|finally|try|catch)\b/i,constant:/\b[A-Z0-9_]{2,}\b/,comment:{pattern:/(^|[^\\])(?:\/\*[\s\S]*?\*\/|\/\/.*)/,lookbehind:!0}}),e.languages.insertBefore("php","string",{"shell-comment":{pattern:/(^|[^\\])#.*/,lookbehind:!0,alias:"comment"}}),e.languages.insertBefore("php","keyword",{delimiter:{pattern:/\?>|<\?(?:php|=)?/i,alias:"important"},variable:/\$+(?:\w+\b|(?={))/i,"package":{pattern:/(\\|namespace\s+|use\s+)[\w\\]+/,lookbehind:!0,inside:{punctuation:/\\/}}}),e.languages.insertBefore("php","operator",{property:{pattern:/(->)[\w]+/,lookbehind:!0}});var n={pattern:/{\$(?:{(?:{[^{}]+}|[^{}]+)}|[^{}])+}|(^|[^\\{])\$+(?:\w+(?:\[.+?]|->\w+)*)/,lookbehind:!0,inside:{rest:e.languages.php}};e.languages.insertBefore("php","string",{"nowdoc-string":{pattern:/<<<'([^']+)'(?:\r\n?|\n)(?:.*(?:\r\n?|\n))*?\1;/,greedy:!0,alias:"string",inside:{delimiter:{pattern:/^<<<'[^']+'|[a-z_]\w*;$/i,alias:"symbol",inside:{punctuation:/^<<<'?|[';]$/}}}},"heredoc-string":{pattern:/<<<(?:"([^"]+)"(?:\r\n?|\n)(?:.*(?:\r\n?|\n))*?\1;|([a-z_]\w*)(?:\r\n?|\n)(?:.*(?:\r\n?|\n))*?\2;)/i,greedy:!0,alias:"string",inside:{delimiter:{pattern:/^<<<(?:"[^"]+"|[a-z_]\w*)|[a-z_]\w*;$/i,alias:"symbol",inside:{punctuation:/^<<<"?|[";]$/}},interpolation:n}},"single-quoted-string":{pattern:/'(?:\\[\s\S]|[^\\'])*'/,greedy:!0,alias:"string"},"double-quoted-string":{pattern:/"(?:\\[\s\S]|[^\\"])*"/,greedy:!0,alias:"string",inside:{interpolation:n}}}),delete e.languages.php.string,e.hooks.add("before-tokenize",function(n){if(/(?:<\?php|<\?)/gi.test(n.code)){var t=/(?:<\?php|<\?)[\s\S]*?(?:\?>|$)/gi;e.languages["markup-templating"].buildPlaceholders(n,"php",t)}}),e.hooks.add("after-tokenize",function(n){e.languages["markup-templating"].tokenizePlaceholders(n,"php")})}(Prism); +Prism.languages.python={comment:{pattern:/(^|[^\\])#.*/,lookbehind:!0},"triple-quoted-string":{pattern:/("""|''')[\s\S]+?\1/,greedy:!0,alias:"string"},string:{pattern:/("|')(?:\\.|(?!\1)[^\\\r\n])*\1/,greedy:!0},"function":{pattern:/((?:^|\s)def[ \t]+)[a-zA-Z_]\w*(?=\s*\()/g,lookbehind:!0},"class-name":{pattern:/(\bclass\s+)\w+/i,lookbehind:!0},keyword:/\b(?:as|assert|async|await|break|class|continue|def|del|elif|else|except|exec|finally|for|from|global|if|import|in|is|lambda|nonlocal|pass|print|raise|return|try|while|with|yield)\b/,builtin:/\b(?:__import__|abs|all|any|apply|ascii|basestring|bin|bool|buffer|bytearray|bytes|callable|chr|classmethod|cmp|coerce|compile|complex|delattr|dict|dir|divmod|enumerate|eval|execfile|file|filter|float|format|frozenset|getattr|globals|hasattr|hash|help|hex|id|input|int|intern|isinstance|issubclass|iter|len|list|locals|long|map|max|memoryview|min|next|object|oct|open|ord|pow|property|range|raw_input|reduce|reload|repr|reversed|round|set|setattr|slice|sorted|staticmethod|str|sum|super|tuple|type|unichr|unicode|vars|xrange|zip)\b/,"boolean":/\b(?:True|False|None)\b/,number:/(?:\b(?=\d)|\B(?=\.))(?:0[bo])?(?:(?:\d|0x[\da-f])[\da-f]*\.?\d*|\.\d+)(?:e[+-]?\d+)?j?\b/i,operator:/[-+%=]=?|!=|\*\*?=?|\/\/?=?|<[<=>]?|>[=>]?|[&|^~]|\b(?:or|and|not)\b/,punctuation:/[{}[\];(),.:]/}; +!function(e){e.languages.sass=e.languages.extend("css",{comment:{pattern:/^([ \t]*)\/[\/*].*(?:(?:\r?\n|\r)\1[ \t]+.+)*/m,lookbehind:!0}}),e.languages.insertBefore("sass","atrule",{"atrule-line":{pattern:/^(?:[ \t]*)[@+=].+/m,inside:{atrule:/(?:@[\w-]+|[+=])/m}}}),delete e.languages.sass.atrule;var a=/\$[-\w]+|#\{\$[-\w]+\}/,t=[/[+*\/%]|[=!]=|<=?|>=?|\b(?:and|or|not)\b/,{pattern:/(\s+)-(?=\s)/,lookbehind:!0}];e.languages.insertBefore("sass","property",{"variable-line":{pattern:/^[ \t]*\$.+/m,inside:{punctuation:/:/,variable:a,operator:t}},"property-line":{pattern:/^[ \t]*(?:[^:\s]+ *:.*|:[^:\s]+.*)/m,inside:{property:[/[^:\s]+(?=\s*:)/,{pattern:/(:)[^:\s]+/,lookbehind:!0}],punctuation:/:/,variable:a,operator:t,important:e.languages.sass.important}}}),delete e.languages.sass.property,delete e.languages.sass.important,delete e.languages.sass.selector,e.languages.insertBefore("sass","punctuation",{selector:{pattern:/([ \t]*)\S(?:,?[^,\r\n]+)*(?:,(?:\r?\n|\r)\1[ \t]+\S(?:,?[^,\r\n]+)*)*/,lookbehind:!0}})}(Prism); +Prism.languages.yaml={scalar:{pattern:/([\-:]\s*(?:![^\s]+)?[ \t]*[|>])[ \t]*(?:((?:\r?\n|\r)[ \t]+)[^\r\n]+(?:\2[^\r\n]+)*)/,lookbehind:!0,alias:"string"},comment:/#.*/,key:{pattern:/(\s*(?:^|[:\-,[{\r\n?])[ \t]*(?:![^\s]+)?[ \t]*)[^\r\n{[\]},#\s]+?(?=\s*:\s)/,lookbehind:!0,alias:"atrule"},directive:{pattern:/(^[ \t]*)%.+/m,lookbehind:!0,alias:"important"},datetime:{pattern:/([:\-,[{]\s*(?:![^\s]+)?[ \t]*)(?:\d{4}-\d\d?-\d\d?(?:[tT]|[ \t]+)\d\d?:\d{2}:\d{2}(?:\.\d*)?[ \t]*(?:Z|[-+]\d\d?(?::\d{2})?)?|\d{4}-\d{2}-\d{2}|\d\d?:\d{2}(?::\d{2}(?:\.\d*)?)?)(?=[ \t]*(?:$|,|]|}))/m,lookbehind:!0,alias:"number"},"boolean":{pattern:/([:\-,[{]\s*(?:![^\s]+)?[ \t]*)(?:true|false)[ \t]*(?=$|,|]|})/im,lookbehind:!0,alias:"important"},"null":{pattern:/([:\-,[{]\s*(?:![^\s]+)?[ \t]*)(?:null|~)[ \t]*(?=$|,|]|})/im,lookbehind:!0,alias:"important"},string:{pattern:/([:\-,[{]\s*(?:![^\s]+)?[ \t]*)("|')(?:(?!\2)[^\\\r\n]|\\.)*\2(?=[ \t]*(?:$|,|]|}))/m,lookbehind:!0,greedy:!0},number:{pattern:/([:\-,[{]\s*(?:![^\s]+)?[ \t]*)[+-]?(?:0x[\da-f]+|0o[0-7]+|(?:\d+\.?\d*|\.?\d+)(?:e[+-]?\d+)?|\.inf|\.nan)[ \t]*(?=$|,|]|})/im,lookbehind:!0},tag:/![^\s]+/,important:/[&*][\w]+/,punctuation:/---|[:[\]{}\-,|>?]|\.\.\./}; +!function(){function e(e,t){return Array.prototype.slice.call((t||document).querySelectorAll(e))}function t(e,t){return t=" "+t+" ",(" "+e.className+" ").replace(/[\n\t]/g," ").indexOf(t)>-1}function n(e,n,i){n="string"==typeof n?n:e.getAttribute("data-line");for(var o,l=n.replace(/\s+/g,"").split(","),a=+e.getAttribute("data-line-offset")||0,s=r()?parseInt:parseFloat,d=s(getComputedStyle(e).lineHeight),u=t(e,"line-numbers"),c=0;o=l[c++];){var p=o.split("-"),m=+p[0],f=+p[1]||m,h=e.querySelector('.line-highlight[data-range="'+o+'"]')||document.createElement("div");if(h.setAttribute("aria-hidden","true"),h.setAttribute("data-range",o),h.className=(i||"")+" line-highlight",u&&Prism.plugins.lineNumbers){var g=Prism.plugins.lineNumbers.getLine(e,m),y=Prism.plugins.lineNumbers.getLine(e,f);g&&(h.style.top=g.offsetTop+"px"),y&&(h.style.height=y.offsetTop-g.offsetTop+y.offsetHeight+"px")}else h.setAttribute("data-start",m),f>m&&h.setAttribute("data-end",f),h.style.top=(m-a-1)*d+"px",h.textContent=new Array(f-m+2).join(" \n");u?e.appendChild(h):(e.querySelector("code")||e).appendChild(h)}}function i(){var t=location.hash.slice(1);e(".temporary.line-highlight").forEach(function(e){e.parentNode.removeChild(e)});var i=(t.match(/\.([\d,-]+)$/)||[,""])[1];if(i&&!document.getElementById(t)){var r=t.slice(0,t.lastIndexOf(".")),o=document.getElementById(r);o&&(o.hasAttribute("data-line")||o.setAttribute("data-line",""),n(o,i,"temporary "),document.querySelector(".temporary.line-highlight").scrollIntoView())}}if("undefined"!=typeof self&&self.Prism&&self.document&&document.querySelector){var r=function(){var e;return function(){if("undefined"==typeof e){var t=document.createElement("div");t.style.fontSize="13px",t.style.lineHeight="1.5",t.style.padding=0,t.style.border=0,t.innerHTML=" 
       ",document.body.appendChild(t),e=38===t.offsetHeight,document.body.removeChild(t)}return e}}(),o=0;Prism.hooks.add("before-sanity-check",function(t){var n=t.element.parentNode,i=n&&n.getAttribute("data-line");if(n&&i&&/pre/i.test(n.nodeName)){var r=0;e(".line-highlight",n).forEach(function(e){r+=e.textContent.length,e.parentNode.removeChild(e)}),r&&/^( \n)+$/.test(t.code.slice(-r))&&(t.code=t.code.slice(0,-r))}}),Prism.hooks.add("complete",function l(e){var r=e.element.parentNode,a=r&&r.getAttribute("data-line");if(r&&a&&/pre/i.test(r.nodeName)){clearTimeout(o);var s=Prism.plugins.lineNumbers,d=e.plugins&&e.plugins.lineNumbers;t(r,"line-numbers")&&s&&!d?Prism.hooks.add("line-numbers",l):(n(r,a),o=setTimeout(i,1))}}),window.addEventListener("hashchange",i),window.addEventListener("resize",function(){var e=document.querySelectorAll("pre[data-line]");Array.prototype.forEach.call(e,function(e){n(e)})})}}(); +!function(){if("undefined"!=typeof self&&self.Prism&&self.document){var e="line-numbers",t=/\n(?!$)/g,n=function(e){var n=r(e),s=n["white-space"];if("pre-wrap"===s||"pre-line"===s){var l=e.querySelector("code"),i=e.querySelector(".line-numbers-rows"),a=e.querySelector(".line-numbers-sizer"),o=l.textContent.split(t);a||(a=document.createElement("span"),a.className="line-numbers-sizer",l.appendChild(a)),a.style.display="block",o.forEach(function(e,t){a.textContent=e||"\n";var n=a.getBoundingClientRect().height;i.children[t].style.height=n+"px"}),a.textContent="",a.style.display="none"}},r=function(e){return e?window.getComputedStyle?getComputedStyle(e):e.currentStyle||null:null};window.addEventListener("resize",function(){Array.prototype.forEach.call(document.querySelectorAll("pre."+e),n)}),Prism.hooks.add("complete",function(e){if(e.code){var r=e.element.parentNode,s=/\s*\bline-numbers\b\s*/;if(r&&/pre/i.test(r.nodeName)&&(s.test(r.className)||s.test(e.element.className))&&!e.element.querySelector(".line-numbers-rows")){s.test(e.element.className)&&(e.element.className=e.element.className.replace(s," ")),s.test(r.className)||(r.className+=" line-numbers");var l,i=e.code.match(t),a=i?i.length+1:1,o=new Array(a+1);o=o.join(""),l=document.createElement("span"),l.setAttribute("aria-hidden","true"),l.className="line-numbers-rows",l.innerHTML=o,r.hasAttribute("data-start")&&(r.style.counterReset="linenumber "+(parseInt(r.getAttribute("data-start"),10)-1)),e.element.appendChild(l),n(r),Prism.hooks.run("line-numbers",e)}}}),Prism.hooks.add("line-numbers",function(e){e.plugins=e.plugins||{},e.plugins.lineNumbers=!0}),Prism.plugins.lineNumbers={getLine:function(t,n){if("PRE"===t.tagName&&t.classList.contains(e)){var r=t.querySelector(".line-numbers-rows"),s=parseInt(t.getAttribute("data-start"),10)||1,l=s+(r.children.length-1);s>n&&(n=s),n>l&&(n=l);var i=n-s;return r.children[i]}}}}}(); +!function(){if("undefined"!=typeof self&&self.Prism&&self.document){var t=[],e={},n=function(){};Prism.plugins.toolbar={};var a=Prism.plugins.toolbar.registerButton=function(n,a){var o;o="function"==typeof a?a:function(t){var e;return"function"==typeof a.onClick?(e=document.createElement("button"),e.type="button",e.addEventListener("click",function(){a.onClick.call(this,t)})):"string"==typeof a.url?(e=document.createElement("a"),e.href=a.url):e=document.createElement("span"),e.textContent=a.text,e},t.push(e[n]=o)},o=Prism.plugins.toolbar.hook=function(a){var o=a.element.parentNode;if(o&&/pre/i.test(o.nodeName)&&!o.parentNode.classList.contains("code-toolbar")){var r=document.createElement("div");r.classList.add("code-toolbar"),o.parentNode.insertBefore(r,o),r.appendChild(o);var i=document.createElement("div");i.classList.add("toolbar"),document.body.hasAttribute("data-toolbar-order")&&(t=document.body.getAttribute("data-toolbar-order").split(",").map(function(t){return e[t]||n})),t.forEach(function(t){var e=t(a);if(e){var n=document.createElement("div");n.classList.add("toolbar-item"),n.appendChild(e),i.appendChild(n)}}),r.appendChild(i)}};a("label",function(t){var e=t.element.parentNode;if(e&&/pre/i.test(e.nodeName)&&e.hasAttribute("data-label")){var n,a,o=e.getAttribute("data-label");try{a=document.querySelector("template#"+o)}catch(r){}return a?n=a.content:(e.hasAttribute("data-url")?(n=document.createElement("a"),n.href=e.getAttribute("data-url")):n=document.createElement("span"),n.textContent=o),n}}),Prism.hooks.add("complete",o)}}(); +!function(){"undefined"!=typeof self&&!self.Prism||"undefined"!=typeof global&&!global.Prism||Prism.hooks.add("wrap",function(e){"keyword"===e.type&&e.classes.push("keyword-"+e.content)})}(); +!function(){if("undefined"!=typeof self&&self.Prism&&self.document){if(!Prism.plugins.toolbar)return console.warn("Show Languages plugin loaded before Toolbar plugin."),void 0;var e={html:"HTML",xml:"XML",svg:"SVG",mathml:"MathML",css:"CSS",clike:"C-like",javascript:"JavaScript",abap:"ABAP",actionscript:"ActionScript",apacheconf:"Apache Configuration",apl:"APL",applescript:"AppleScript",arff:"ARFF",asciidoc:"AsciiDoc",asm6502:"6502 Assembly",aspnet:"ASP.NET (C#)",autohotkey:"AutoHotkey",autoit:"AutoIt",shell:"Shell",basic:"BASIC",csharp:"C#",cpp:"C++",coffeescript:"CoffeeScript",csp:"Content-Security-Policy","css-extras":"CSS Extras",django:"Django/Jinja2",erb:"ERB",fsharp:"F#",gedcom:"GEDCOM",glsl:"GLSL",graphql:"GraphQL",http:"HTTP",hpkp:"HTTP Public-Key-Pins",hsts:"HTTP Strict-Transport-Security",ichigojam:"IchigoJam",inform7:"Inform 7",json:"JSON",jsonp:"JSONP",latex:"LaTeX",livescript:"LiveScript",lolcode:"LOLCODE","markup-templating":"Markup templating",matlab:"MATLAB",mel:"MEL",n4js:"N4JS",nasm:"NASM",nginx:"nginx",nsis:"NSIS",objectivec:"Objective-C",ocaml:"OCaml",opencl:"OpenCL",parigp:"PARI/GP",objectpascal:"Object Pascal",php:"PHP","php-extras":"PHP Extras",plsql:"PL/SQL",powershell:"PowerShell",properties:".properties",protobuf:"Protocol Buffers",q:"Q (kdb+ database)",jsx:"React JSX",tsx:"React TSX",renpy:"Ren'py",rest:"reST (reStructuredText)",sas:"SAS",sass:"Sass (Sass)",scss:"Sass (Scss)",sql:"SQL",soy:"Soy (Closure Template)",tap:"TAP",tt2:"Template Toolkit 2",typescript:"TypeScript",vbnet:"VB.Net",vhdl:"VHDL",vim:"vim","visual-basic":"Visual Basic",wasm:"WebAssembly",wiki:"Wiki markup",xeoracube:"XeoraCube",xojo:"Xojo (REALbasic)",xquery:"XQuery",yaml:"YAML"};Prism.plugins.toolbar.registerButton("show-language",function(a){var t=a.element.parentNode;if(t&&/pre/i.test(t.nodeName)){var s=t.getAttribute("data-language")||e[a.language]||a.language&&a.language.substring(0,1).toUpperCase()+a.language.substring(1);if(s){var i=document.createElement("span");return i.textContent=s,i}}})}}(); +!function(){if("undefined"!=typeof self&&self.Prism&&self.document){if(!Prism.plugins.toolbar)return console.warn("Copy to Clipboard plugin loaded before Toolbar plugin."),void 0;var o=window.ClipboardJS||void 0;o||"function"!=typeof require||(o=require("clipboard"));var e=[];if(!o){var t=document.createElement("script"),n=document.querySelector("head");t.onload=function(){if(o=window.ClipboardJS)for(;e.length;)e.pop()()},t.src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.0/clipboard.min.js",n.appendChild(t)}Prism.plugins.toolbar.registerButton("copy-to-clipboard",function(t){function n(){var e=new o(i,{text:function(){return t.code}});e.on("success",function(){i.textContent="Copied!",r()}),e.on("error",function(){i.textContent="Press Ctrl+C to copy",r()})}function r(){setTimeout(function(){i.textContent="Copy"},5e3)}var i=document.createElement("a");return i.textContent="Copy",o?n():e.push(n),i})}}(); diff --git a/tools/NKeditor/plugins/emoticons/emoticons.js b/tools/NKeditor/plugins/emoticons/emoticons.js new file mode 100644 index 00000000..a9900668 --- /dev/null +++ b/tools/NKeditor/plugins/emoticons/emoticons.js @@ -0,0 +1,129 @@ +/******************************************************************************* +* KindEditor - WYSIWYG HTML Editor for Internet +* Copyright (C) 2006-2011 kindsoft.net +* +* @author Roddy +* @site http://www.kindsoft.net/ +* @licence http://www.kindsoft.net/license.php +*******************************************************************************/ + +KindEditor.plugin('emoticons', function(K) { + var self = this, name = 'emoticons', + path = (self.emoticonsPath || self.pluginsPath + 'emoticons/images/'), + allowPreview = self.allowPreviewEmoticons === undefined ? true : self.allowPreviewEmoticons, + currentPageNum = 1; + self.clickToolbar(name, function() { + var rows = 5, cols = 9, total = 135, startNum = 0, + cells = rows * cols, pages = Math.ceil(total / cells), + colsHalf = Math.floor(cols / 2), + wrapperDiv = K('
      '), + elements = [], + menu = self.createMenu({ + name : name, + beforeRemove : function() { + removeEvent(); + } + }); + menu.div.append(wrapperDiv); + var previewDiv, previewImg; + if (allowPreview) { + previewDiv = K('
      ').css('right', 0); + previewImg = K(''); + wrapperDiv.append(previewDiv); + previewDiv.append(previewImg); + } + function bindCellEvent(cell, j, num) { + if (previewDiv) { + cell.mouseover(function() { + if (j > colsHalf) { + previewDiv.css('left', 0); + previewDiv.css('right', ''); + } else { + previewDiv.css('left', ''); + previewDiv.css('right', 0); + } + previewImg.attr('src', path + num + '.gif'); + K(this).addClass('ke-on'); + }); + } else { + cell.mouseover(function() { + K(this).addClass('ke-on'); + }); + } + cell.mouseout(function() { + K(this).removeClass('ke-on'); + }); + cell.click(function(e) { + self.insertHtml('').hideMenu().focus(); + e.stop(); + }); + } + function createEmoticonsTable(pageNum, parentDiv) { + var table = document.createElement('table'); + parentDiv.append(table); + if (previewDiv) { + K(table).mouseover(function() { + previewDiv.show('block'); + }); + K(table).mouseout(function() { + previewDiv.hide(); + }); + elements.push(K(table)); + } + table.className = 'ke-table'; + table.cellPadding = 0; + table.cellSpacing = 0; + table.border = 0; + var num = (pageNum - 1) * cells + startNum; + for (var i = 0; i < rows; i++) { + var row = table.insertRow(i); + for (var j = 0; j < cols; j++) { + var cell = K(row.insertCell(j)); + cell.addClass('ke-cell'); + bindCellEvent(cell, j, num); + var span = K('') + .css('background-position', '-' + (24 * num) + 'px 0px') + .css('background-image', 'url(' + path + 'static.gif)'); + cell.append(span); + elements.push(cell); + num++; + } + } + return table; + } + var table = createEmoticonsTable(currentPageNum, wrapperDiv); + function removeEvent() { + K.each(elements, function() { + this.unbind(); + }); + } + var pageDiv; + function bindPageEvent(el, pageNum) { + el.click(function(e) { + removeEvent(); + table.parentNode.removeChild(table); + pageDiv.remove(); + table = createEmoticonsTable(pageNum, wrapperDiv); + createPageTable(pageNum); + currentPageNum = pageNum; + e.stop(); + }); + } + function createPageTable(currentPageNum) { + pageDiv = K('
      '); + wrapperDiv.append(pageDiv); + for (var pageNum = 1; pageNum <= pages; pageNum++) { + if (currentPageNum !== pageNum) { + var a = K('[' + pageNum + ']'); + bindPageEvent(a, pageNum); + pageDiv.append(a); + elements.push(a); + } else { + pageDiv.append(K('@[' + pageNum + ']')); + } + pageDiv.append(K('@ ')); + } + } + createPageTable(currentPageNum); + }); +}); diff --git a/tools/NKeditor/plugins/emoticons/images/0.gif b/tools/NKeditor/plugins/emoticons/images/0.gif new file mode 100644 index 00000000..5be27cb0 Binary files /dev/null and b/tools/NKeditor/plugins/emoticons/images/0.gif differ diff --git a/tools/NKeditor/plugins/emoticons/images/1.gif b/tools/NKeditor/plugins/emoticons/images/1.gif new file mode 100644 index 00000000..a2644a9e Binary files /dev/null and b/tools/NKeditor/plugins/emoticons/images/1.gif differ diff --git a/tools/NKeditor/plugins/emoticons/images/10.gif b/tools/NKeditor/plugins/emoticons/images/10.gif new file mode 100644 index 00000000..905c15be Binary files /dev/null and b/tools/NKeditor/plugins/emoticons/images/10.gif differ diff --git a/tools/NKeditor/plugins/emoticons/images/100.gif b/tools/NKeditor/plugins/emoticons/images/100.gif new file mode 100644 index 00000000..92ad35d2 Binary files /dev/null and b/tools/NKeditor/plugins/emoticons/images/100.gif differ diff --git a/tools/NKeditor/plugins/emoticons/images/101.gif b/tools/NKeditor/plugins/emoticons/images/101.gif new file mode 100644 index 00000000..1f27663a Binary files /dev/null and b/tools/NKeditor/plugins/emoticons/images/101.gif differ diff --git a/tools/NKeditor/plugins/emoticons/images/102.gif b/tools/NKeditor/plugins/emoticons/images/102.gif new file mode 100644 index 00000000..748ded1a Binary files /dev/null and b/tools/NKeditor/plugins/emoticons/images/102.gif differ diff --git a/tools/NKeditor/plugins/emoticons/images/103.gif b/tools/NKeditor/plugins/emoticons/images/103.gif new file mode 100644 index 00000000..be9eaa05 Binary files /dev/null and b/tools/NKeditor/plugins/emoticons/images/103.gif differ diff --git a/tools/NKeditor/plugins/emoticons/images/104.gif b/tools/NKeditor/plugins/emoticons/images/104.gif new file mode 100644 index 00000000..d7c20663 Binary files /dev/null and b/tools/NKeditor/plugins/emoticons/images/104.gif differ diff --git a/tools/NKeditor/plugins/emoticons/images/105.gif b/tools/NKeditor/plugins/emoticons/images/105.gif new file mode 100644 index 00000000..2f353cad Binary files /dev/null and b/tools/NKeditor/plugins/emoticons/images/105.gif differ diff --git a/tools/NKeditor/plugins/emoticons/images/106.gif b/tools/NKeditor/plugins/emoticons/images/106.gif new file mode 100644 index 00000000..51935349 Binary files /dev/null and b/tools/NKeditor/plugins/emoticons/images/106.gif differ diff --git a/tools/NKeditor/plugins/emoticons/images/107.gif b/tools/NKeditor/plugins/emoticons/images/107.gif new file mode 100644 index 00000000..70d38d3b Binary files /dev/null and b/tools/NKeditor/plugins/emoticons/images/107.gif differ diff --git a/tools/NKeditor/plugins/emoticons/images/108.gif b/tools/NKeditor/plugins/emoticons/images/108.gif new file mode 100644 index 00000000..749d5008 Binary files /dev/null and b/tools/NKeditor/plugins/emoticons/images/108.gif differ diff --git a/tools/NKeditor/plugins/emoticons/images/109.gif b/tools/NKeditor/plugins/emoticons/images/109.gif new file mode 100644 index 00000000..6f57d564 Binary files /dev/null and b/tools/NKeditor/plugins/emoticons/images/109.gif differ diff --git a/tools/NKeditor/plugins/emoticons/images/11.gif b/tools/NKeditor/plugins/emoticons/images/11.gif new file mode 100644 index 00000000..b512dd5d Binary files /dev/null and b/tools/NKeditor/plugins/emoticons/images/11.gif differ diff --git a/tools/NKeditor/plugins/emoticons/images/110.gif b/tools/NKeditor/plugins/emoticons/images/110.gif new file mode 100644 index 00000000..e253abcf Binary files /dev/null and b/tools/NKeditor/plugins/emoticons/images/110.gif differ diff --git a/tools/NKeditor/plugins/emoticons/images/111.gif b/tools/NKeditor/plugins/emoticons/images/111.gif new file mode 100644 index 00000000..0c567233 Binary files /dev/null and b/tools/NKeditor/plugins/emoticons/images/111.gif differ diff --git a/tools/NKeditor/plugins/emoticons/images/112.gif b/tools/NKeditor/plugins/emoticons/images/112.gif new file mode 100644 index 00000000..c8ddce88 Binary files /dev/null and b/tools/NKeditor/plugins/emoticons/images/112.gif differ diff --git a/tools/NKeditor/plugins/emoticons/images/113.gif b/tools/NKeditor/plugins/emoticons/images/113.gif new file mode 100644 index 00000000..27271045 Binary files /dev/null and b/tools/NKeditor/plugins/emoticons/images/113.gif differ diff --git a/tools/NKeditor/plugins/emoticons/images/114.gif b/tools/NKeditor/plugins/emoticons/images/114.gif new file mode 100644 index 00000000..53918e2a Binary files /dev/null and b/tools/NKeditor/plugins/emoticons/images/114.gif differ diff --git a/tools/NKeditor/plugins/emoticons/images/115.gif b/tools/NKeditor/plugins/emoticons/images/115.gif new file mode 100644 index 00000000..4db33697 Binary files /dev/null and b/tools/NKeditor/plugins/emoticons/images/115.gif differ diff --git a/tools/NKeditor/plugins/emoticons/images/116.gif b/tools/NKeditor/plugins/emoticons/images/116.gif new file mode 100644 index 00000000..57326bd2 Binary files /dev/null and b/tools/NKeditor/plugins/emoticons/images/116.gif differ diff --git a/tools/NKeditor/plugins/emoticons/images/117.gif b/tools/NKeditor/plugins/emoticons/images/117.gif new file mode 100644 index 00000000..14611b6e Binary files /dev/null and b/tools/NKeditor/plugins/emoticons/images/117.gif differ diff --git a/tools/NKeditor/plugins/emoticons/images/118.gif b/tools/NKeditor/plugins/emoticons/images/118.gif new file mode 100644 index 00000000..8c255004 Binary files /dev/null and b/tools/NKeditor/plugins/emoticons/images/118.gif differ diff --git a/tools/NKeditor/plugins/emoticons/images/119.gif b/tools/NKeditor/plugins/emoticons/images/119.gif new file mode 100644 index 00000000..65bb468b Binary files /dev/null and b/tools/NKeditor/plugins/emoticons/images/119.gif differ diff --git a/tools/NKeditor/plugins/emoticons/images/12.gif b/tools/NKeditor/plugins/emoticons/images/12.gif new file mode 100644 index 00000000..547529ca Binary files /dev/null and b/tools/NKeditor/plugins/emoticons/images/12.gif differ diff --git a/tools/NKeditor/plugins/emoticons/images/120.gif b/tools/NKeditor/plugins/emoticons/images/120.gif new file mode 100644 index 00000000..5ce77c05 Binary files /dev/null and b/tools/NKeditor/plugins/emoticons/images/120.gif differ diff --git a/tools/NKeditor/plugins/emoticons/images/121.gif b/tools/NKeditor/plugins/emoticons/images/121.gif new file mode 100644 index 00000000..a021abaa Binary files /dev/null and b/tools/NKeditor/plugins/emoticons/images/121.gif differ diff --git a/tools/NKeditor/plugins/emoticons/images/122.gif b/tools/NKeditor/plugins/emoticons/images/122.gif new file mode 100644 index 00000000..9a79e111 Binary files /dev/null and b/tools/NKeditor/plugins/emoticons/images/122.gif differ diff --git a/tools/NKeditor/plugins/emoticons/images/123.gif b/tools/NKeditor/plugins/emoticons/images/123.gif new file mode 100644 index 00000000..b9480be2 Binary files /dev/null and b/tools/NKeditor/plugins/emoticons/images/123.gif differ diff --git a/tools/NKeditor/plugins/emoticons/images/124.gif b/tools/NKeditor/plugins/emoticons/images/124.gif new file mode 100644 index 00000000..7fed4772 Binary files /dev/null and b/tools/NKeditor/plugins/emoticons/images/124.gif differ diff --git a/tools/NKeditor/plugins/emoticons/images/125.gif b/tools/NKeditor/plugins/emoticons/images/125.gif new file mode 100644 index 00000000..e2c3c11c Binary files /dev/null and b/tools/NKeditor/plugins/emoticons/images/125.gif differ diff --git a/tools/NKeditor/plugins/emoticons/images/126.gif b/tools/NKeditor/plugins/emoticons/images/126.gif new file mode 100644 index 00000000..24105c98 Binary files /dev/null and b/tools/NKeditor/plugins/emoticons/images/126.gif differ diff --git a/tools/NKeditor/plugins/emoticons/images/127.gif b/tools/NKeditor/plugins/emoticons/images/127.gif new file mode 100644 index 00000000..0cead364 Binary files /dev/null and b/tools/NKeditor/plugins/emoticons/images/127.gif differ diff --git a/tools/NKeditor/plugins/emoticons/images/128.gif b/tools/NKeditor/plugins/emoticons/images/128.gif new file mode 100644 index 00000000..31858618 Binary files /dev/null and b/tools/NKeditor/plugins/emoticons/images/128.gif differ diff --git a/tools/NKeditor/plugins/emoticons/images/129.gif b/tools/NKeditor/plugins/emoticons/images/129.gif new file mode 100644 index 00000000..ffd7c6ba Binary files /dev/null and b/tools/NKeditor/plugins/emoticons/images/129.gif differ diff --git a/tools/NKeditor/plugins/emoticons/images/13.gif b/tools/NKeditor/plugins/emoticons/images/13.gif new file mode 100644 index 00000000..34753001 Binary files /dev/null and b/tools/NKeditor/plugins/emoticons/images/13.gif differ diff --git a/tools/NKeditor/plugins/emoticons/images/130.gif b/tools/NKeditor/plugins/emoticons/images/130.gif new file mode 100644 index 00000000..d828e3da Binary files /dev/null and b/tools/NKeditor/plugins/emoticons/images/130.gif differ diff --git a/tools/NKeditor/plugins/emoticons/images/131.gif b/tools/NKeditor/plugins/emoticons/images/131.gif new file mode 100644 index 00000000..dcb096f0 Binary files /dev/null and b/tools/NKeditor/plugins/emoticons/images/131.gif differ diff --git a/tools/NKeditor/plugins/emoticons/images/132.gif b/tools/NKeditor/plugins/emoticons/images/132.gif new file mode 100644 index 00000000..1b272a69 Binary files /dev/null and b/tools/NKeditor/plugins/emoticons/images/132.gif differ diff --git a/tools/NKeditor/plugins/emoticons/images/133.gif b/tools/NKeditor/plugins/emoticons/images/133.gif new file mode 100644 index 00000000..0d0e8642 Binary files /dev/null and b/tools/NKeditor/plugins/emoticons/images/133.gif differ diff --git a/tools/NKeditor/plugins/emoticons/images/134.gif b/tools/NKeditor/plugins/emoticons/images/134.gif new file mode 100644 index 00000000..cf48356e Binary files /dev/null and b/tools/NKeditor/plugins/emoticons/images/134.gif differ diff --git a/tools/NKeditor/plugins/emoticons/images/14.gif b/tools/NKeditor/plugins/emoticons/images/14.gif new file mode 100644 index 00000000..6a788f8b Binary files /dev/null and b/tools/NKeditor/plugins/emoticons/images/14.gif differ diff --git a/tools/NKeditor/plugins/emoticons/images/15.gif b/tools/NKeditor/plugins/emoticons/images/15.gif new file mode 100644 index 00000000..debab8ed Binary files /dev/null and b/tools/NKeditor/plugins/emoticons/images/15.gif differ diff --git a/tools/NKeditor/plugins/emoticons/images/16.gif b/tools/NKeditor/plugins/emoticons/images/16.gif new file mode 100644 index 00000000..ed5d29f4 Binary files /dev/null and b/tools/NKeditor/plugins/emoticons/images/16.gif differ diff --git a/tools/NKeditor/plugins/emoticons/images/17.gif b/tools/NKeditor/plugins/emoticons/images/17.gif new file mode 100644 index 00000000..85886fef Binary files /dev/null and b/tools/NKeditor/plugins/emoticons/images/17.gif differ diff --git a/tools/NKeditor/plugins/emoticons/images/18.gif b/tools/NKeditor/plugins/emoticons/images/18.gif new file mode 100644 index 00000000..b6af2189 Binary files /dev/null and b/tools/NKeditor/plugins/emoticons/images/18.gif differ diff --git a/tools/NKeditor/plugins/emoticons/images/19.gif b/tools/NKeditor/plugins/emoticons/images/19.gif new file mode 100644 index 00000000..e045ff2a Binary files /dev/null and b/tools/NKeditor/plugins/emoticons/images/19.gif differ diff --git a/tools/NKeditor/plugins/emoticons/images/2.gif b/tools/NKeditor/plugins/emoticons/images/2.gif new file mode 100644 index 00000000..40cfda43 Binary files /dev/null and b/tools/NKeditor/plugins/emoticons/images/2.gif differ diff --git a/tools/NKeditor/plugins/emoticons/images/20.gif b/tools/NKeditor/plugins/emoticons/images/20.gif new file mode 100644 index 00000000..efd650f5 Binary files /dev/null and b/tools/NKeditor/plugins/emoticons/images/20.gif differ diff --git a/tools/NKeditor/plugins/emoticons/images/21.gif b/tools/NKeditor/plugins/emoticons/images/21.gif new file mode 100644 index 00000000..cb8cf6d2 Binary files /dev/null and b/tools/NKeditor/plugins/emoticons/images/21.gif differ diff --git a/tools/NKeditor/plugins/emoticons/images/22.gif b/tools/NKeditor/plugins/emoticons/images/22.gif new file mode 100644 index 00000000..96b04df8 Binary files /dev/null and b/tools/NKeditor/plugins/emoticons/images/22.gif differ diff --git a/tools/NKeditor/plugins/emoticons/images/23.gif b/tools/NKeditor/plugins/emoticons/images/23.gif new file mode 100644 index 00000000..96516b8d Binary files /dev/null and b/tools/NKeditor/plugins/emoticons/images/23.gif differ diff --git a/tools/NKeditor/plugins/emoticons/images/24.gif b/tools/NKeditor/plugins/emoticons/images/24.gif new file mode 100644 index 00000000..5f925c7b Binary files /dev/null and b/tools/NKeditor/plugins/emoticons/images/24.gif differ diff --git a/tools/NKeditor/plugins/emoticons/images/25.gif b/tools/NKeditor/plugins/emoticons/images/25.gif new file mode 100644 index 00000000..97f8b1af Binary files /dev/null and b/tools/NKeditor/plugins/emoticons/images/25.gif differ diff --git a/tools/NKeditor/plugins/emoticons/images/26.gif b/tools/NKeditor/plugins/emoticons/images/26.gif new file mode 100644 index 00000000..a7cded73 Binary files /dev/null and b/tools/NKeditor/plugins/emoticons/images/26.gif differ diff --git a/tools/NKeditor/plugins/emoticons/images/27.gif b/tools/NKeditor/plugins/emoticons/images/27.gif new file mode 100644 index 00000000..bb468901 Binary files /dev/null and b/tools/NKeditor/plugins/emoticons/images/27.gif differ diff --git a/tools/NKeditor/plugins/emoticons/images/28.gif b/tools/NKeditor/plugins/emoticons/images/28.gif new file mode 100644 index 00000000..f59dd582 Binary files /dev/null and b/tools/NKeditor/plugins/emoticons/images/28.gif differ diff --git a/tools/NKeditor/plugins/emoticons/images/29.gif b/tools/NKeditor/plugins/emoticons/images/29.gif new file mode 100644 index 00000000..3c5227e8 Binary files /dev/null and b/tools/NKeditor/plugins/emoticons/images/29.gif differ diff --git a/tools/NKeditor/plugins/emoticons/images/3.gif b/tools/NKeditor/plugins/emoticons/images/3.gif new file mode 100644 index 00000000..6d6f7629 Binary files /dev/null and b/tools/NKeditor/plugins/emoticons/images/3.gif differ diff --git a/tools/NKeditor/plugins/emoticons/images/30.gif b/tools/NKeditor/plugins/emoticons/images/30.gif new file mode 100644 index 00000000..e24a1801 Binary files /dev/null and b/tools/NKeditor/plugins/emoticons/images/30.gif differ diff --git a/tools/NKeditor/plugins/emoticons/images/31.gif b/tools/NKeditor/plugins/emoticons/images/31.gif new file mode 100644 index 00000000..073e743c Binary files /dev/null and b/tools/NKeditor/plugins/emoticons/images/31.gif differ diff --git a/tools/NKeditor/plugins/emoticons/images/32.gif b/tools/NKeditor/plugins/emoticons/images/32.gif new file mode 100644 index 00000000..772eff23 Binary files /dev/null and b/tools/NKeditor/plugins/emoticons/images/32.gif differ diff --git a/tools/NKeditor/plugins/emoticons/images/33.gif b/tools/NKeditor/plugins/emoticons/images/33.gif new file mode 100644 index 00000000..217c1c58 Binary files /dev/null and b/tools/NKeditor/plugins/emoticons/images/33.gif differ diff --git a/tools/NKeditor/plugins/emoticons/images/34.gif b/tools/NKeditor/plugins/emoticons/images/34.gif new file mode 100644 index 00000000..e9d42131 Binary files /dev/null and b/tools/NKeditor/plugins/emoticons/images/34.gif differ diff --git a/tools/NKeditor/plugins/emoticons/images/35.gif b/tools/NKeditor/plugins/emoticons/images/35.gif new file mode 100644 index 00000000..d6da2c33 Binary files /dev/null and b/tools/NKeditor/plugins/emoticons/images/35.gif differ diff --git a/tools/NKeditor/plugins/emoticons/images/36.gif b/tools/NKeditor/plugins/emoticons/images/36.gif new file mode 100644 index 00000000..c1e6ac91 Binary files /dev/null and b/tools/NKeditor/plugins/emoticons/images/36.gif differ diff --git a/tools/NKeditor/plugins/emoticons/images/37.gif b/tools/NKeditor/plugins/emoticons/images/37.gif new file mode 100644 index 00000000..92efec6a Binary files /dev/null and b/tools/NKeditor/plugins/emoticons/images/37.gif differ diff --git a/tools/NKeditor/plugins/emoticons/images/38.gif b/tools/NKeditor/plugins/emoticons/images/38.gif new file mode 100644 index 00000000..489f0f94 Binary files /dev/null and b/tools/NKeditor/plugins/emoticons/images/38.gif differ diff --git a/tools/NKeditor/plugins/emoticons/images/39.gif b/tools/NKeditor/plugins/emoticons/images/39.gif new file mode 100644 index 00000000..734f6d82 Binary files /dev/null and b/tools/NKeditor/plugins/emoticons/images/39.gif differ diff --git a/tools/NKeditor/plugins/emoticons/images/4.gif b/tools/NKeditor/plugins/emoticons/images/4.gif new file mode 100644 index 00000000..6ccdaa2c Binary files /dev/null and b/tools/NKeditor/plugins/emoticons/images/4.gif differ diff --git a/tools/NKeditor/plugins/emoticons/images/40.gif b/tools/NKeditor/plugins/emoticons/images/40.gif new file mode 100644 index 00000000..24a8eb69 Binary files /dev/null and b/tools/NKeditor/plugins/emoticons/images/40.gif differ diff --git a/tools/NKeditor/plugins/emoticons/images/41.gif b/tools/NKeditor/plugins/emoticons/images/41.gif new file mode 100644 index 00000000..99139e1d Binary files /dev/null and b/tools/NKeditor/plugins/emoticons/images/41.gif differ diff --git a/tools/NKeditor/plugins/emoticons/images/42.gif b/tools/NKeditor/plugins/emoticons/images/42.gif new file mode 100644 index 00000000..f60897e4 Binary files /dev/null and b/tools/NKeditor/plugins/emoticons/images/42.gif differ diff --git a/tools/NKeditor/plugins/emoticons/images/43.gif b/tools/NKeditor/plugins/emoticons/images/43.gif new file mode 100644 index 00000000..43504910 Binary files /dev/null and b/tools/NKeditor/plugins/emoticons/images/43.gif differ diff --git a/tools/NKeditor/plugins/emoticons/images/44.gif b/tools/NKeditor/plugins/emoticons/images/44.gif new file mode 100644 index 00000000..650d3dd8 Binary files /dev/null and b/tools/NKeditor/plugins/emoticons/images/44.gif differ diff --git a/tools/NKeditor/plugins/emoticons/images/45.gif b/tools/NKeditor/plugins/emoticons/images/45.gif new file mode 100644 index 00000000..5c8e0718 Binary files /dev/null and b/tools/NKeditor/plugins/emoticons/images/45.gif differ diff --git a/tools/NKeditor/plugins/emoticons/images/46.gif b/tools/NKeditor/plugins/emoticons/images/46.gif new file mode 100644 index 00000000..f3cb0742 Binary files /dev/null and b/tools/NKeditor/plugins/emoticons/images/46.gif differ diff --git a/tools/NKeditor/plugins/emoticons/images/47.gif b/tools/NKeditor/plugins/emoticons/images/47.gif new file mode 100644 index 00000000..5b3057ab Binary files /dev/null and b/tools/NKeditor/plugins/emoticons/images/47.gif differ diff --git a/tools/NKeditor/plugins/emoticons/images/48.gif b/tools/NKeditor/plugins/emoticons/images/48.gif new file mode 100644 index 00000000..27a30c15 Binary files /dev/null and b/tools/NKeditor/plugins/emoticons/images/48.gif differ diff --git a/tools/NKeditor/plugins/emoticons/images/49.gif b/tools/NKeditor/plugins/emoticons/images/49.gif new file mode 100644 index 00000000..dcfa48af Binary files /dev/null and b/tools/NKeditor/plugins/emoticons/images/49.gif differ diff --git a/tools/NKeditor/plugins/emoticons/images/5.gif b/tools/NKeditor/plugins/emoticons/images/5.gif new file mode 100644 index 00000000..ab0b81ba Binary files /dev/null and b/tools/NKeditor/plugins/emoticons/images/5.gif differ diff --git a/tools/NKeditor/plugins/emoticons/images/50.gif b/tools/NKeditor/plugins/emoticons/images/50.gif new file mode 100644 index 00000000..029cf0fe Binary files /dev/null and b/tools/NKeditor/plugins/emoticons/images/50.gif differ diff --git a/tools/NKeditor/plugins/emoticons/images/51.gif b/tools/NKeditor/plugins/emoticons/images/51.gif new file mode 100644 index 00000000..69f183f0 Binary files /dev/null and b/tools/NKeditor/plugins/emoticons/images/51.gif differ diff --git a/tools/NKeditor/plugins/emoticons/images/52.gif b/tools/NKeditor/plugins/emoticons/images/52.gif new file mode 100644 index 00000000..d41e8aab Binary files /dev/null and b/tools/NKeditor/plugins/emoticons/images/52.gif differ diff --git a/tools/NKeditor/plugins/emoticons/images/53.gif b/tools/NKeditor/plugins/emoticons/images/53.gif new file mode 100644 index 00000000..56352dde Binary files /dev/null and b/tools/NKeditor/plugins/emoticons/images/53.gif differ diff --git a/tools/NKeditor/plugins/emoticons/images/54.gif b/tools/NKeditor/plugins/emoticons/images/54.gif new file mode 100644 index 00000000..b28d8481 Binary files /dev/null and b/tools/NKeditor/plugins/emoticons/images/54.gif differ diff --git a/tools/NKeditor/plugins/emoticons/images/55.gif b/tools/NKeditor/plugins/emoticons/images/55.gif new file mode 100644 index 00000000..e18da84c Binary files /dev/null and b/tools/NKeditor/plugins/emoticons/images/55.gif differ diff --git a/tools/NKeditor/plugins/emoticons/images/56.gif b/tools/NKeditor/plugins/emoticons/images/56.gif new file mode 100644 index 00000000..edf96f0a Binary files /dev/null and b/tools/NKeditor/plugins/emoticons/images/56.gif differ diff --git a/tools/NKeditor/plugins/emoticons/images/57.gif b/tools/NKeditor/plugins/emoticons/images/57.gif new file mode 100644 index 00000000..3f0e2b9a Binary files /dev/null and b/tools/NKeditor/plugins/emoticons/images/57.gif differ diff --git a/tools/NKeditor/plugins/emoticons/images/58.gif b/tools/NKeditor/plugins/emoticons/images/58.gif new file mode 100644 index 00000000..47b1aaa3 Binary files /dev/null and b/tools/NKeditor/plugins/emoticons/images/58.gif differ diff --git a/tools/NKeditor/plugins/emoticons/images/59.gif b/tools/NKeditor/plugins/emoticons/images/59.gif new file mode 100644 index 00000000..918288b0 Binary files /dev/null and b/tools/NKeditor/plugins/emoticons/images/59.gif differ diff --git a/tools/NKeditor/plugins/emoticons/images/6.gif b/tools/NKeditor/plugins/emoticons/images/6.gif new file mode 100644 index 00000000..ceab1224 Binary files /dev/null and b/tools/NKeditor/plugins/emoticons/images/6.gif differ diff --git a/tools/NKeditor/plugins/emoticons/images/60.gif b/tools/NKeditor/plugins/emoticons/images/60.gif new file mode 100644 index 00000000..66d21136 Binary files /dev/null and b/tools/NKeditor/plugins/emoticons/images/60.gif differ diff --git a/tools/NKeditor/plugins/emoticons/images/61.gif b/tools/NKeditor/plugins/emoticons/images/61.gif new file mode 100644 index 00000000..034933ec Binary files /dev/null and b/tools/NKeditor/plugins/emoticons/images/61.gif differ diff --git a/tools/NKeditor/plugins/emoticons/images/62.gif b/tools/NKeditor/plugins/emoticons/images/62.gif new file mode 100644 index 00000000..8d5c4fd3 Binary files /dev/null and b/tools/NKeditor/plugins/emoticons/images/62.gif differ diff --git a/tools/NKeditor/plugins/emoticons/images/63.gif b/tools/NKeditor/plugins/emoticons/images/63.gif new file mode 100644 index 00000000..d58fcf67 Binary files /dev/null and b/tools/NKeditor/plugins/emoticons/images/63.gif differ diff --git a/tools/NKeditor/plugins/emoticons/images/64.gif b/tools/NKeditor/plugins/emoticons/images/64.gif new file mode 100644 index 00000000..c4e00bdf Binary files /dev/null and b/tools/NKeditor/plugins/emoticons/images/64.gif differ diff --git a/tools/NKeditor/plugins/emoticons/images/65.gif b/tools/NKeditor/plugins/emoticons/images/65.gif new file mode 100644 index 00000000..da23bfaa Binary files /dev/null and b/tools/NKeditor/plugins/emoticons/images/65.gif differ diff --git a/tools/NKeditor/plugins/emoticons/images/66.gif b/tools/NKeditor/plugins/emoticons/images/66.gif new file mode 100644 index 00000000..310ec65f Binary files /dev/null and b/tools/NKeditor/plugins/emoticons/images/66.gif differ diff --git a/tools/NKeditor/plugins/emoticons/images/67.gif b/tools/NKeditor/plugins/emoticons/images/67.gif new file mode 100644 index 00000000..51761ba4 Binary files /dev/null and b/tools/NKeditor/plugins/emoticons/images/67.gif differ diff --git a/tools/NKeditor/plugins/emoticons/images/68.gif b/tools/NKeditor/plugins/emoticons/images/68.gif new file mode 100644 index 00000000..345cb439 Binary files /dev/null and b/tools/NKeditor/plugins/emoticons/images/68.gif differ diff --git a/tools/NKeditor/plugins/emoticons/images/69.gif b/tools/NKeditor/plugins/emoticons/images/69.gif new file mode 100644 index 00000000..e0f28a07 Binary files /dev/null and b/tools/NKeditor/plugins/emoticons/images/69.gif differ diff --git a/tools/NKeditor/plugins/emoticons/images/7.gif b/tools/NKeditor/plugins/emoticons/images/7.gif new file mode 100644 index 00000000..2f453999 Binary files /dev/null and b/tools/NKeditor/plugins/emoticons/images/7.gif differ diff --git a/tools/NKeditor/plugins/emoticons/images/70.gif b/tools/NKeditor/plugins/emoticons/images/70.gif new file mode 100644 index 00000000..24284cf3 Binary files /dev/null and b/tools/NKeditor/plugins/emoticons/images/70.gif differ diff --git a/tools/NKeditor/plugins/emoticons/images/71.gif b/tools/NKeditor/plugins/emoticons/images/71.gif new file mode 100644 index 00000000..a0ccf2ed Binary files /dev/null and b/tools/NKeditor/plugins/emoticons/images/71.gif differ diff --git a/tools/NKeditor/plugins/emoticons/images/72.gif b/tools/NKeditor/plugins/emoticons/images/72.gif new file mode 100644 index 00000000..7e113eea Binary files /dev/null and b/tools/NKeditor/plugins/emoticons/images/72.gif differ diff --git a/tools/NKeditor/plugins/emoticons/images/73.gif b/tools/NKeditor/plugins/emoticons/images/73.gif new file mode 100644 index 00000000..c0293c3a Binary files /dev/null and b/tools/NKeditor/plugins/emoticons/images/73.gif differ diff --git a/tools/NKeditor/plugins/emoticons/images/74.gif b/tools/NKeditor/plugins/emoticons/images/74.gif new file mode 100644 index 00000000..1c52bde9 Binary files /dev/null and b/tools/NKeditor/plugins/emoticons/images/74.gif differ diff --git a/tools/NKeditor/plugins/emoticons/images/75.gif b/tools/NKeditor/plugins/emoticons/images/75.gif new file mode 100644 index 00000000..9cb9aa79 Binary files /dev/null and b/tools/NKeditor/plugins/emoticons/images/75.gif differ diff --git a/tools/NKeditor/plugins/emoticons/images/76.gif b/tools/NKeditor/plugins/emoticons/images/76.gif new file mode 100644 index 00000000..27019f8f Binary files /dev/null and b/tools/NKeditor/plugins/emoticons/images/76.gif differ diff --git a/tools/NKeditor/plugins/emoticons/images/77.gif b/tools/NKeditor/plugins/emoticons/images/77.gif new file mode 100644 index 00000000..8f882f53 Binary files /dev/null and b/tools/NKeditor/plugins/emoticons/images/77.gif differ diff --git a/tools/NKeditor/plugins/emoticons/images/78.gif b/tools/NKeditor/plugins/emoticons/images/78.gif new file mode 100644 index 00000000..d0d08560 Binary files /dev/null and b/tools/NKeditor/plugins/emoticons/images/78.gif differ diff --git a/tools/NKeditor/plugins/emoticons/images/79.gif b/tools/NKeditor/plugins/emoticons/images/79.gif new file mode 100644 index 00000000..61652a71 Binary files /dev/null and b/tools/NKeditor/plugins/emoticons/images/79.gif differ diff --git a/tools/NKeditor/plugins/emoticons/images/8.gif b/tools/NKeditor/plugins/emoticons/images/8.gif new file mode 100644 index 00000000..f6c88344 Binary files /dev/null and b/tools/NKeditor/plugins/emoticons/images/8.gif differ diff --git a/tools/NKeditor/plugins/emoticons/images/80.gif b/tools/NKeditor/plugins/emoticons/images/80.gif new file mode 100644 index 00000000..9a779364 Binary files /dev/null and b/tools/NKeditor/plugins/emoticons/images/80.gif differ diff --git a/tools/NKeditor/plugins/emoticons/images/81.gif b/tools/NKeditor/plugins/emoticons/images/81.gif new file mode 100644 index 00000000..2329101a Binary files /dev/null and b/tools/NKeditor/plugins/emoticons/images/81.gif differ diff --git a/tools/NKeditor/plugins/emoticons/images/82.gif b/tools/NKeditor/plugins/emoticons/images/82.gif new file mode 100644 index 00000000..644748a9 Binary files /dev/null and b/tools/NKeditor/plugins/emoticons/images/82.gif differ diff --git a/tools/NKeditor/plugins/emoticons/images/83.gif b/tools/NKeditor/plugins/emoticons/images/83.gif new file mode 100644 index 00000000..fbf275ba Binary files /dev/null and b/tools/NKeditor/plugins/emoticons/images/83.gif differ diff --git a/tools/NKeditor/plugins/emoticons/images/84.gif b/tools/NKeditor/plugins/emoticons/images/84.gif new file mode 100644 index 00000000..076f0c65 Binary files /dev/null and b/tools/NKeditor/plugins/emoticons/images/84.gif differ diff --git a/tools/NKeditor/plugins/emoticons/images/85.gif b/tools/NKeditor/plugins/emoticons/images/85.gif new file mode 100644 index 00000000..d254af44 Binary files /dev/null and b/tools/NKeditor/plugins/emoticons/images/85.gif differ diff --git a/tools/NKeditor/plugins/emoticons/images/86.gif b/tools/NKeditor/plugins/emoticons/images/86.gif new file mode 100644 index 00000000..8f09d336 Binary files /dev/null and b/tools/NKeditor/plugins/emoticons/images/86.gif differ diff --git a/tools/NKeditor/plugins/emoticons/images/87.gif b/tools/NKeditor/plugins/emoticons/images/87.gif new file mode 100644 index 00000000..df70756f Binary files /dev/null and b/tools/NKeditor/plugins/emoticons/images/87.gif differ diff --git a/tools/NKeditor/plugins/emoticons/images/88.gif b/tools/NKeditor/plugins/emoticons/images/88.gif new file mode 100644 index 00000000..4d8b15e7 Binary files /dev/null and b/tools/NKeditor/plugins/emoticons/images/88.gif differ diff --git a/tools/NKeditor/plugins/emoticons/images/89.gif b/tools/NKeditor/plugins/emoticons/images/89.gif new file mode 100644 index 00000000..05726dc4 Binary files /dev/null and b/tools/NKeditor/plugins/emoticons/images/89.gif differ diff --git a/tools/NKeditor/plugins/emoticons/images/9.gif b/tools/NKeditor/plugins/emoticons/images/9.gif new file mode 100644 index 00000000..c2d84507 Binary files /dev/null and b/tools/NKeditor/plugins/emoticons/images/9.gif differ diff --git a/tools/NKeditor/plugins/emoticons/images/90.gif b/tools/NKeditor/plugins/emoticons/images/90.gif new file mode 100644 index 00000000..adaf20e8 Binary files /dev/null and b/tools/NKeditor/plugins/emoticons/images/90.gif differ diff --git a/tools/NKeditor/plugins/emoticons/images/91.gif b/tools/NKeditor/plugins/emoticons/images/91.gif new file mode 100644 index 00000000..608d0ad8 Binary files /dev/null and b/tools/NKeditor/plugins/emoticons/images/91.gif differ diff --git a/tools/NKeditor/plugins/emoticons/images/92.gif b/tools/NKeditor/plugins/emoticons/images/92.gif new file mode 100644 index 00000000..b909e16a Binary files /dev/null and b/tools/NKeditor/plugins/emoticons/images/92.gif differ diff --git a/tools/NKeditor/plugins/emoticons/images/93.gif b/tools/NKeditor/plugins/emoticons/images/93.gif new file mode 100644 index 00000000..7f71a8c9 Binary files /dev/null and b/tools/NKeditor/plugins/emoticons/images/93.gif differ diff --git a/tools/NKeditor/plugins/emoticons/images/94.gif b/tools/NKeditor/plugins/emoticons/images/94.gif new file mode 100644 index 00000000..4f26d7d7 Binary files /dev/null and b/tools/NKeditor/plugins/emoticons/images/94.gif differ diff --git a/tools/NKeditor/plugins/emoticons/images/95.gif b/tools/NKeditor/plugins/emoticons/images/95.gif new file mode 100644 index 00000000..5ef6d382 Binary files /dev/null and b/tools/NKeditor/plugins/emoticons/images/95.gif differ diff --git a/tools/NKeditor/plugins/emoticons/images/96.gif b/tools/NKeditor/plugins/emoticons/images/96.gif new file mode 100644 index 00000000..2b709e15 Binary files /dev/null and b/tools/NKeditor/plugins/emoticons/images/96.gif differ diff --git a/tools/NKeditor/plugins/emoticons/images/97.gif b/tools/NKeditor/plugins/emoticons/images/97.gif new file mode 100644 index 00000000..cf29be87 Binary files /dev/null and b/tools/NKeditor/plugins/emoticons/images/97.gif differ diff --git a/tools/NKeditor/plugins/emoticons/images/98.gif b/tools/NKeditor/plugins/emoticons/images/98.gif new file mode 100644 index 00000000..c70e7d33 Binary files /dev/null and b/tools/NKeditor/plugins/emoticons/images/98.gif differ diff --git a/tools/NKeditor/plugins/emoticons/images/99.gif b/tools/NKeditor/plugins/emoticons/images/99.gif new file mode 100644 index 00000000..05c18635 Binary files /dev/null and b/tools/NKeditor/plugins/emoticons/images/99.gif differ diff --git a/tools/NKeditor/plugins/emoticons/images/static.gif b/tools/NKeditor/plugins/emoticons/images/static.gif new file mode 100644 index 00000000..b8c444b5 Binary files /dev/null and b/tools/NKeditor/plugins/emoticons/images/static.gif differ diff --git a/tools/NKeditor/plugins/filemanager/FManager.js b/tools/NKeditor/plugins/filemanager/FManager.js new file mode 100644 index 00000000..cfd58adf --- /dev/null +++ b/tools/NKeditor/plugins/filemanager/FManager.js @@ -0,0 +1,300 @@ +/** + * HTML5上传插件 + * @author yangjian + * @version 1.0.1 + * @site https://git.oschina.net/blackfox/ajaxUpload + */ +(function($) { + + //判断浏览器是否支持html5 + if ( typeof FormData == "undefined" ) + throw new Error("您当前的浏览器不支持HTML5,请先升级浏览器才能使用该上传插件!"); + + //image crop + $.fn.imageCrop = function(__width, __height) { + $(this).on("load", function () { + + var width, height, left, top; + var orgRate = this.width/this.height; + var cropRate = __width/__height; + if ( orgRate >= cropRate ) { + height = __height; + width = __width * orgRate; + top = 0; + left = (width - __width)/2; + } else { + width = __width; + height = __height / orgRate; + left = 0; + //top = (height - __height)/2; + top = 0; + } + $(this).css({ + "position" : "absolute", + top : -top + "px", + left : -left + "px", + width : width + "px", + height : height + "px" + }); + }); + } + + //make element draggable + $.fn.draggable = function(options) { + var defaults = { + handler : null + } + options = $.extend(defaults, options); + var __self = this; + $(options.handler).mousedown(function(e) { + var offsetLeft = e.pageX - $(__self).position().left; + var offsetTop = e.pageY - $(__self).position().top; + $(document).mousemove(function(e) { + //清除拖动鼠标的时候选择文本 + window.getSelection ? window.getSelection().removeAllRanges():document.selection.empty(); + $(__self).css({ + 'top' : e.pageY-offsetTop + 'px', + 'left' : e.pageX-offsetLeft + 'px' + }); + }); + + }).mouseup(function() { + $(document).unbind('mousemove'); + }); + + } + + if ( Array.prototype.remove == undefined ) { + Array.prototype.remove = function(item) { + for ( var i = 0; i < this.length; i++ ) { + if ( this[i] == item ) { + this.splice(i, 1); + break; + } + } + } + } + if ( Array.prototype.uinque == undefined ) { + Array.prototype.uinque = function() { + var result = [], hash = {}; + for ( var i = 0, item; (item = this[i]) != null; i++ ) { + if ( !hash[item] ) { + result.push(item); + hash[item] = true; + } + } + return result; + } + } + + window.FManager = function(options) { + + options = $.extend({ + lang : {}, + list_url : null, + data_type : "json", + fileType : "image", //文件类型,默认是图片,可选flash,media,file + top : 20, + callback : function(data) { + console.log(data); + } + }, options); + + var o = {}; + o.dialog = null; + o.selectedList = new Array(); //the file queue upload successfully + o.page = 1; //服务器图片列表页码 + o.marker = null, //七牛云上传的分页标识 + o.noRecord = false; + + //close the dialog + o.close = function () { + o.dialog.remove(); + try {JDialog.lock.hide();} catch (e) {} + if (typeof options.close == 'function') { + options.close(); + } + } + + //create dialog + function createDialog() { + + var builder = new StringBuilder(); + builder.append('
      '); + builder.append('
      '+options.lang.title+'
      '); + builder.append('
      '); + builder.append('
        '); + builder.append('
        '); + builder.append('
        '+options.lang.loadMoreData+'
        ') + builder.append(''+options.lang.confirmBtnText+'') + builder.append(''+options.lang.cancelBtnText+'
        '); + + o.dialog = $(builder.toString()); + $("body").append(o.dialog); + if (options.top == 0) { + options.top = ($(window).height() - o.dialog.height())/2; + } + o.dialog.css({ + left : ($(window).width() - o.dialog.width())/2 + "px", + top : options.top + "px" + }); + //给对话框添加拖拽事件 + o.dialog.draggable({handler : o.dialog.find(".ued_title")}); + loadFilesFromServer(); + + } + + //绑定元素事件 + function bindEvent() { + + //关闭对话框 + G(".close_btn").on("click", function() { + o.close(); + }); + + //点击确认|取消按钮事件 + G(".btn-confirm").on("click", function() { + options.callback(o.selectedList); + o.close(); + }); + G(".btn-cancel").on("click", function() { + o.close(); + }); + + //当滚动条滚到底部时自动去加载图片 + G(".imagelist").on("scroll", function() { + + if ( this.scrollTop + this.clientHeight >= this.scrollHeight ) { + loadFilesFromServer(); + } + }); + + } + + //query + function G(query) { + return o.dialog.find(query); + } + + //从服务器上获取图片地址 + function loadFilesFromServer() { + if ( !options.list_url ) { + G(".online .no-data").html(''+options.lang.noListUrl+'').show(); + return false; + } + if ( o.noRecord ) return false; + + G(".loading-icon").show(); //显示加载图标 + $.get(options.list_url, { + page : o.page, + marker : o.marker, + fileType : options.fileType + }, function(res) { + + G(".loading-icon").hide(); //隐藏加载图标 + if ( res.code == "000" ) { + if (!res.data[0]) { + G(".online .no-data").html(options.lang.noDataText).show(); + return; + } + o.page++; + o.marker = res.extra; //存储marker + appendFiles(res.data); + } else { + G(".online .no-data").text(options.lang.noDataText).show(); + o.noRecord = true; + } + + }, "json"); + } + + //追加元素到图片列表 + function appendFiles(data) { + + $.each(data, function(idx, item) { + + var builder = new StringBuilder(); + builder.append('
      • '); + var extension = getFileExt(item.thumbURL); + if ( extension == '' ) extension = "default"; + extension = extension.toLowerCase(); + //如果不是图片,则根据文件的后缀名去加载对应的缩略图 + var imgSize = item.width+'x'+item.height; //图片尺寸 + if ( "jpg|jpeg|gif|png|bmp".indexOf(extension) == -1 ) { + imgSize = formatFileSize(item.filesize); //如果是文件则显示文件大小 + builder.append(''); + } else { + builder.append(''); + } + + builder.append(''+imgSize+'
      • '); + var $image = $(builder.toString()); + + //绑定选择图片事件 + $image.find(".ic").on("click", function() { + var src = $(this).prev().attr("data-src"); + var oldSrc = $('.selected:eq(0)').prev().attr("data-src"); + //多选 + // if ( $(this).hasClass("selected") ) { + // $(this).removeClass("selected"); + // o.selectedList.remove(src); + // } else { + // $(this).addClass("selected"); + // o.selectedList.push(src); + // } + //这里暂时改成单选 + $('.selected:eq(0)').removeClass("selected"); //移除之前的选中的图片 + o.selectedList.remove(oldSrc); + $(this).addClass("selected"); + o.selectedList.push(src); + //console.log(o.selectedList); + }); + //裁剪显示图片 + $image.find("img").imageCrop(113, 113); + G(".imagelist .list").append($image); + }); + + } + + //获取文件后缀名 + function getFileExt(filename) { + if ( !filename ) return false; + var position = filename.lastIndexOf('.') + if ( position != -1 ) { + return filename.substr(position+1).toLowerCase(); + } + return false; + } + + //format file size(格式化文件大小) + function formatFileSize(size) { + + if ( size/1048576 > 1 ) { + return (size/1048576).toFixed(2)+"MB"; + } else { + return (size/1024).toFixed(2)+"KB"; + } + + } + //initialize dialog + createDialog(); + bindEvent(); + return o; + }; //end of JUpload + + //string builder + var StringBuilder = function() { + + var buffer = new Array(); + StringBuilder.prototype.append = function(str) { + buffer.push(str); + } + + StringBuilder.prototype.toString = function () { + return buffer.join(""); + } + + } + + +})(jQuery); \ No newline at end of file diff --git a/tools/NKeditor/plugins/filemanager/css/filemanager.min.css b/tools/NKeditor/plugins/filemanager/css/filemanager.min.css new file mode 100644 index 00000000..e69de29b diff --git a/tools/NKeditor/plugins/filemanager/filemanager.js b/tools/NKeditor/plugins/filemanager/filemanager.js new file mode 100644 index 00000000..9f740f86 --- /dev/null +++ b/tools/NKeditor/plugins/filemanager/filemanager.js @@ -0,0 +1,35 @@ +/** + * 文件服务器管理 + * @author yangjian + * @since v4.1.12(2017-09-12) + * @site http://git.oschina.net/blackfox/kindeditor + */ +KindEditor.plugin('filemanager', function(K) { + var self = this; + var fileManagerJson = K.undef(self.fileManagerJson, self.basePath + 'php/file_manager_json.php'); + var lang = self.lang('filemanager.'); + if(typeof jQuery == 'undefined') { + K.options.errorMsgHandler(lang.depJQueryError, "error"); + return; + } else { + K.loadScript(K.options.pluginsPath+"filemanager/FManager.js"); + K.loadStyle(K.options.pluginsPath+"multiimage/css/upload.css"); + } + + self.plugin.filemanagerDialog = function(options) { + + var clickFn = options.clickFn; + new FManager({ + list_url : fileManagerJson, //图片列表数据获取url + lang : lang, //语言包 + fileType : options.dirName, + top : self.dialogOffset, + callback : function(data) { + //console.log(data); + clickFn.call(this, data[0]); + } + }); + //return dialog; + } + +}); diff --git a/tools/NKeditor/plugins/fixtoolbar/fixtoolbar.js b/tools/NKeditor/plugins/fixtoolbar/fixtoolbar.js new file mode 100644 index 00000000..7a16fca0 --- /dev/null +++ b/tools/NKeditor/plugins/fixtoolbar/fixtoolbar.js @@ -0,0 +1,35 @@ +/** + * Created by chenyihong on 14/12/4. + */ + +KindEditor.plugin('fixtoolbar', function (K) { + var self = this; + if (!self.fixToolBar) { + return; + } + + function init() { + var toolbar = K('.ke-toolbar'); + var originY = toolbar.pos().y; + K(window).bind('scroll', function () { + if (toolbar.css('position') == 'fixed') { + if(document.body.scrollTop - originY < 0){ + toolbar.css('position', 'static'); + toolbar.css('top', 'auto'); + } + } else { + if (toolbar.pos().y - document.body.scrollTop < 0) { + toolbar.css('position', 'fixed'); + toolbar.css('top', 0); + } + } + }); + } + + if (self.isCreated) { + init(); + } else { + self.afterCreate(init); + } + +}); diff --git a/tools/NKeditor/plugins/flash/flash.js b/tools/NKeditor/plugins/flash/flash.js new file mode 100644 index 00000000..f26eaf32 --- /dev/null +++ b/tools/NKeditor/plugins/flash/flash.js @@ -0,0 +1,165 @@ +/******************************************************************************* +* KindEditor - WYSIWYG HTML Editor for Internet +* Copyright (C) 2006-2011 kindsoft.net +* +* @author Roddy +* @site http://www.kindsoft.net/ +* @licence http://www.kindsoft.net/license.php +*******************************************************************************/ + +KindEditor.plugin('flash', function(K) { + var self = this, name = 'flash', lang = self.lang(name + '.'), + allowFlashUpload = K.undef(self.allowFlashUpload, true), + allowFileManager = K.undef(self.allowFileManager, false), + formatUploadUrl = K.undef(self.formatUploadUrl, true), + extraParams = K.undef(self.extraFileUploadParams, {}), + filePostName = K.undef(self.filePostName, 'imgFile'), + uploadJson = K.undef(self.uploadJson, self.basePath + 'php/upload_json.php'); + self.plugin.flash = { + edit : function() { + var html = [ + '
        ', + //url + '
        ', + '', + '
        ', + '  ', + '  ', + '', + '', + '', + '
        ', + '
        ', + //width + '
        ', + '', + '
        ', + ' ', + '
        ', + '
        ', + //height + '
        ', + '', + '
        ', + ' ', + '
        ', + '
        ', + '
        ' + ].join(''); + + var dialog = self.createDialog({ + name : name, + width : 450, + title : self.lang(name), + body : html, + yesBtn : { + name : self.lang('yes'), + click : function(e) { + var url = K.trim(urlBox.val()), + width = widthBox.val(), + height = heightBox.val(); + if (url == 'http://' || K.invalidUrl(url)) { + K.options.errorMsgHandler(self.lang('invalidUrl'), "error"); + urlBox[0].focus(); + return; + } + if (!/^\d*$/.test(width)) { + K.options.errorMsgHandler(self.lang('invalidWidth'), "error"); + widthBox[0].focus(); + return; + } + if (!/^\d*$/.test(height)) { + K.options.errorMsgHandler(self.lang('invalidHeight'), "error"); + heightBox[0].focus(); + return; + } + var html = K.mediaImg(self.themesPath + 'common/blank.gif', { + src : url, + type : K.mediaType('.swf'), + width : width, + height : height, + quality : 'high' + }); + self.insertHtml(html).hideDialog().focus(); + } + } + }), + div = dialog.div, + urlBox = K('[name="url"]', div), + viewServerBtn = K('[name="viewServer"]', div), + widthBox = K('[name="width"]', div), + heightBox = K('[name="height"]', div); + urlBox.val('http://'); + + if (allowFlashUpload) { + var uploadbutton = K.uploadbutton({ + button : K('.ke-upload-button', div)[0], + fieldName : filePostName, + extraParams : extraParams, + url : K.addParam(uploadJson, 'fileType=flash'), + afterUpload : function(data) { + dialog.hideLoading(); + if (data.code === "000") { + var url = data.data.url; + if (formatUploadUrl) { + url = K.formatUrl(url, 'absolute'); + } + urlBox.val(url); + if (self.afterUpload) { + self.afterUpload.call(self, url, data, name); + } + K.options.errorMsgHandler(self.lang('uploadSuccess'), "ok"); + } else { + K.options.errorMsgHandler(data.message, "error"); + } + }, + afterError : function(html) { + dialog.hideLoading(); + self.errorDialog(html); + } + }); + uploadbutton.fileBox.change(function(e) { + dialog.showLoading(self.lang('uploadLoading')); + uploadbutton.submit(); + }); + } else { + K('.ke-upload-button', div).hide(); + } + + if (allowFileManager) { + viewServerBtn.click(function(e) { + self.loadPlugin('filemanager', function() { + self.plugin.filemanagerDialog({ + dirName : 'flash', + clickFn : function(url) { + K('[name="url"]', div).val(url); + if (self.afterSelectFile) { + self.afterSelectFile.call(self, url); + } + } + }); + }); + }); + } else { + K('[name="url"]').css("width", "250px"); + viewServerBtn.hide(); + } + + var img = self.plugin.getSelectedFlash(); + if (img) { + var attrs = K.mediaAttrs(img.attr('data-ke-tag')); + urlBox.val(attrs.src); + widthBox.val(K.removeUnit(img.css('width')) || attrs.width || 0); + heightBox.val(K.removeUnit(img.css('height')) || attrs.height || 0); + } + urlBox[0].focus(); + urlBox[0].select(); + }, + 'delete' : function() { + self.plugin.getSelectedFlash().remove(); + // [IE] 删除图片后立即点击图片按钮出错 + self.addBookmark(); + } + }; + self.clickToolbar(name, self.plugin.flash.edit); +}); diff --git a/tools/NKeditor/plugins/graft/css/images/addimg.png b/tools/NKeditor/plugins/graft/css/images/addimg.png new file mode 100644 index 00000000..03a87135 Binary files /dev/null and b/tools/NKeditor/plugins/graft/css/images/addimg.png differ diff --git a/tools/NKeditor/plugins/graft/css/images/blur.png b/tools/NKeditor/plugins/graft/css/images/blur.png new file mode 100644 index 00000000..6307d279 Binary files /dev/null and b/tools/NKeditor/plugins/graft/css/images/blur.png differ diff --git a/tools/NKeditor/plugins/graft/css/images/brush.png b/tools/NKeditor/plugins/graft/css/images/brush.png new file mode 100644 index 00000000..efa6fdb0 Binary files /dev/null and b/tools/NKeditor/plugins/graft/css/images/brush.png differ diff --git a/tools/NKeditor/plugins/graft/css/images/delimg.png b/tools/NKeditor/plugins/graft/css/images/delimg.png new file mode 100644 index 00000000..5a892e40 Binary files /dev/null and b/tools/NKeditor/plugins/graft/css/images/delimg.png differ diff --git a/tools/NKeditor/plugins/graft/css/images/delimgH.png b/tools/NKeditor/plugins/graft/css/images/delimgH.png new file mode 100644 index 00000000..2f0c5c9d Binary files /dev/null and b/tools/NKeditor/plugins/graft/css/images/delimgH.png differ diff --git a/tools/NKeditor/plugins/graft/css/images/empty.png b/tools/NKeditor/plugins/graft/css/images/empty.png new file mode 100644 index 00000000..03751962 Binary files /dev/null and b/tools/NKeditor/plugins/graft/css/images/empty.png differ diff --git a/tools/NKeditor/plugins/graft/css/images/emptyH.png b/tools/NKeditor/plugins/graft/css/images/emptyH.png new file mode 100644 index 00000000..838ca723 Binary files /dev/null and b/tools/NKeditor/plugins/graft/css/images/emptyH.png differ diff --git a/tools/NKeditor/plugins/graft/css/images/eraser.png b/tools/NKeditor/plugins/graft/css/images/eraser.png new file mode 100644 index 00000000..63e87cec Binary files /dev/null and b/tools/NKeditor/plugins/graft/css/images/eraser.png differ diff --git a/tools/NKeditor/plugins/graft/css/images/init.png b/tools/NKeditor/plugins/graft/css/images/init.png new file mode 100644 index 00000000..c2eb7bed Binary files /dev/null and b/tools/NKeditor/plugins/graft/css/images/init.png differ diff --git a/tools/NKeditor/plugins/graft/css/images/redo.png b/tools/NKeditor/plugins/graft/css/images/redo.png new file mode 100644 index 00000000..12cd9bbe Binary files /dev/null and b/tools/NKeditor/plugins/graft/css/images/redo.png differ diff --git a/tools/NKeditor/plugins/graft/css/images/redoH.png b/tools/NKeditor/plugins/graft/css/images/redoH.png new file mode 100644 index 00000000..d9f33d38 Binary files /dev/null and b/tools/NKeditor/plugins/graft/css/images/redoH.png differ diff --git a/tools/NKeditor/plugins/graft/css/images/save.png b/tools/NKeditor/plugins/graft/css/images/save.png new file mode 100644 index 00000000..2ab611e0 Binary files /dev/null and b/tools/NKeditor/plugins/graft/css/images/save.png differ diff --git a/tools/NKeditor/plugins/graft/css/images/scale.png b/tools/NKeditor/plugins/graft/css/images/scale.png new file mode 100644 index 00000000..935a3f3e Binary files /dev/null and b/tools/NKeditor/plugins/graft/css/images/scale.png differ diff --git a/tools/NKeditor/plugins/graft/css/images/scaleH.png b/tools/NKeditor/plugins/graft/css/images/scaleH.png new file mode 100644 index 00000000..72e64a9d Binary files /dev/null and b/tools/NKeditor/plugins/graft/css/images/scaleH.png differ diff --git a/tools/NKeditor/plugins/graft/css/images/size.png b/tools/NKeditor/plugins/graft/css/images/size.png new file mode 100644 index 00000000..83668450 Binary files /dev/null and b/tools/NKeditor/plugins/graft/css/images/size.png differ diff --git a/tools/NKeditor/plugins/graft/css/images/undo.png b/tools/NKeditor/plugins/graft/css/images/undo.png new file mode 100644 index 00000000..084c7cc7 Binary files /dev/null and b/tools/NKeditor/plugins/graft/css/images/undo.png differ diff --git a/tools/NKeditor/plugins/graft/css/images/undoH.png b/tools/NKeditor/plugins/graft/css/images/undoH.png new file mode 100644 index 00000000..fde7eb3c Binary files /dev/null and b/tools/NKeditor/plugins/graft/css/images/undoH.png differ diff --git a/tools/NKeditor/plugins/graft/css/scrawl.css b/tools/NKeditor/plugins/graft/css/scrawl.css new file mode 100644 index 00000000..f53a5d7a --- /dev/null +++ b/tools/NKeditor/plugins/graft/css/scrawl.css @@ -0,0 +1,204 @@ +/*common +*/ +body { + margin: 0; } + body a { + text-decoration: none; } + body em { + font-style: normal; } + body .border_style { + border: 1px solid #ccc; + border-radius: 5px; + box-shadow: 2px 2px 5px #d3d6da; } + body em { + font-style: normal; } + body .ke-dialog-body { + padding-top: 8px; } + body .scrawl-main { + padding: 0px 8px; + zoom: 1; + overflow: hidden; + max-width: 1000px; } + body .scrawl-main .hot { + float: left; } + body .scrawl-main .hot .drawBoard { + position: relative; + cursor: crosshair; } + body .scrawl-main .hot .drawBoard .brushBorad { + position: absolute; + left: 0; + top: 0; + z-index: 998; } + body .scrawl-main .hot .drawBoard .picBoard { + border: none; + text-align: center; + cursor: default; } + body .scrawl-main .hot .operateBar { + margin-top: 10px; + font-size: 12px; + text-align: center; } + body .scrawl-main .hot .operateBar span { + margin-left: 10px; } + body .scrawl-main .hot .operateBar button { + background: #e1e1e1; + border: 1px solid #cccccc; + margin: 0px 5px; + cursor: default; } + body .scrawl-main .hot .operateBar .prevStep .icon { + display: inline-block; + width: 16px; + height: 16px; + background-image: url("images/undo.png"); } + body .scrawl-main .hot .operateBar .prevStep.active { + cursor: pointer; + background: #FFFFFF; + border-color: #56CCCC; } + body .scrawl-main .hot .operateBar .prevStep.active .icon { + background-image: url("images/undoH.png"); } + body .scrawl-main .hot .operateBar .nextStep .icon { + display: inline-block; + width: 16px; + height: 16px; + background-image: url("images/redo.png"); } + body .scrawl-main .hot .operateBar .nextStep.active { + cursor: pointer; + background: #FFFFFF; + border-color: #56CCCC; } + body .scrawl-main .hot .operateBar .nextStep.active .icon { + background-image: url("images/redoH.png"); } + body .scrawl-main .hot .operateBar .clearBoard { + cursor: default; } + body .scrawl-main .hot .operateBar .clearBoard .icon { + display: inline-block; + width: 16px; + height: 16px; + background-image: url("images/empty.png"); } + body .scrawl-main .hot .operateBar .clearBoard.active { + cursor: pointer; + background: #FFFFFF; + border-color: #56CCCC; } + body .scrawl-main .hot .operateBar .clearBoard.active .icon { + background-image: url("images/emptyH.png"); } + body .scrawl-main .hot .operateBar .scaleBoard .icon { + display: inline-block; + width: 16px; + height: 16px; + background-image: url("images/scale.png"); + cursor: default; } + body .scrawl-main .hot .operateBar .scaleBoard .iconH { + background-image: url("images/scaleH.png"); } + body .scrawl-main .hot .operateBar .scaleBoard .text { + color: #ccc; + cursor: default; } + body .scrawl-main .drawToolbar { + float: right; + width: 110px; + height: 320px; + overflow: hidden; } + body .scrawl-main .drawToolbar .brushIcon { + display: inline-block; + width: 16px; + height: 16px; + background-image: url("images/brush.png"); } + body .scrawl-main .drawToolbar .eraserIcon { + display: inline-block; + width: 16px; + height: 16px; + background-image: url("images/eraser.png"); } + body .scrawl-main .drawToolbar .blurIcon { + display: inline-block; + width: 16px; + height: 16px; + background: url(images/blur.png) -2px -2px; + background-size: 22px 20px; } + body .scrawl-main .drawToolbar .colorBar { + margin-top: 10px; + font-size: 12px; + text-align: center; + zoom: 1; + overflow: hidden; } + body .scrawl-main .drawToolbar .colorBar span { + float: left; + margin: 2px 3px; + width: 10px; + height: 10px; + border: 1px solid #c1c1c1; + border-radius: 3px; + cursor: pointer; } + body .scrawl-main .drawToolbar .colorBar .active { + border-color: #FF0000; + box-shadow: 2px 2px 5px #d3d6da; } + body .scrawl-main .drawToolbar .sectionBar { + margin-top: 15px; + font-size: 12px; + text-align: center; } + body .scrawl-main .drawToolbar .sectionBar a { + display: inline-block; + width: 10px; + height: 12px; + color: #888; + text-indent: -999px; + opacity: 0.3; } + body .scrawl-main .drawToolbar .sectionBar .size1 { + background: url("images/size.png") 1px center no-repeat; } + body .scrawl-main .drawToolbar .sectionBar .size2 { + background: url("images/size.png") -10px center no-repeat; } + body .scrawl-main .drawToolbar .sectionBar .size3 { + background: url("images/size.png") -22px center no-repeat; } + body .scrawl-main .drawToolbar .sectionBar .size4 { + background: url("images/size.png") -35px center no-repeat; } + body .scrawl-main .drawToolbar .sectionBar .icon { + position: relative; + top: 3px; } + body .scrawl-main .drawToolbar .sectionBar .clearSetting .icon { + display: inline-block; + width: 16px; + height: 16px; + background-image: url("images/init.png"); + background-size: 16px 16px; } + body .scrawl-main .drawToolbar .sectionBar .addImgH { + position: relative; } + body .scrawl-main .drawToolbar .sectionBar .addImgH .icon { + display: inline-block; + width: 16px; + height: 16px; + background-image: url("images/addimg.png"); + cursor: default; } + body .scrawl-main .drawToolbar .sectionBar .addImgH .upload { + position: absolute; + left: 18px; + top: -1px; + width: 75px; + height: 21px; + opacity: 0; + cursor: pointer; + opacity: 0; } + body .scrawl-main .drawToolbar .sectionBar .removeImg .icon { + display: inline-block; + width: 16px; + height: 16px; + background-image: url("images/delimg.png"); + cursor: default; } + body .scrawl-main .drawToolbar .sectionBar .removeImg .text { + color: #ccc; + cursor: default; } + body .scrawl-main .drawToolbar .sectionBar .removeImg.active { + cursor: pointer; } + body .scrawl-main .drawToolbar .sectionBar .removeImg.active .icon { + background-image: url("images/delimgH.png"); } + body .scrawl-main .drawToolbar .sectionBar .removeImg.active .text { + color: #000; + cursor: default; } + body .scrawl-main .drawToolbar .sectionBar .saveImg { + cursor: pointer; } + body .scrawl-main .drawToolbar .sectionBar .saveImg .icon { + display: inline-block; + width: 16px; + height: 16px; + background-image: url("images/save.png"); + background-size: 18px 18px; + cursor: default; } + body .scrawl-main .drawToolbar #clearSetting { + cursor: pointer; } + +/*# sourceMappingURL=scrawl.css.map */ diff --git a/tools/NKeditor/plugins/graft/css/scrawl.css.map b/tools/NKeditor/plugins/graft/css/scrawl.css.map new file mode 100644 index 00000000..6143e2ce --- /dev/null +++ b/tools/NKeditor/plugins/graft/css/scrawl.css.map @@ -0,0 +1,7 @@ +{ +"version": 3, +"mappings": "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", +"sources": ["scrawl.scss"], +"names": [], +"file": "scrawl.css" +} \ No newline at end of file diff --git a/tools/NKeditor/plugins/graft/css/scrawl.scss b/tools/NKeditor/plugins/graft/css/scrawl.scss new file mode 100644 index 00000000..fc23a3e4 --- /dev/null +++ b/tools/NKeditor/plugins/graft/css/scrawl.scss @@ -0,0 +1,284 @@ +/*common +*/ +body { + + margin: 0; + a{text-decoration: none;} + em{font-style: normal;} + + .border_style{ + border: 1px solid #ccc; + border-radius: 5px; + box-shadow:2px 2px 5px #d3d6da; + } + em {font-style: normal;} + + .ke-dialog-body { + padding-top: 8px; + } + .scrawl-main { + padding: 0px 8px; + zoom: 1; + overflow: hidden; + max-width: 1000px; + + + // 绘图区域 + .hot { + float:left; + + .drawBoard{ + position: relative; + cursor: crosshair; + + .brushBorad{ + position: absolute; + left:0; + top:0; + z-index: 998; + } + + .picBoard{ + border: none; + text-align: center; + cursor: default; + } + } + + .operateBar{ + margin-top:10px; + font-size:12px; + text-align: center; + + span {margin-left: 10px;} + + button { + background:#e1e1e1; + border: 1px solid #cccccc; + margin: 0px 5px; + cursor:default; + } + + .prevStep { + .icon { + display: inline-block; + width:16px;height:16px; + background-image: url('images/undo.png'); + } + } + + .prevStep.active { + cursor: pointer; + background: #FFFFFF; + border-color: #56CCCC; + + .icon { + background-image: url('images/undoH.png'); + } + + } + + .nextStep { + .icon { + display: inline-block; + width:16px; + height:16px; + background-image: url('images/redo.png'); + } + } + + .nextStep.active { + cursor: pointer; + background: #FFFFFF; + border-color: #56CCCC; + + .icon { + background-image: url('images/redoH.png'); + } + } + + .clearBoard { + cursor: default; + + .icon { + display: inline-block; + width:16px;height:16px; + background-image: url('images/empty.png'); + } + + } + + .clearBoard.active { + cursor: pointer; + background: #FFFFFF; + border-color: #56CCCC; + + .icon { + background-image: url('images/emptyH.png'); + } + } + + .scaleBoard { + .icon { + display: inline-block; + width:16px;height:16px; + background-image: url('images/scale.png'); + cursor:default;} + + .iconH { + background-image: url('images/scaleH.png'); + } + + .text{ + color:#ccc; + cursor:default;} + } + + + } + } + + // 绘图工具 + .drawToolbar { + float:right; + width:110px; + height:320px; + overflow: hidden; + + .brushIcon { + display: inline-block; + width:16px;height:16px; + background-image: url('images/brush.png')} + + .eraserIcon { + display: inline-block; + width:16px;height:16px; + background-image: url('images/eraser.png')} + + .blurIcon { + display: inline-block; + width:16px;height:16px; + background: url(images/blur.png) -2px -2px; + background-size: 22px 20px; + } + + .colorBar { + margin-top:10px; + font-size: 12px; + text-align: center; + zoom: 1; + overflow: hidden; + + span { + float: left; + margin: 2px 3px; + width: 10px; + height: 10px; + border:1px solid #c1c1c1; + border-radius: 3px; + cursor: pointer; + } + + .active { + border-color: #FF0000; + box-shadow:2px 2px 5px #d3d6da; + } + } + + .sectionBar { + margin-top:15px; + font-size: 12px; + text-align: center; + + a { + display:inline-block; + width:10px; + height:12px; + color: #888; + text-indent: -999px; + opacity: 0.3 + } + + .size1 {background: url('images/size.png') 1px center no-repeat ;} + .size2 {background: url('images/size.png') -10px center no-repeat;} + .size3 {background: url('images/size.png') -22px center no-repeat;} + .size4 {background: url('images/size.png') -35px center no-repeat;} + + .icon { + position: relative; + top:3px; + } + .clearSetting { + .icon { + display: inline-block; + width:16px;height:16px; + background-image: url('images/init.png'); + background-size: 16px 16px; + } + } + + .addImgH { + position: relative; + + .icon { + display: inline-block; + width:16px;height:16px; + background-image: url('images/addimg.png'); + cursor:default; + } + + .upload { + position: absolute; + left: 18px;top: -1px; + width: 75px; + height: 21px; + opacity: 0; + cursor: pointer; + opacity: 0; + } + } + + .removeImg { + .icon { + display: inline-block; + width:16px;height:16px; + background-image: url('images/delimg.png'); + cursor:default; + } + + .text{color:#ccc;cursor:default;} + } //end removeImg + + .removeImg.active { + cursor: pointer; + + .icon { + background-image: url('images/delimgH.png'); + } + + .text{color:#000;cursor:default;} + } //end removeImg + + //保存图片 + .saveImg { + cursor: pointer; + + .icon { + display: inline-block; + width:16px;height:16px; + background-image: url('images/save.png'); + background-size: 18px 18px; + cursor:default; + } + } + + } + + #clearSetting {cursor: pointer;} + } + } + + +} + + diff --git a/tools/NKeditor/plugins/graft/graft.js b/tools/NKeditor/plugins/graft/graft.js new file mode 100644 index 00000000..0102a88f --- /dev/null +++ b/tools/NKeditor/plugins/graft/graft.js @@ -0,0 +1,189 @@ +/******************************************************************************* +* KindEditor - WYSIWYG HTML Editor for Internet +* Copyright (C) 2006-2011 kindsoft.net +* +* @author Roddy +* @site http://www.kindsoft.net/ +* @licence http://www.kindsoft.net/license.php +*******************************************************************************/ + +KindEditor.plugin('graft', function(K) { + var self = this, name = 'graft', + uploadJson = K.undef(self.uploadJson, self.basePath + 'php/upload_json.php'), + allowUploadGraft = K.undef(self.allowUploadGraft, true), + lang = self.lang(name + '.'); + + if(typeof jQuery == 'undefined') { + K.options.errorMsgHandler(lang.depJQueryError, "error"); + return; + } else { + K.loadStyle(K.options.pluginsPath+"graft/css/scrawl.css"); + K.loadScript(K.options.pluginsPath+"graft/scrawl.js"); + } + + self.plugin.graftDialog = function(options) { + var clickFn = options.clickFn; + var html = [ + '
        ', + //绘图区域 + '
        ', + '
        ', + '你的浏览器不支持 canvas 绘图', + '
        ', + '
        ', + '
        ', + '', + '', + '', + '
        ', + '
        ', + //绘图区域 end + + //工具栏 + '
        ', + '
        ', + '', + '', + '', + '', + '', + '', + + '', + '', + '', + '', + '', + '', + + '', + '', + '', + '', + '', + '', + '
        ', + + //笔刷设置 + '
        ', + '', + '1', + '3', + '5', + '7', + '
        ', + '
        ', + '', + '5', + '10', + '15', + '20', + '
        ', + '
        ', + '', + '2', + '4', + '6', + '8', + '
        ', + //end 笔刷设置 + '
        ', + '', + '', + '初始化设置', + '', + '
        ', + '
        ', + '
        ', + '', + '添加背景', + '', + '
        ', + '
        ', + '
        ', + '', + '', + '删除背景', + '', + '
        ', + '
        ' + ].join(''); + + var dialog = self.createDialog({ + name : name, + width : 750, + height : 440, + title : self.lang(name), + body : html, + yesBtn : { + name : lang.btnText, + click : function(e) { + + if (dialog.isLoading) { + return; + } + if (canvas.isEmpty()) { + K.options.errorMsgHandler(lang.empty, "error"); + return; + } + canvas.save(function(data) { + //上传涂鸦到服务器 + if (allowUploadGraft) { + dialog.showLoading(self.lang('uploadLoading')); + $.post(uploadJson, { + img_base64_data : data, + fileType : "image", + base64 : 1 + }, function(res) { + + dialog.hideLoading(); + if (res.code == "000") { + K.options.errorMsgHandler(lang.uploadSuccess, "ok"); + clickFn.call(self, res.data.url); + self.hideDialog().focus(); + } else { + K.options.errorMsgHandler(lang.uploadFaild, "error"); + } + + }, "json"); + + } else { + clickFn.call(self, data); + self.hideDialog().focus(); + } + + }); + + } + } + }); + //console.log(div); + + //var urlBox = K('[name="url"]', div), + // viewServerBtn = K('[name="viewServer"]', div), + // titleBox = K('[name="title"]', div); + + var canvas = new Canvas({ + canvasId : "canvas-borad", + width : 600, + height : 320 + }); + + + + }; + + self.clickToolbar(name, function() { + self.plugin.graftDialog({ + clickFn : function(url) { + self.exec('insertimage', url); + } + }); + }); +}); diff --git a/tools/NKeditor/plugins/graft/index.html b/tools/NKeditor/plugins/graft/index.html new file mode 100644 index 00000000..9b684f97 --- /dev/null +++ b/tools/NKeditor/plugins/graft/index.html @@ -0,0 +1,134 @@ + + + + 在线涂鸦工具 + + + + + +
        +
        +
        + 你的浏览器不支持 canvas 绘图 +
        +
        +
        + + + + + + + +
        +
        +
        +
        + + + + + + + + + + + + + + + + + + + + +
        + +
        + + 1 + 3 + 5 + 7 +
        +
        + + 5 + 10 + 15 + 20 +
        + +
        + + 2 + 4 + 6 + 8 +
        + +
        + + + 初始化设置 + +
        + +
        +
        + + 添加背景 + + +
        +
        + +
        + + + 删除背景 + +
        + +
        + + + 保存图片 + +
        + +
        +
        + + + + + + + \ No newline at end of file diff --git a/tools/NKeditor/plugins/graft/scrawl.js b/tools/NKeditor/plugins/graft/scrawl.js new file mode 100644 index 00000000..fe13f079 --- /dev/null +++ b/tools/NKeditor/plugins/graft/scrawl.js @@ -0,0 +1,262 @@ +/** + * Created by yangjian on 17-9-18. + */ +(function($) { + + // 设置元素可用状态 + $.fn.enable = function() { + $(this).addClass("active"); + $(this).removeAttr("disabled"); + } + + // 设置元素不可用状态 + $.fn.disable = function() { + $(this).removeClass("active"); + $(this).attr("disabled", true); + } + + var Canvas = function(options) { + + var configs = { + width : 360, + height : 300 + }; //默认配置 + options = options || {}; + $.extend(configs, options); + + var canvas = $("#"+configs.canvasId)[0]; //画布 + canvas.width = configs.width; + canvas.height = configs.height; + var context = canvas.getContext("2d"); //绘图环境 + context.lineCap = "round"; //设置线条两端为圆弧 + context.lineJoin = "round"; //设置线条转折为圆弧 + //设置默认颜色 + setColor(); + var $prevBtn = $("#J_prevStep"); //上一步 + var $nextBtn = $("#J_nextStep"); //下一步 + var $clearBtn = $("#J_clearBoard"); //清空画板 + var drawing = false; //是否正在绘制 + var erasering = false; //是否正在擦除 + var prevSteps = []; //返回上一步操作集合 + var nextSteps = []; //恢复下一步操作集合 + var o = {}; + + $("#picBoard").css({ + width : configs.width + "px", + height : configs.height + "px" + }); + + // 事件绑定 + canvas.onmousedown = startDrawing; + canvas.onmouseup = stopDrawing; + canvas.onmouseout = stopDrawing; + canvas.onmousemove = doDrawing; + $prevBtn.on("click", gotoPrevStep); + $nextBtn.on("click", gotoNextStep); + $clearBtn.on("click", clearBoard); + + // 清空设置 + $("#clearSetting").on("click", function() { + context.lineWidth = 1; + setColor($(".colorBar span:first").data("color")); + context.shadowBlur = 0; + alert("画笔已重新初始化,请重新配置画笔。"); + }); + + //上传背景图片 + $("#J_canvas_bg").on("change", function() { + + if ($("#picBoard img").length > 0) { + $("#picBoard img:eq(0)").attr("src", window.URL.createObjectURL(this.files[0])); + return; + } + var $img = ''; + $("#picBoard").append($img); + + // 激活删除背景按钮 + $("#J_removeImg").enable(); + + }); + + // 删除背景图片 + $("#J_removeImg").on("click", function() { + $("#picBoard").empty(); + $(this).disable(); + }); + + //保存图片 + $('#J_saveImg').on("click", saveImage); + + // 设置笔刷大小 + $("#scrawl-main .brush-size").on("click", function() { + + context.restore(); //恢复到canvas的上一个状态 + context.lineWidth = parseInt($(this).text()); + erasering = false; + + }); + + // 设置笔触虚化 + $("#scrawl-main .blur-size").on("click", function() { + context.shadowBlur = parseInt($(this).text()); + }); + + // 橡皮擦功能 + $("#scrawl-main .eraser-size").on("click", function() { + + if (erasering == true) { + return; + } + erasering = true; + context.save(); //保存canvas状态 + context.lineCap = "round"; //设置线条两端为圆弧 + context.lineJoin = "round"; //设置线条转折为圆弧 + context.lineWidth = 10; + context.globalCompositeOperation = "destination-out"; + + }); + + //设置颜色 + $("#scrawl-main .colorBar span").on("click",function() { + + $("#scrawl-main .colorBar .active").removeClass("active"); + $(this).addClass("active"); + setColor($(this).data("color")); + }); + + // 开始绘制 + function startDrawing(e) { + drawing = true; + //记录上一步的数据 + prevSteps.push(context.getImageData(0, 0, configs.width, configs.height)); + // 创建一个新的绘图路径 + context.beginPath(); + // 把画笔移动到鼠标位置 + var offset = $(canvas).offset(); + context.moveTo(e.pageX - offset.left, e.pageY - offset.top); + } + + // 停止绘制 + function stopDrawing() { + + drawing = false; + //清空下一步的数据集合,从新开始记录 + nextSteps = []; + $nextBtn.disable(); + if (prevSteps.length == 1) { + $prevBtn.enable(); + $clearBtn.enable(); + } + } + + //绘制图像 + function doDrawing(e) { + if (drawing) { + // 找到鼠标最新位置 + var offset = $(canvas).offset(); + var x = e.pageX - offset.left; + var y = e.pageY - offset.top; + // 画一条直线到鼠标最新位置 + context.lineTo(x, y); + context.stroke(); + } + } + + /** + * 返回上一步操作 + */ + function gotoPrevStep() { + if (prevSteps.length > 0) { + //保存当前状态到下一步的操作历史库 + nextSteps.push(context.getImageData(0, 0, configs.width, configs.height)); + var popData = prevSteps.pop(); + context.putImageData(popData, 0, 0); + $nextBtn.enable(); + + if (prevSteps.length == 0) { + $prevBtn.disable(); + } + } + } + + /** + * 恢复下一步操作 + */ + function gotoNextStep() { + if (nextSteps.length > 0) { + //保存当前状态到上一步的操作历史库 + prevSteps.push(context.getImageData(0, 0, configs.width, configs.height)); + var imgData = nextSteps.pop(); + context.putImageData(imgData, 0, 0); + $prevBtn.enable(); + + if (nextSteps.length == 0) { + $nextBtn.disable(); + } + } + } + + /** + * 清空画板 + */ + function clearBoard() { + context.clearRect(0, 0, context.canvas.width, context.canvas.height); + prevSteps = []; + nextSteps = []; + + $prevBtn.disable(); + $nextBtn.disable(); + $clearBtn.disable(); + } + + /** + * 设置画笔颜色 + * @param color + */ + function setColor(color) { + if (!color) { + color = $(".colorBar .active:eq(0)").data("color"); + } + context.strokeStyle = color; + context.shadowColor = color; + } + + /** + * 获取图片 base64 编码 + */ + function saveImage(callback) { + + if ($("#picBoard img").length > 0) { + var image = new Image(); + image.src = $("#picBoard img:eq(0)").attr("src"); + image.onload = function() { + context.save(); + context.shadowBlur = 0; + context.shadowColor = '#FFF'; + context.globalCompositeOperation = "destination-atop"; + context.drawImage(this, 0, 0, configs.width, configs.height); + context.restore(); + + callback(canvas.toDataURL("image/png")); + } + + } else { + callback(canvas.toDataURL("image/png")); + } + } + + + //要导出的API + o.nextStep = gotoNextStep; + o.prevStep = gotoNextStep; + o.setColor = setColor; + o.save = saveImage; + o.isEmpty = function() { + return prevSteps.length == 0; + } + return o; + } + + + window.Canvas = Canvas; +})(jQuery); \ No newline at end of file diff --git a/tools/NKeditor/plugins/image/image.js b/tools/NKeditor/plugins/image/image.js new file mode 100644 index 00000000..dc4848a4 --- /dev/null +++ b/tools/NKeditor/plugins/image/image.js @@ -0,0 +1,340 @@ +/******************************************************************************* +* KindEditor - WYSIWYG HTML Editor for Internet +* Copyright (C) 2006-2011 kindsoft.net +* +* @author Roddy +* @site http://www.kindsoft.net/ +* @licence http://www.kindsoft.net/license.php +*******************************************************************************/ + +KindEditor.plugin('image', function(K) { + var self = this, name = 'image', + allowImageUpload = K.undef(self.allowImageUpload, true), + allowImageRemote = K.undef(self.allowImageRemote, true), + formatUploadUrl = K.undef(self.formatUploadUrl, true), + allowFileManager = K.undef(self.allowFileManager, false), + uploadJson = K.undef(self.uploadJson, self.basePath + 'php/upload_json.php'), + imageTabIndex = K.undef(self.imageTabIndex, 0), + imgPath = self.pluginsPath + 'image/images/', + extraParams = K.undef(self.extraFileUploadParams, {}), + filePostName = K.undef(self.filePostName, 'imgFile'), + fillDescAfterUploadImage = K.undef(self.fillDescAfterUploadImage, false), + lang = self.lang(name + '.'); + + self.plugin.imageDialog = function(options) { + var imageUrl = options.imageUrl, + imageWidth = K.undef(options.imageWidth, ''), + imageHeight = K.undef(options.imageHeight, ''), + imageTitle = K.undef(options.imageTitle, ''), + imageAlign = K.undef(options.imageAlign, ''), + showRemote = K.undef(options.showRemote, true), + showLocal = K.undef(options.showLocal, true), + tabIndex = K.undef(options.tabIndex, 0), + clickFn = options.clickFn; + var target = 'kindeditor_upload_iframe_' + new Date().getTime(); + var hiddenElements = []; + for(var k in extraParams){ + hiddenElements.push(''); + } + var html = [ + '
        ', + //tabs + '
        ', + //remote image - start + '', + //remote image - end + //local upload - start + '', + //local upload - end + '
        ' + ].join(''); + + var dialogWidth = showLocal || allowFileManager ? 450 : 400, + dialogHeight = showLocal && showRemote ? 310 : 260; + var dialog = self.createDialog({ + name : name, + width : dialogWidth, + height : dialogHeight, + title : self.lang(name), + body : html, + yesBtn : { + name : self.lang('yes'), + click : function(e) { + // Bugfix: http://code.google.com/p/kindeditor/issues/detail?id=319 + if (dialog.isLoading) { + return; + } + // insert local image + if (showLocal && showRemote && tabs && tabs.selectedIndex === 1 || !showRemote) { + if (uploadbutton.fileBox.val() == '') { + K.options.errorMsgHandler(self.lang('pleaseSelectFile'), "error"); + return; + } + dialog.showLoading(self.lang('uploadLoading')); + uploadbutton.submit(); + localUrlBox.val(''); + return; + } + // insert remote image + var url = K.trim(urlBox.val()), + width = widthBox.val(), + height = heightBox.val(), + title = titleBox.val(), + align = ''; + alignBox.each(function() { + if (this.checked) { + align = this.value; + return false; + } + }); + if (url == 'http://' || K.invalidUrl(url)) { + K.options.errorMsgHandler(self.lang('invalidUrl'), "error"); + urlBox[0].focus(); + return; + } + if (!/^\d*$/.test(width)) { + K.options.errorMsgHandler(self.lang('invalidWidth'), "error"); + widthBox[0].focus(); + return; + } + if (!/^\d*$/.test(height)) { + K.options.errorMsgHandler(self.lang('invalidHeight'), "error"); + heightBox[0].focus(); + return; + } + clickFn.call(self, url, title, width, height, 0, align); + } + }, + beforeRemove : function() { + viewServerBtn.unbind(); + widthBox.unbind(); + heightBox.unbind(); + refreshBtn.unbind(); + } + }), + div = dialog.div; + + var urlBox = K('[name="url"]', div), + localUrlBox = K('[name="localUrl"]', div), + viewServerBtn = K('[name="viewServer"]', div), + widthBox = K('.tab1 [name="width"]', div), + heightBox = K('.tab1 [name="height"]', div), + refreshBtn = K('.ke-refresh-btn', div), + titleBox = K('.tab1 [name="title"]', div), + alignBox = K('.tab1 [name="align"]', div); + + var tabs; + if (showRemote && showLocal) { + tabs = K.tabs({ + src : K('.tabs', div), + afterSelect : function(i) {} + }); + tabs.add({ + title : lang.remoteImage, + panel : K('.tab1', div) + }); + tabs.add({ + title : lang.localImage, + panel : K('.tab2', div) + }); + tabs.select(tabIndex); + } else if (showRemote) { + K('.tab1', div).show(); + } else if (showLocal) { + K('.tab2', div).show(); + } + + var uploadbutton = K.uploadbutton({ + button : K('.ke-upload-button', div)[0], + fieldName : filePostName, + form : K('.ke-form', div), + target : target, + width: 60, + afterUpload : function(data) { + + dialog.hideLoading(); + if (data.code == "000") { + + K.options.errorMsgHandler(self.lang('uploadSuccess'), "ok"); + + var url = data.data.url; + if (formatUploadUrl) { + url = K.formatUrl(url, 'absolute'); + } + if (!fillDescAfterUploadImage) { + clickFn.call(self, url, data.title, data.width, data.height, data.border, data.align); + } else { + K(".ke-dialog-row ke-clearfix #remoteUrl", div).val(url); + K(".ke-tabs-li", div)[0].click(); + K(".ke-refresh-btn", div).click(); + } + } else { + K.options.errorMsgHandler(data.message, "error"); + } + }, + afterError : function(html) { + dialog.hideLoading(); + self.errorDialog(html); + } + }); + uploadbutton.fileBox.change(function(e) { + localUrlBox.val(uploadbutton.fileBox.val()); + }); + if (allowFileManager) { + viewServerBtn.click(function(e) { + self.loadPlugin('filemanager', function() { + self.plugin.filemanagerDialog({ + dirName : 'image', + clickFn : function(url) { + K('[name="url"]', div).val(url); + if (self.afterSelectFile) { + self.afterSelectFile.call(self, url); + } + } + }); + }); + }); + } else { + viewServerBtn.hide(); + } + var originalWidth = 0, originalHeight = 0; + function setSize(width, height) { + widthBox.val(width); + heightBox.val(height); + originalWidth = width; + originalHeight = height; + } + refreshBtn.click(function(e) { + var tempImg = K('', document).css({ + position : 'absolute', + visibility : 'hidden', + top : 0, + left : '-1000px' + }); + tempImg.bind('load', function() { + setSize(tempImg.width(), tempImg.height()); + tempImg.remove(); + }); + K(document.body).append(tempImg); + }); + widthBox.change(function(e) { + if (originalWidth > 0) { + heightBox.val(Math.round(originalHeight / originalWidth * parseInt(this.value, 10))); + } + }); + heightBox.change(function(e) { + if (originalHeight > 0) { + widthBox.val(Math.round(originalWidth / originalHeight * parseInt(this.value, 10))); + } + }); + urlBox.val(options.imageUrl); + setSize(options.imageWidth, options.imageHeight); + titleBox.val(options.imageTitle); + alignBox.each(function() { + if (this.value === options.imageAlign) { + this.checked = true; + return false; + } + }); + if (showRemote && tabIndex === 0) { + urlBox[0].focus(); + urlBox[0].select(); + } + return dialog; + }; + self.plugin.image = { + edit : function() { + var img = self.plugin.getSelectedImage(); + self.plugin.imageDialog({ + imageUrl : img ? img.attr('data-ke-src') : 'http://', + imageWidth : img ? img.width() : '', + imageHeight : img ? img.height() : '', + imageTitle : img ? img.attr('title') : '', + imageAlign : img ? img.attr('align') : '', + showRemote : allowImageRemote, + showLocal : allowImageUpload, + tabIndex: img ? 0 : imageTabIndex, + clickFn : function(url, title, width, height, border, align) { + if (img) { + img.attr('src', url); + img.attr('data-ke-src', url); + img.attr('width', width); + img.attr('height', height); + img.attr('title', title); + img.attr('align', align); + img.attr('alt', title); + } else { + self.exec('insertimage', url, title, width, height, border, align); + } + // Bugfix: [Firefox] 上传图片后,总是出现正在加载的样式,需要延迟执行hideDialog + setTimeout(function() { + self.hideDialog().focus(); + }, 0); + } + }); + }, + 'delete' : function() { + var target = self.plugin.getSelectedImage(); + if (target.parent().name == 'a') { + target = target.parent(); + } + target.remove(); + // [IE] 删除图片后立即点击图片按钮出错 + self.addBookmark(); + } + }; + self.clickToolbar(name, self.plugin.image.edit); +}); diff --git a/tools/NKeditor/plugins/image/images/align_left.gif b/tools/NKeditor/plugins/image/images/align_left.gif new file mode 100644 index 00000000..ab17f567 Binary files /dev/null and b/tools/NKeditor/plugins/image/images/align_left.gif differ diff --git a/tools/NKeditor/plugins/image/images/align_right.gif b/tools/NKeditor/plugins/image/images/align_right.gif new file mode 100644 index 00000000..e8ebe6a6 Binary files /dev/null and b/tools/NKeditor/plugins/image/images/align_right.gif differ diff --git a/tools/NKeditor/plugins/image/images/align_top.gif b/tools/NKeditor/plugins/image/images/align_top.gif new file mode 100644 index 00000000..d8826a5b Binary files /dev/null and b/tools/NKeditor/plugins/image/images/align_top.gif differ diff --git a/tools/NKeditor/plugins/image/images/refresh.png b/tools/NKeditor/plugins/image/images/refresh.png new file mode 100644 index 00000000..77e12d1c Binary files /dev/null and b/tools/NKeditor/plugins/image/images/refresh.png differ diff --git a/tools/NKeditor/plugins/insertfile/insertfile.js b/tools/NKeditor/plugins/insertfile/insertfile.js new file mode 100644 index 00000000..12d6e278 --- /dev/null +++ b/tools/NKeditor/plugins/insertfile/insertfile.js @@ -0,0 +1,141 @@ +/******************************************************************************* +* KindEditor - WYSIWYG HTML Editor for Internet +* Copyright (C) 2006-2011 kindsoft.net +* +* @author Roddy +* @site http://www.kindsoft.net/ +* @licence http://www.kindsoft.net/license.php +*******************************************************************************/ + +KindEditor.plugin('insertfile', function(K) { + var self = this, name = 'insertfile', + allowFileUpload = K.undef(self.allowFileUpload, true), + allowFileManager = K.undef(self.allowFileManager, false), + formatUploadUrl = K.undef(self.formatUploadUrl, true), + uploadJson = K.undef(self.uploadJson, self.basePath + 'php/upload_json.php'), + extraParams = K.undef(self.extraFileUploadParams, {}), + filePostName = K.undef(self.filePostName, 'imgFile'), + lang = self.lang(name + '.'); + self.plugin.fileDialog = function(options) { + var fileUrl = K.undef(options.fileUrl, 'http://'), + fileTitle = K.undef(options.fileTitle, ''), + clickFn = options.clickFn; + var html = [ + '
        ', + '
        ', + '', + '
        ', + '  ', + '  ', + '', + '', + '', + '
        ', + '
        ', + //title + '
        ', + '', + '
        ', + '
        ', + '
        ', + '
        ', + //form end + '', + '
        ' + ].join(''); + var dialog = self.createDialog({ + name : name, + width : 450, + title : self.lang(name), + body : html, + yesBtn : { + name : self.lang('yes'), + click : function(e) { + var url = K.trim(urlBox.val()), + title = titleBox.val(); + if (url == 'http://' || K.invalidUrl(url)) { + K.options.errorMsgHandler(self.lang('invalidUrl'), "error"); + urlBox[0].focus(); + return; + } + if (K.trim(title) === '') { + title = url; + } + clickFn.call(self, url, title); + } + } + }), + div = dialog.div; + + var urlBox = K('[name="url"]', div), + viewServerBtn = K('[name="viewServer"]', div), + titleBox = K('[name="title"]', div); + + if (allowFileUpload) { + var uploadbutton = K.uploadbutton({ + button : K('.ke-upload-button', div)[0], + fieldName : filePostName, + url : K.addParam(uploadJson, 'fileType=file'), + extraParams : extraParams, + afterUpload : function(data) { + dialog.hideLoading(); + if (data.code === "000") { + var url = data.data.url; + if (formatUploadUrl) { + url = K.formatUrl(url, 'absolute'); + } + urlBox.val(url); + if (self.afterUpload) { + self.afterUpload.call(self, url, data, name); + } + K.options.errorMsgHandler(self.lang('uploadSuccess'), "ok"); + } else { + K.options.errorMsgHandler(data.message, "error"); + } + }, + afterError : function(html) { + dialog.hideLoading(); + self.errorDialog(html); + } + }); + uploadbutton.fileBox.change(function(e) { + dialog.showLoading(self.lang('uploadLoading')); + uploadbutton.submit(); + }); + } else { + K('.ke-upload-button', div).hide(); + } + if (allowFileManager) { + viewServerBtn.click(function(e) { + self.loadPlugin('filemanager', function() { + self.plugin.filemanagerDialog({ + viewType : 'LIST', + dirName : 'file', + clickFn : function(url) { + //console.log(url); + K('[name="url"]', div).val(url); + if (self.afterSelectFile) { + self.afterSelectFile.call(self, url); + } + } + }); + }); + }); + } else { + K("#keUrl").css("width", "250px"); + viewServerBtn.hide(); + } + urlBox.val(fileUrl); + titleBox.val(fileTitle); + urlBox[0].focus(); + urlBox[0].select(); + }; + self.clickToolbar(name, function() { + self.plugin.fileDialog({ + clickFn : function(url, title) { + var html = '' + title + ''; + self.insertHtml(html).hideDialog().focus(); + } + }); + }); +}); diff --git a/tools/NKeditor/plugins/lineheight/lineheight.js b/tools/NKeditor/plugins/lineheight/lineheight.js new file mode 100644 index 00000000..ae679d78 --- /dev/null +++ b/tools/NKeditor/plugins/lineheight/lineheight.js @@ -0,0 +1,38 @@ +/******************************************************************************* +* KindEditor - WYSIWYG HTML Editor for Internet +* Copyright (C) 2006-2011 kindsoft.net +* +* @author Roddy +* @site http://www.kindsoft.net/ +* @licence http://www.kindsoft.net/license.php +*******************************************************************************/ + +KindEditor.plugin('lineheight', function(K) { + var self = this, name = 'lineheight', lang = self.lang(name + '.'); + self.clickToolbar(name, function() { + var curVal = '', commonNode = self.cmd.commonNode({'*' : '.line-height'}); + if (commonNode) { + curVal = commonNode.css('line-height'); + } + var menu = self.createMenu({ + name : name, + width : 150 + }); + K.each(lang.lineHeight, function(i, row) { + K.each(row, function(key, val) { + menu.addItem({ + title : val, + checked : curVal === key, + click : function() { + self.cmd.toggle('', { + span : '.line-height=' + key + }); + self.updateState(); + self.addBookmark(); + self.hideMenu(); + } + }); + }); + }); + }); +}); diff --git a/tools/NKeditor/plugins/link/link.js b/tools/NKeditor/plugins/link/link.js new file mode 100644 index 00000000..9a42fbda --- /dev/null +++ b/tools/NKeditor/plugins/link/link.js @@ -0,0 +1,71 @@ +/******************************************************************************* +* KindEditor - WYSIWYG HTML Editor for Internet +* Copyright (C) 2006-2011 kindsoft.net +* +* @author Roddy +* @site http://www.kindsoft.net/ +* @licence http://www.kindsoft.net/license.php +*******************************************************************************/ + +KindEditor.plugin('link', function(K) { + var self = this, name = 'link'; + self.plugin.link = { + edit : function() { + var lang = self.lang(name + '.'), + html = ['
        ', + //url + '
        ', + '', + '
        ', + '', + '
        ', + '
        ', + //type + '
        ', + '', + '
        ', + '', + '
        ', + '
        ', + '
        '].join(""), + dialog = self.createDialog({ + name : name, + width : 450, + title : self.lang(name), + body : html, + yesBtn : { + name : self.lang('yes'), + click : function(e) { + var url = K.trim(urlBox.val()); + if (url == 'http://' || K.invalidUrl(url)) { + K.options.errorMsgHandler(self.lang('invalidUrl'), "error"); + urlBox[0].focus(); + return; + } + self.exec('createlink', url, typeBox.val()).hideDialog().focus(); + } + } + }), + div = dialog.div, + urlBox = K('input[name="url"]', div), + typeBox = K('select[name="type"]', div); + urlBox.val('http://'); + typeBox[0].options[0] = new Option(lang.newWindow, '_blank'); + typeBox[0].options[1] = new Option(lang.selfWindow, ''); + self.cmd.selection(); + var a = self.plugin.getSelectedLink(); + if (a) { + self.cmd.range.selectNode(a[0]); + self.cmd.select(); + urlBox.val(a.attr('data-ke-src')); + typeBox.val(a.attr('target')); + } + urlBox[0].focus(); + urlBox[0].select(); + }, + 'delete' : function() { + self.exec('unlink', null); + } + }; + self.clickToolbar(name, self.plugin.link.edit); +}); diff --git a/tools/NKeditor/plugins/map/map.html b/tools/NKeditor/plugins/map/map.html new file mode 100644 index 00000000..fb275550 --- /dev/null +++ b/tools/NKeditor/plugins/map/map.html @@ -0,0 +1,57 @@ + + + + + + + + + +
        + + \ No newline at end of file diff --git a/tools/NKeditor/plugins/map/map.js b/tools/NKeditor/plugins/map/map.js new file mode 100644 index 00000000..52908752 --- /dev/null +++ b/tools/NKeditor/plugins/map/map.js @@ -0,0 +1,137 @@ +/******************************************************************************* +* KindEditor - WYSIWYG HTML Editor for Internet +* Copyright (C) 2006-2011 kindsoft.net +* +* @author Roddy +* @site http://www.kindsoft.net/ +* @licence http://www.kindsoft.net/license.php +*******************************************************************************/ + +// Google Maps: http://code.google.com/apis/maps/index.html + +KindEditor.plugin('map', function(K) { + var self = this, name = 'map', lang = self.lang(name + '.'); + self.clickToolbar(name, function() { + var html = ['
        ', + '
        ', + lang.address + ' ', + '', + '', + '', + '
        ', + '
        ', + '
        '].join(''); + var dialog = self.createDialog({ + name : name, + width : 600, + title : self.lang(name), + body : html, + yesBtn : { + name : self.lang('yes'), + click : function(e) { + var geocoder = win.geocoder, + map = win.map, + center = map.getCenter().lat() + ',' + map.getCenter().lng(), + zoom = map.getZoom(), + maptype = map.getMapTypeId(), + url = 'http://maps.googleapis.com/maps/api/staticmap'; + url += '?center=' + encodeURIComponent(center); + url += '&zoom=' + encodeURIComponent(zoom); + url += '&size=558x360'; + url += '&maptype=' + encodeURIComponent(maptype); + url += '&markers=' + encodeURIComponent(center); + url += '&language=' + self.langType; + url += '&sensor=false'; + self.exec('insertimage', url).hideDialog().focus(); + } + }, + beforeRemove : function() { + searchBtn.remove(); + if (doc) { + doc.write(''); + } + iframe.remove(); + } + }); + var div = dialog.div, + addressBox = K('[name="address"]', div), + searchBtn = K('[name="searchBtn"]', div), + win, doc; + var iframeHtml = ['', + '', + '', + '', + '', + '', + '', + '
        ', + ''].join('\n'); + // TODO:用doc.write(iframeHtml)方式加载时,在IE6上第一次加载报错,暂时使用src方式 + var iframe = K(''); + function ready() { + win = iframe[0].contentWindow; + doc = K.iframeDoc(iframe); + //doc.open(); + //doc.write(iframeHtml); + //doc.close(); + } + iframe.bind('load', function() { + iframe.unbind('load'); + if (K.IE) { + ready(); + } else { + setTimeout(ready, 0); + } + }); + K('.ke-map', div).replaceWith(iframe); + // search map + searchBtn.click(function() { + win.search(addressBox.val()); + }); + }); +}); diff --git a/tools/NKeditor/plugins/media/media.js b/tools/NKeditor/plugins/media/media.js new file mode 100644 index 00000000..307c6550 --- /dev/null +++ b/tools/NKeditor/plugins/media/media.js @@ -0,0 +1,177 @@ +/******************************************************************************* +* KindEditor - WYSIWYG HTML Editor for Internet +* Copyright (C) 2006-2011 kindsoft.net +* +* @author Roddy +* @site http://www.kindsoft.net/ +* @licence http://www.kindsoft.net/license.php +*******************************************************************************/ + +KindEditor.plugin('media', function(K) { + var self = this, name = 'media', lang = self.lang(name + '.'), + allowMediaUpload = K.undef(self.allowMediaUpload, false), + allowFileManager = K.undef(self.allowFileManager, false), + formatUploadUrl = K.undef(self.formatUploadUrl, true), + extraParams = K.undef(self.extraFileUploadParams, {}), + filePostName = K.undef(self.filePostName, 'imgFile'), + uploadJson = K.undef(self.uploadJson, self.basePath + 'php/upload_json.php'); + + self.plugin.media = { + edit : function() { + var html = [ + '
        ', + //url + '
        ', + '', + '
        ', + '  ', + '  ', + '', + '', + '', + '
        ', + '
        ', + //width + '
        ', + '', + '
        ', + '', + '
        ', + '
        ', + //height + '
        ', + '', + '
        ', + '', + '
        ', + '
        ', + //autostart + '
        ', + '', + '
        ', + ' ', + '
        ', + '
        ', + '
        ' + ].join(''); + var dialog = self.createDialog({ + name : name, + width : 450, + height : 260, + title : self.lang(name), + body : html, + yesBtn : { + name : self.lang('yes'), + click : function(e) { + var url = K.trim(urlBox.val()), + width = widthBox.val(), + height = heightBox.val(); + if (url == 'http://' || K.invalidUrl(url)) { + K.options.errorMsgHandler(self.lang('invalidUrl'), "error"); + urlBox[0].focus(); + return; + } + if (!/^\d*$/.test(width)) { + K.options.errorMsgHandler(self.lang('invalidWidth'), "error"); + widthBox[0].focus(); + return; + } + if (!/^\d*$/.test(height)) { + K.options.errorMsgHandler(self.lang('invalidHeight'), "error"); + heightBox[0].focus(); + return; + } + var html = K.mediaImg(self.themesPath + 'common/blank.gif', { + src : url, + type : K.mediaType(url), + width : width, + height : height, + autostart : autostartBox[0].checked ? 'true' : 'false', + loop : 'true' + }); + self.insertHtml(html).hideDialog().focus(); + } + } + }), + div = dialog.div, + urlBox = K('[name="url"]', div), + viewServerBtn = K('[name="viewServer"]', div), + widthBox = K('[name="width"]', div), + heightBox = K('[name="height"]', div), + autostartBox = K('[name="autostart"]', div); + urlBox.val('http://'); + + if (allowMediaUpload) { + var uploadbutton = K.uploadbutton({ + button : K('.ke-upload-button', div)[0], + fieldName : filePostName, + extraParams : extraParams, + url : K.addParam(uploadJson, 'fileType=media'), + afterUpload : function(data) { + dialog.hideLoading(); + if (data.code == "000") { + var url = data.data.url; + if (formatUploadUrl) { + url = K.formatUrl(url, 'absolute'); + } + urlBox.val(url); + + if (self.afterUpload) { + self.afterUpload.call(self, url, data, name); + } + K.options.errorMsgHandler(self.lang('uploadSuccess'), "ok"); + } else { + K.options.errorMsgHandler(data.message, "error", "error"); + } + }, + afterError : function(html) { + dialog.hideLoading(); + self.errorDialog(html); + } + }); + uploadbutton.fileBox.change(function(e) { + dialog.showLoading(self.lang('uploadLoading')); + uploadbutton.submit(); + }); + } else { + K('.ke-upload-button', div).hide(); + } + + if (allowMediaUpload && allowFileManager) { + viewServerBtn.click(function(e) { + self.loadPlugin('filemanager', function() { + self.plugin.filemanagerDialog({ + dirName : 'media', + clickFn : function(url) { + K('[name="url"]', div).val(url); + if (self.afterSelectFile) { + self.afterSelectFile.call(self, url); + } + } + }); + }); + }); + } else { + K("#keUrl").css("width", "280px"); + viewServerBtn.hide(); + } + + var img = self.plugin.getSelectedMedia(); + if (img) { + var attrs = K.mediaAttrs(img.attr('data-ke-tag')); + urlBox.val(attrs.src); + widthBox.val(K.removeUnit(img.css('width')) || attrs.width || 0); + heightBox.val(K.removeUnit(img.css('height')) || attrs.height || 0); + autostartBox[0].checked = (attrs.autostart === 'true'); + } + urlBox[0].focus(); + urlBox[0].select(); + }, + 'delete' : function() { + self.plugin.getSelectedMedia().remove(); + // [IE] 删除图片后立即点击图片按钮出错 + self.addBookmark(); + } + }; + self.clickToolbar(name, self.plugin.media.edit); +}); diff --git a/tools/NKeditor/plugins/multiimage/BUpload.js b/tools/NKeditor/plugins/multiimage/BUpload.js new file mode 100644 index 00000000..200d0f88 --- /dev/null +++ b/tools/NKeditor/plugins/multiimage/BUpload.js @@ -0,0 +1,630 @@ +/** + * HTML5上传插件 + * @site https://git.oschina.net/blackfox/ajaxUpload + * @author yangjian + * @version 1.0.1 + */ +(function($) { + + //判断浏览器是否支持html5 + if ( typeof FormData == "undefined" ) + throw new Error("您当前的浏览器不支持HTML5,请先升级浏览器才能使用该上传插件!"); + + //image crop + $.fn.imageCrop = function(__width, __height) { + $(this).on("load", function () { + + var width, height, left, top; + var orgRate = this.width/this.height; + var cropRate = __width/__height; + if ( orgRate >= cropRate ) { + height = __height; + width = __width * orgRate; + top = 0; + left = (width - __width)/2; + } else { + width = __width; + height = __height / orgRate; + left = 0; + //top = (height - __height)/2; + top = 0; + } + $(this).css({ + "position" : "absolute", + top : -top + "px", + left : -left + "px", + width : width + "px", + height : height + "px" + }); + }); + } + + //make element draggable + $.fn.draggable = function(options) { + var defaults = { + handler : null + } + options = $.extend(defaults, options); + var __self = this; + $(options.handler).mousedown(function(e) { + var offsetLeft = e.pageX - $(__self).position().left; + var offsetTop = e.pageY - $(__self).position().top; + $(document).mousemove(function(e) { + //清除拖动鼠标的时候选择文本 + window.getSelection ? window.getSelection().removeAllRanges():document.selection.empty(); + $(__self).css({ + 'top' : e.pageY-offsetTop + 'px', + 'left' : e.pageX-offsetLeft + 'px' + }); + }); + + }).mouseup(function() { + $(document).unbind('mousemove'); + }); + + } + + if ( Array.prototype.remove == undefined ) { + Array.prototype.remove = function(item) { + for ( var i = 0; i < this.length; i++ ) { + if ( this[i] == item ) { + this.splice(i, 1); + break; + } + } + } + } + if ( Array.prototype.uinque == undefined ) { + Array.prototype.uinque = function() { + var result = [], hash = {}; + for ( var i = 0, item; (item = this[i]) != null; i++ ) { + if ( !hash[item] ) { + result.push(item); + hash[item] = true; + } + } + return result; + } + } + + window.BUpload = function(options) { + + options = $.extend({ + src : "src", + upload_url : null, + list_url : null, + data_type : "json", + top : 20, + fileType : "image", //文件类型,默认是图片,可选flash,media,file + max_filesize : 2048, //unit:KB + max_filenum : 20, + no_data_text : "(⊙o⊙)亲,没有多数据了。", + ext_allow : "jpg|png|gif|jpeg", + ext_refuse : "exe|txt", + extra_params : {}, + errorHandler : function(messsage, type) { + alert(messsage); + }, + callback : function(data) { + console.log(data); + } + }, options); + + //错误代码和提示消息 + var codeMessageMap = { + '000' : '文件上传成功', + '001' : '文件上传失败', + '003' : '文件大小超出限制', + '004' : '非法文件名后缀' + }; + + var mimeType = { + "3gpp":"audio/3gpp, video/3gpp", + "ac3":"audio/ac3", + "asf":"allpication/vnd.ms-asf", + "au":"audio/basic", + "css":"text/css", + "csv":"text/csv", + "doc":"application/msword", + "dot":"application/msword", + "dtd":"application/xml-dtd", + "dwg":"image/vnd.dwg", + "dxf":"image/vnd.dxf", + "gif":"image/gif", + "htm":"text/html", + "html":"text/html", + "jp2":"image/jp2", + "jpe":"image/jpeg", + "jpeg":"image/jpeg", + "jpg":"image/jpeg", + "js":"text/javascript, application/javascript", + "json":"application/json", + "mp2":"audio/mpeg, video/mpeg", + "mp3":"audio/mpeg", + "mp4":"audio/mp4, video/mp4", + "mpeg":"video/mpeg", + "mpg":"video/mpeg", + "mpp":"application/vnd.ms-project", + "ogg":"application/ogg, audio/ogg", + "pdf":"application/pdf", + "png":"image/png", + "pot":"application/vnd.ms-powerpoint", + "pps":"application/vnd.ms-powerpoint", + "ppt":"application/vnd.ms-powerpoint", + "rtf":"application/rtf, text/rtf", + "svf":"image/vnd.svf", + "tif":"image/tiff", + "tiff":"image/tiff", + "txt":"text/plain", + "wdb":"application/vnd.ms-works", + "wps":"application/vnd.ms-works", + "xhtml":"application/xhtml+xml", + "xlc":"application/vnd.ms-excel", + "xlm":"application/vnd.ms-excel", + "xls":"application/vnd.ms-excel", + "xlt":"application/vnd.ms-excel", + "xlw":"application/vnd.ms-excel", + "xml":"text/xml, application/xml", + "zip":"aplication/zip", + "xlsx":"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet" + } + + var o = {}; + o.dialog = null; + o.todoList = new Array(); //the file queue to be uploaded + o.uploadSuccessNum = 0; //已经上传成功的图片数量 + o.selectedList = new Array(); //the file queue upload successfully + o.addedFileNumber = 0; //the numbers of files that has added + o.totalFilesize = 0; //total file size + o.uploadLock = false; //upload thread lock + o.page = 1; //服务器图片列表页码 + o.marker = null, //七牛云上传的分页标识 + o.noRecord = false; + var dialogSCode = Math.ceil(Math.random() * 1000000000000); //对话框的令牌,如果创建多个BUpload上传对象用来保持唯一性 + + //close the dialog + o.close = function () { + o.dialog.remove(); + if (typeof options.close == 'function') { + options.close(); + } + } + + //create dialog + function createDialog() { + + var builder = new StringBuilder(); + builder.append('
        '); + builder.append('
        '+options.lang.title+'
        '); + builder.append('
        '+options.lang.localUpload+''); + if ( options.list_url != null ) { + builder.append(''+options.lang.fileServer+''); + } + builder.append('
        '); + builder.append('
        '+options.lang.selectFile+'
        '); + builder.append('
          '); + builder.append('
          '+options.lang.confirmBtnText+''); + builder.append(''+options.lang.cancelBtnText+'
          '); + + o.dialog = $(builder.toString()); + $("body").append(o.dialog); + if (options.top == 0) { + options.top = ($(window).height() - o.dialog.height())/2; + } + o.dialog.css({ + left : ($(window).width() - o.dialog.width())/2 + "px", + top : options.top + "px" + }); + //给对话框添加拖拽事件 + o.dialog.draggable({handler : o.dialog.find(".ued_title")}) + + } + + //绑定元素事件 + function bindEvent() { + + //选项卡事件 + G(".tab").on("click", function() { + var tab = $(this).attr("tab"); + G(".tab-panel").hide(); + G("."+tab).show(); + G(".tab").removeClass("focus"); + $(this).addClass("focus"); + }); + + //关闭对话框 + G(".close_btn").on("click", function() { + o.close(); + }); + + //选择文件事件 + G(".webuploader-element-invisible").on("change", function() { + addFiles(this); + }); + + //弹出上传文件选择框 + G(".image-select").on("click", function() { + G(".webuploader-element-invisible").trigger("click"); + }); + G(".btn-continue-add").on("click", function() { + G(".webuploader-element-invisible").trigger("click"); + }); + + //开始上传按钮事件 + G(".btn-start-upload").on("click", function() { + if ( o.uploadLock ) return; + + if ( o.todoList.length == 0 ) { + options.errorHandler(options.lang.noFileAdded, "error"); + return false; + } + $(this).addClass("disabled").text(options.lang.uploading); + uploadFile(o.todoList.shift()); + }); + + //点击确认|取消按钮事件 + G(".btn-confirm").on("click", function() { + if ( o.todoList.length > 0 ) { + options.errorHandler(options.lang.fileNotUpload, "error"); + return false; + } + if (o.selectedList.length == 0) { + options.errorHandler(options.lang.noFileSelected, "error"); + return false; + } + options.callback(o.selectedList); + o.close(); + + }); + G(".btn-cancel").on("click", function() { + o.close(); + }); + + //从服务器加载文件 + G(".tab-online").on("click", function() { + + if ( G(".imagelist .list").children().length == 0 ) { + loadFilesFromServer() + } + + }); + + //当滚动条滚到底部时自动去加载图片 + G(".imagelist").on("scroll", function() { + + if ( this.scrollTop + this.clientHeight >= this.scrollHeight ) { + loadFilesFromServer(); + } + }); + } + + //add file to upload list + function addFiles(input) { + + var files = input.files; + var totalFileNum = o.todoList.length + o.uploadSuccessNum + files.length; //本次上传文件总数 + for ( var i = o.addedFileNumber; i < o.addedFileNumber+files.length; i++ ) { + + if ( totalFileNum > options.max_filenum ) { + options.errorHandler(KindEditor.tmpl(options.lang.uploadLimit, {uploadLimit: options.max_filenum}), "error"); + return; + } + var builder = new StringBuilder(); + var tempFile = files[i- o.addedFileNumber]; + builder.append('
        • '); + + //如果上传的不是图片,则通过判断文件后缀来显示不同的图标 + var extension = getFileExt(tempFile.name); + if ( extension == '' ) extension = "default"; + extension = extension.toLowerCase(); + if ( "jpg|jpeg|gif|png|bmp".indexOf(extension) == -1 ) { + builder.append(''); + } else { + builder.append(''); + } + + builder.append('
          '+options.lang.remove+''+options.lang.rotateRight+''); + builder.append(''+options.lang.rotateLeft+'
          '); + builder.append('
        • '); + + var $image = $(builder.toString()); + //bind onelele event + $image.find(".remove").on("click", function() { + $(this).parents("li").remove(); //remove element + //remove file from todoList + var index = $(this).attr("index"); + for ( var i = 0; i < o.todoList.length; i++ ) { + if ( o.todoList[i].index == index ) { + o.totalFilesize -= o.todoList[i].file.size; + updateInfoText(o.uploadSuccessNum + o.todoList.length-1, o.totalFilesize); + o.todoList.splice(i, 1); + break; + } + } + if (G(".filelist li").length == 0) { + G(".image-list-box").hide(); + G(".wra_pla").show(); + } + }); + $image.on("mouseover", function() { + $(this).find(".file-opt-box").show(); + }).on("mouseout", function() { + $(this).find(".file-opt-box").hide(); + }); + + G(".wra_pla").hide(); + G(".image-list-box").show(); + G(".filelist").append($image); + + o.todoList.push({index:i, file:tempFile}); + o.totalFilesize += tempFile.size; + + //console.log(tempFile); + } + o.addedFileNumber += files.length; + updateInfoText(o.uploadSuccessNum + o.todoList.length, o.totalFilesize); + + //缩放并裁剪图片 + $(".imgWrap img").imageCrop(113,113); + + } + + /** + * upload file function(文件上传主函数) + * @param node 数据节点 + */ + function uploadFile(node) { + + if ( !fileCheckHandler(node) ) { + uploadNextFile(); //skip the file and upload the next file + return; + } + + // prepare XMLHttpRequest + var xhr = new XMLHttpRequest(); + xhr.open('POST', options.upload_url); + //upload successfully + xhr.addEventListener('load',function(e) { + + if ( options.data_type == "json" ) { + //console.log(e); + var data = $.parseJSON(e.target.responseText); + if ( data.code == "000" ) { + o.selectedList.push(data.data.url); //添加文件到上传文件列表 + o.uploadSuccessNum++; + $("#img-comtainer-"+dialogSCode+ node.index).find(".file-opt-box").remove(); + $("#img-comtainer-"+dialogSCode+ node.index).find(".progress").remove(); + $("#img-comtainer-"+dialogSCode+ node.index).find(".success").show(); + } else { + __error__(codeMessageMap[data.code], node); + } + } + + }, false); + + // file upload complete + xhr.addEventListener('loadend', function () { + uploadNextFile(); //upload the next file + }, false); + + //上传失败 + xhr.addEventListener('error', function() { + __error__(options.lang.uploadFail, node); + }, false); + + xhr.upload.addEventListener('progress', function(e) { + updateProgress(e, node); + }, false); + + // prepare FormData + var formData = new FormData(); + formData.append(options.src, node.file); + // add extra params + for(var k in options.extra_params) { + formData.append(k, options.extra_params[k]); + } + xhr.send(formData); + + } + + //upload next file(上传下一个文件) + function uploadNextFile() { + + if ( o.todoList.length ) { + var nextFile = o.todoList.shift(); + uploadFile(nextFile); + } else { + o.uploadLock = false; //release the upload lock + G(".btn-start-upload").removeClass("disabled").text(options.lang.startUpload); + //console.log(o.selectedList); + } + } + + // progress handler(文件上传进度控制) + function updateProgress(e, node) { + if ( e.lengthComputable ) { + $("#img-comtainer-"+dialogSCode+ node.index).find(".progress span").css({"width" : (e.loaded/e.total)*100+'%', "display":"block"}); + } + } + + //update file info text + function updateInfoText(filenum, filesize) { + var text = KindEditor.tmpl(options.lang.uploadDesc, {numSelect:filenum, totalSize:formatFileSize(filesize), numLeft:(options.max_filenum - filenum)}); + G(".info").text(text); + } + + //format file size(格式化文件大小) + function formatFileSize(size) { + + if ( size/1048576 > 1 ) { + return (size/1048576).toFixed(2)+"MB"; + } else { + return (size/1024).toFixed(2)+"KB"; + } + + } + + //file check handler(文件检测处理函数) + function fileCheckHandler(node) { + + //检查文件大小 + var maxsize = options.max_filesize * 1024; + if ( maxsize > 0 && node.file.size > maxsize ) { + __error__(KindEditor.tmpl(options.lang.sizeLimit, {sizeLimit:options.max_filesize}), node); + return false; + } + + //检查文件后缀名 + var ext = getFileExt(node.file.name); + if ( ext && options.ext_allow.indexOf(ext) != -1 + && options.ext_refuse.indexOf(ext) == -1 ) { + return true; + } else { + __error__(KindEditor.tmpl(options.lang.invalidExt, {invalidExt:ext}), node); + return false; + } + + } + + //获取文件后缀名 + function getFileExt(filename) { + if ( !filename ) return false; + var position = filename.lastIndexOf('.') + if ( position != -1 ) { + return filename.substr(position+1).toLowerCase(); + } + return false; + } + + //获取可接受的文件后缀 + function getAccept() { + var extensions = options.ext_allow.split("|"); + var accept = []; + $.each(extensions, function(idx, item) { + accept.push(mimeType[item]); + }); + if ( accept.length > 1 ) { + return accept.uinque().join(","); + } + return "*"; + } + + //显示上传错误信息 + function __error__(message, node) { + G("#img-comtainer-"+dialogSCode+ node.index).find(".error").show().text(message); + } + + //query + function G(query) { + return o.dialog.find(query); + } + + //从服务器上获取图片地址 + function loadFilesFromServer() { + if ( !options.list_url ) { + G(".online .no-data").html(''+options.lang.noListUrl+'').show(); + return false; + } + if ( o.noRecord ) return false; + + G(".loading-icon").show(); //显示加载图标 + $.get(options.list_url, { + page : o.page, + marker : o.marker, + fileType : options.fileType, + }, function(res) { + + G(".loading-icon").hide(); //隐藏加载图标 + if ( res.code == "000" ) { + + if (!res.data[0]) { //没有加载到数据 + G(".online .no-data").text(options.lang.noDataText).show(); + return; + } + o.marker = res.extra; //存储marker + o.page++; + appendFiles(res.data, "online"); + } else { + G(".online .no-data").text(options.lang.noDataText).show(); + o.noRecord = true; + } + + }, "json"); + } + + //追加元素到图片列表 + function appendFiles(data, module) { + + $.each(data, function(idx, item) { + + var builder = new StringBuilder(); + builder.append('
        • '); + var extension = getFileExt(item.thumbURL); + if ( extension == '' ) extension = "default"; + extension = extension.toLowerCase(); + //如果不是图片,则根据文件的后缀名去加载对应的缩略图 + var imgSize = item.width+'x'+item.height; //图片尺寸 + if ( "jpg|jpeg|gif|png|bmp".indexOf(extension) == -1 ) { + imgSize = formatFileSize(item.filesize); //如果是文件则显示文件大小 + builder.append(''); + } else { + builder.append(''); + } + + builder.append(''+imgSize+'
        • '); + var $image = $(builder.toString()); + + //绑定选择图片事件 + $image.find(".ic").on("click", function() { + var src = $(this).prev().data("src"); + var module = $(this).data("module"); + if ( $(this).hasClass("selected") ) { + $(this).removeClass("selected"); + } else { + $(this).addClass("selected"); + o.selectedList.push(src); + } + //console.log(o.selectedList); + }); + //裁剪显示图片 + $image.find("img").imageCrop(113, 113); + if ( module == "online" ) { + G(".imagelist .list").append($image); + } else if ( module == "search" ) { + G(".search-imagelist-box .search-list").append($image); + } + }); + + } + + //initialize dialog + createDialog(); + bindEvent(); + return o; + }; //end of JUpload + + //string builder + var StringBuilder = function() { + + var buffer = new Array(); + StringBuilder.prototype.append = function(str) { + buffer.push(str); + } + + StringBuilder.prototype.toString = function () { + return buffer.join(""); + } + + } + + +})(jQuery); \ No newline at end of file diff --git a/tools/NKeditor/plugins/multiimage/css/icons/aep.png b/tools/NKeditor/plugins/multiimage/css/icons/aep.png new file mode 100644 index 00000000..1ae4e956 Binary files /dev/null and b/tools/NKeditor/plugins/multiimage/css/icons/aep.png differ diff --git a/tools/NKeditor/plugins/multiimage/css/icons/asp.png b/tools/NKeditor/plugins/multiimage/css/icons/asp.png new file mode 100644 index 00000000..278c9bd5 Binary files /dev/null and b/tools/NKeditor/plugins/multiimage/css/icons/asp.png differ diff --git a/tools/NKeditor/plugins/multiimage/css/icons/avi.png b/tools/NKeditor/plugins/multiimage/css/icons/avi.png new file mode 100644 index 00000000..f3589939 Binary files /dev/null and b/tools/NKeditor/plugins/multiimage/css/icons/avi.png differ diff --git a/tools/NKeditor/plugins/multiimage/css/icons/c.png b/tools/NKeditor/plugins/multiimage/css/icons/c.png new file mode 100644 index 00000000..bdc1f780 Binary files /dev/null and b/tools/NKeditor/plugins/multiimage/css/icons/c.png differ diff --git a/tools/NKeditor/plugins/multiimage/css/icons/conf.png b/tools/NKeditor/plugins/multiimage/css/icons/conf.png new file mode 100644 index 00000000..ac9cf49b Binary files /dev/null and b/tools/NKeditor/plugins/multiimage/css/icons/conf.png differ diff --git a/tools/NKeditor/plugins/multiimage/css/icons/css.png b/tools/NKeditor/plugins/multiimage/css/icons/css.png new file mode 100644 index 00000000..84b9ebab Binary files /dev/null and b/tools/NKeditor/plugins/multiimage/css/icons/css.png differ diff --git a/tools/NKeditor/plugins/multiimage/css/icons/default.png b/tools/NKeditor/plugins/multiimage/css/icons/default.png new file mode 100644 index 00000000..1241cee2 Binary files /dev/null and b/tools/NKeditor/plugins/multiimage/css/icons/default.png differ diff --git a/tools/NKeditor/plugins/multiimage/css/icons/doc.png b/tools/NKeditor/plugins/multiimage/css/icons/doc.png new file mode 100644 index 00000000..6b827c66 Binary files /dev/null and b/tools/NKeditor/plugins/multiimage/css/icons/doc.png differ diff --git a/tools/NKeditor/plugins/multiimage/css/icons/eml.png b/tools/NKeditor/plugins/multiimage/css/icons/eml.png new file mode 100644 index 00000000..8edc0653 Binary files /dev/null and b/tools/NKeditor/plugins/multiimage/css/icons/eml.png differ diff --git a/tools/NKeditor/plugins/multiimage/css/icons/eps.png b/tools/NKeditor/plugins/multiimage/css/icons/eps.png new file mode 100644 index 00000000..0e6fb79c Binary files /dev/null and b/tools/NKeditor/plugins/multiimage/css/icons/eps.png differ diff --git a/tools/NKeditor/plugins/multiimage/css/icons/fla.png b/tools/NKeditor/plugins/multiimage/css/icons/fla.png new file mode 100644 index 00000000..767c56c3 Binary files /dev/null and b/tools/NKeditor/plugins/multiimage/css/icons/fla.png differ diff --git a/tools/NKeditor/plugins/multiimage/css/icons/htm.png b/tools/NKeditor/plugins/multiimage/css/icons/htm.png new file mode 100644 index 00000000..8dfb731c Binary files /dev/null and b/tools/NKeditor/plugins/multiimage/css/icons/htm.png differ diff --git a/tools/NKeditor/plugins/multiimage/css/icons/idn.png b/tools/NKeditor/plugins/multiimage/css/icons/idn.png new file mode 100644 index 00000000..3c83e99d Binary files /dev/null and b/tools/NKeditor/plugins/multiimage/css/icons/idn.png differ diff --git a/tools/NKeditor/plugins/multiimage/css/icons/ini.png b/tools/NKeditor/plugins/multiimage/css/icons/ini.png new file mode 100644 index 00000000..0449595e Binary files /dev/null and b/tools/NKeditor/plugins/multiimage/css/icons/ini.png differ diff --git a/tools/NKeditor/plugins/multiimage/css/icons/java.png b/tools/NKeditor/plugins/multiimage/css/icons/java.png new file mode 100644 index 00000000..cbd350ac Binary files /dev/null and b/tools/NKeditor/plugins/multiimage/css/icons/java.png differ diff --git a/tools/NKeditor/plugins/multiimage/css/icons/js.png b/tools/NKeditor/plugins/multiimage/css/icons/js.png new file mode 100644 index 00000000..f65b15d8 Binary files /dev/null and b/tools/NKeditor/plugins/multiimage/css/icons/js.png differ diff --git a/tools/NKeditor/plugins/multiimage/css/icons/jsf.png b/tools/NKeditor/plugins/multiimage/css/icons/jsf.png new file mode 100644 index 00000000..e551416a Binary files /dev/null and b/tools/NKeditor/plugins/multiimage/css/icons/jsf.png differ diff --git a/tools/NKeditor/plugins/multiimage/css/icons/markdown.png b/tools/NKeditor/plugins/multiimage/css/icons/markdown.png new file mode 100644 index 00000000..57e0870e Binary files /dev/null and b/tools/NKeditor/plugins/multiimage/css/icons/markdown.png differ diff --git a/tools/NKeditor/plugins/multiimage/css/icons/mdb.png b/tools/NKeditor/plugins/multiimage/css/icons/mdb.png new file mode 100644 index 00000000..56f037c4 Binary files /dev/null and b/tools/NKeditor/plugins/multiimage/css/icons/mdb.png differ diff --git a/tools/NKeditor/plugins/multiimage/css/icons/midi.png b/tools/NKeditor/plugins/multiimage/css/icons/midi.png new file mode 100644 index 00000000..7ff836a7 Binary files /dev/null and b/tools/NKeditor/plugins/multiimage/css/icons/midi.png differ diff --git a/tools/NKeditor/plugins/multiimage/css/icons/mov.png b/tools/NKeditor/plugins/multiimage/css/icons/mov.png new file mode 100644 index 00000000..8b5b776c Binary files /dev/null and b/tools/NKeditor/plugins/multiimage/css/icons/mov.png differ diff --git a/tools/NKeditor/plugins/multiimage/css/icons/mp3.png b/tools/NKeditor/plugins/multiimage/css/icons/mp3.png new file mode 100644 index 00000000..11f13adf Binary files /dev/null and b/tools/NKeditor/plugins/multiimage/css/icons/mp3.png differ diff --git a/tools/NKeditor/plugins/multiimage/css/icons/mpeg.png b/tools/NKeditor/plugins/multiimage/css/icons/mpeg.png new file mode 100644 index 00000000..eccb9fc4 Binary files /dev/null and b/tools/NKeditor/plugins/multiimage/css/icons/mpeg.png differ diff --git a/tools/NKeditor/plugins/multiimage/css/icons/pdf.png b/tools/NKeditor/plugins/multiimage/css/icons/pdf.png new file mode 100644 index 00000000..ca81a58d Binary files /dev/null and b/tools/NKeditor/plugins/multiimage/css/icons/pdf.png differ diff --git a/tools/NKeditor/plugins/multiimage/css/icons/php.png b/tools/NKeditor/plugins/multiimage/css/icons/php.png new file mode 100644 index 00000000..8c4a2c2b Binary files /dev/null and b/tools/NKeditor/plugins/multiimage/css/icons/php.png differ diff --git a/tools/NKeditor/plugins/multiimage/css/icons/ppt.png b/tools/NKeditor/plugins/multiimage/css/icons/ppt.png new file mode 100644 index 00000000..4b15ad6f Binary files /dev/null and b/tools/NKeditor/plugins/multiimage/css/icons/ppt.png differ diff --git a/tools/NKeditor/plugins/multiimage/css/icons/psd.png b/tools/NKeditor/plugins/multiimage/css/icons/psd.png new file mode 100644 index 00000000..a5f49e2c Binary files /dev/null and b/tools/NKeditor/plugins/multiimage/css/icons/psd.png differ diff --git a/tools/NKeditor/plugins/multiimage/css/icons/pst.png b/tools/NKeditor/plugins/multiimage/css/icons/pst.png new file mode 100644 index 00000000..fbe7fe5c Binary files /dev/null and b/tools/NKeditor/plugins/multiimage/css/icons/pst.png differ diff --git a/tools/NKeditor/plugins/multiimage/css/icons/pub.png b/tools/NKeditor/plugins/multiimage/css/icons/pub.png new file mode 100644 index 00000000..71a92c1c Binary files /dev/null and b/tools/NKeditor/plugins/multiimage/css/icons/pub.png differ diff --git a/tools/NKeditor/plugins/multiimage/css/icons/py.png b/tools/NKeditor/plugins/multiimage/css/icons/py.png new file mode 100644 index 00000000..ff572471 Binary files /dev/null and b/tools/NKeditor/plugins/multiimage/css/icons/py.png differ diff --git a/tools/NKeditor/plugins/multiimage/css/icons/rb.png b/tools/NKeditor/plugins/multiimage/css/icons/rb.png new file mode 100644 index 00000000..52da7394 Binary files /dev/null and b/tools/NKeditor/plugins/multiimage/css/icons/rb.png differ diff --git a/tools/NKeditor/plugins/multiimage/css/icons/rmvb.png b/tools/NKeditor/plugins/multiimage/css/icons/rmvb.png new file mode 100644 index 00000000..eccb9fc4 Binary files /dev/null and b/tools/NKeditor/plugins/multiimage/css/icons/rmvb.png differ diff --git a/tools/NKeditor/plugins/multiimage/css/icons/scss.png b/tools/NKeditor/plugins/multiimage/css/icons/scss.png new file mode 100644 index 00000000..e043f36f Binary files /dev/null and b/tools/NKeditor/plugins/multiimage/css/icons/scss.png differ diff --git a/tools/NKeditor/plugins/multiimage/css/icons/sql.png b/tools/NKeditor/plugins/multiimage/css/icons/sql.png new file mode 100644 index 00000000..1743ff70 Binary files /dev/null and b/tools/NKeditor/plugins/multiimage/css/icons/sql.png differ diff --git a/tools/NKeditor/plugins/multiimage/css/icons/tif.png b/tools/NKeditor/plugins/multiimage/css/icons/tif.png new file mode 100644 index 00000000..04e77a49 Binary files /dev/null and b/tools/NKeditor/plugins/multiimage/css/icons/tif.png differ diff --git a/tools/NKeditor/plugins/multiimage/css/icons/txt.png b/tools/NKeditor/plugins/multiimage/css/icons/txt.png new file mode 100644 index 00000000..876352b8 Binary files /dev/null and b/tools/NKeditor/plugins/multiimage/css/icons/txt.png differ diff --git a/tools/NKeditor/plugins/multiimage/css/icons/vsd.png b/tools/NKeditor/plugins/multiimage/css/icons/vsd.png new file mode 100644 index 00000000..c248eb33 Binary files /dev/null and b/tools/NKeditor/plugins/multiimage/css/icons/vsd.png differ diff --git a/tools/NKeditor/plugins/multiimage/css/icons/wav.png b/tools/NKeditor/plugins/multiimage/css/icons/wav.png new file mode 100644 index 00000000..c6ec2f6a Binary files /dev/null and b/tools/NKeditor/plugins/multiimage/css/icons/wav.png differ diff --git a/tools/NKeditor/plugins/multiimage/css/icons/wma.png b/tools/NKeditor/plugins/multiimage/css/icons/wma.png new file mode 100644 index 00000000..68316b57 Binary files /dev/null and b/tools/NKeditor/plugins/multiimage/css/icons/wma.png differ diff --git a/tools/NKeditor/plugins/multiimage/css/icons/wmv.png b/tools/NKeditor/plugins/multiimage/css/icons/wmv.png new file mode 100644 index 00000000..194ac20d Binary files /dev/null and b/tools/NKeditor/plugins/multiimage/css/icons/wmv.png differ diff --git a/tools/NKeditor/plugins/multiimage/css/icons/xls.png b/tools/NKeditor/plugins/multiimage/css/icons/xls.png new file mode 100644 index 00000000..b9eada4e Binary files /dev/null and b/tools/NKeditor/plugins/multiimage/css/icons/xls.png differ diff --git a/tools/NKeditor/plugins/multiimage/css/icons/xml.png b/tools/NKeditor/plugins/multiimage/css/icons/xml.png new file mode 100644 index 00000000..7ec8ceba Binary files /dev/null and b/tools/NKeditor/plugins/multiimage/css/icons/xml.png differ diff --git a/tools/NKeditor/plugins/multiimage/css/icons/zip.png b/tools/NKeditor/plugins/multiimage/css/icons/zip.png new file mode 100644 index 00000000..6f0a4340 Binary files /dev/null and b/tools/NKeditor/plugins/multiimage/css/icons/zip.png differ diff --git a/tools/NKeditor/plugins/multiimage/css/images/dialog-title-bg.png b/tools/NKeditor/plugins/multiimage/css/images/dialog-title-bg.png new file mode 100644 index 00000000..f744f267 Binary files /dev/null and b/tools/NKeditor/plugins/multiimage/css/images/dialog-title-bg.png differ diff --git a/tools/NKeditor/plugins/multiimage/css/images/icons-all.gif b/tools/NKeditor/plugins/multiimage/css/images/icons-all.gif new file mode 100644 index 00000000..21915e59 Binary files /dev/null and b/tools/NKeditor/plugins/multiimage/css/images/icons-all.gif differ diff --git a/tools/NKeditor/plugins/multiimage/css/images/icons.png b/tools/NKeditor/plugins/multiimage/css/images/icons.png new file mode 100644 index 00000000..12e47001 Binary files /dev/null and b/tools/NKeditor/plugins/multiimage/css/images/icons.png differ diff --git a/tools/NKeditor/plugins/multiimage/css/images/image.png b/tools/NKeditor/plugins/multiimage/css/images/image.png new file mode 100644 index 00000000..19699f6a Binary files /dev/null and b/tools/NKeditor/plugins/multiimage/css/images/image.png differ diff --git a/tools/NKeditor/plugins/multiimage/css/images/loader.gif b/tools/NKeditor/plugins/multiimage/css/images/loader.gif new file mode 100644 index 00000000..5bb90fd6 Binary files /dev/null and b/tools/NKeditor/plugins/multiimage/css/images/loader.gif differ diff --git a/tools/NKeditor/plugins/multiimage/css/images/progress.png b/tools/NKeditor/plugins/multiimage/css/images/progress.png new file mode 100644 index 00000000..717c4865 Binary files /dev/null and b/tools/NKeditor/plugins/multiimage/css/images/progress.png differ diff --git a/tools/NKeditor/plugins/multiimage/css/images/success.png b/tools/NKeditor/plugins/multiimage/css/images/success.png new file mode 100644 index 00000000..94f968dc Binary files /dev/null and b/tools/NKeditor/plugins/multiimage/css/images/success.png differ diff --git a/tools/NKeditor/plugins/multiimage/css/upload.css b/tools/NKeditor/plugins/multiimage/css/upload.css new file mode 100644 index 00000000..cff67e2f --- /dev/null +++ b/tools/NKeditor/plugins/multiimage/css/upload.css @@ -0,0 +1,552 @@ +@charset "UTF-8"; +.uedbody { + box-sizing: content-box !important; + -webkit-box-sizing: content-box !important; + -moz-box-sizing: content-box !important; + width: 652px; + position: fixed; + padding: 2px 0px 0px 2px; + background-color: #FFF; + border: 1px solid rgba(0, 0, 0, 0.2); + border-radius: 6px; + box-shadow: 0px 5px 10px rgba(0, 0, 0, 0.2); + z-index: 811213; + font-family: "微软雅黑"; + font-size: 12px; + margin: 0px auto; } + .uedbody div, .uedbody dl, .uedbody dt, .uedbody dd, .uedbody ul, .uedbody li, .uedbody ol, .uedbody h1, .uedbody h2, .uedbody h3, .uedbody h4, .uedbody h5, .uedbody h6, .uedbody pre, .uedbody code, .uedbody form, .uedbody fieldset, .uedbody legend, .uedbody button, .uedbody textarea, .uedbody blockquote, .uedbody p { + margin: 0; + padding: 0; } + .uedbody h1, .uedbody h2, .uedbody h3, .uedbody h4, .uedbody h5, .uedbody h6 { + font-weight: normal; } + .uedbody li { + list-style-type: none; } + .uedbody ol, .uedbody ul, .uedbody dl { + list-style: none; } + .uedbody em { + font-style: normal; } + .uedbody img { + border: none; + vertical-align: middle; } + .uedbody select, .uedbody label, .uedbody input { + vertical-align: middle; + padding: 0; + margin: 0; + outline: medium; + font-size: 12px; } + .uedbody textarea { + resize: none; + line-height: 18px; } + .uedbody table { + border-collapse: collapse; + border-spacing: 0; + empty-cell: show; } + .uedbody a { + text-decoration: none; + color: #333; + outline: none; + cursor: pointer; } + .uedbody a:hover { + cursor: pointer; + blr: expression(this.onFocus=this.blur()); } + .uedbody * { + padding: 0; + margin: 0; + box-sizing: content-box !important; + -webkit-box-sizing: content-box !important; + -moz-box-sizing: content-box !important; } + .uedbody .clearfix:before, .uedbody .clearfix:after { + content: ""; + display: table; } + .uedbody .clearfix:after { + clear: both; } + .uedbody .clearfix { + *zoom: 1; } + .uedbody .fr { + float: right; } + .uedbody .fl { + float: left; } + .uedbody .ued_title { + height: 26px; + border-bottom: 1px solid #C6C6C6; + background: transparent url("images/dialog-title-bg.png") repeat-x scroll 0% 0%; + position: relative; + cursor: move; } + .uedbody .ued_title .icon { + background: url("images/icons-all.gif") no-repeat center; } + .uedbody .ued_title .uedbar span { + font-weight: bold; + font-size: 14px; + color: #444; + line-height: 26px; + padding-left: 5px; } + .uedbody .ued_title .close_btn { + height: 20px; + width: 20px; + cursor: pointer; + background-position: 0px -59px; + position: absolute; + right: 5px; + top: 3px; } + .uedbody .ued_title .close_btn:hover { + background-position: 0px -89px; } + .uedbody .btn { + display: inline-block; + margin-bottom: 0px; + margin-right: 5px; + padding: 4px 10px; + font-weight: 400; + text-align: center; + cursor: pointer; + border: 1px solid transparent; + white-space: nowrap; + font-size: 14px; + border-radius: 3px; + -moz-user-select: none; + box-shadow: 0 1px 1px rgba(0, 0, 0, 0.1); + padding: 5px 14px; } + .uedbody .btn-default { + border: 1px solid #CFCFCF; + color: #565656; + background: #ffffff; } + .uedbody .btn-default:hover { + background: #f0f0f0; } + .uedbody .btn-primary { + background: #00b7ee; + color: #ffffff; } + .uedbody .btn-primary:hover { + background: #00a2d4; } + .uedbody .btn.disabled { + cursor: not-allowed; + opacity: .65; } + .uedbody .btn.disabled:hover { + background: #00b7ee; } + .uedbody .wrapper { + width: 630px; + height: 380px; + margin: 0px auto; + padding: 10px; + position: relative; + font-family: sans-serif; } + .uedbody .wrapper .wra_head span { + float: left; + padding: 0px 5px; + margin-right: 3px; + height: 30px; + border: 1px solid #CCC; + background: transparent url("images/dialog-title-bg.png") repeat-x scroll 0% 0%; + text-align: center; + line-height: 30px; + cursor: pointer; + position: relative; } + .uedbody .wrapper .wra_head span.focus { + height: 31px; + border-bottom: medium none; + background: #FFF none repeat scroll 0% 0%; + position: relative; + z-index: 2; } + .uedbody .wrapper .wra_body { + width: 100%; + height: 346px; + clear: both; + margin: 0px auto; + border: 1px solid #CCC; + display: block; + clip: auto; + overflow: hidden; + top: -1px; + position: relative; } + .uedbody .wrapper .wra_body .upload-panel .wra_pla { + zoom: 1; + overflow: hidden; + text-align: center; } + .uedbody .wrapper .wra_body .upload-panel .wra_pla .upload-image-placeholder { + margin: 10px; + border: 2px dashed #e6e6e6; + height: 172px; + padding-top: 150px; + text-align: center; + background: url("images/image.png") center 70px no-repeat; + position: relative; + top: 0; } + .uedbody .wrapper .wra_body .upload-panel .wra_pla .upload-image-placeholder .webuploader-element-invisible { + opacity: 0; + width: 0; + height: 0; } + .uedbody .wrapper .wra_body .upload-panel .wra_pla .upload-image-placeholder .image-select { + padding: 10px 30px; + cursor: pointer; } + .uedbody .wrapper .wra_body .upload-panel .image-list-box .wra_bar { + border-bottom: 1px solid #DADADA; + padding: 8px; + vertical-align: middle; + position: relative; + zoom: 1; + overflow: hidden; } + .uedbody .wrapper .wra_body .upload-panel .image-list-box .wra_bar .info { + font-size: 14px; + color: #666; + margin-top: 6px; } + .uedbody .wrapper .wra_body .upload-panel .image-list-box .wra_bar .fr .btn { + padding: 6px 15px; } + .uedbody .wrapper .wra_body .upload-panel .image-list-box .filelist { + list-style: outside none none; + margin: 0px; + padding: 0px; + overflow-x: hidden; + overflow-y: auto; + position: relative; + height: 300px; } + .uedbody .wrapper .wra_body .upload-panel .image-list-box .filelist li { + width: 113px; + height: 113px; + margin: 9px 0px 0px 9px; + position: relative; + display: block; + float: left; + overflow: hidden; + font-size: 12px; } + .uedbody .wrapper .wra_body .upload-panel .image-list-box .filelist li .imgWrap { + position: relative; + vertical-align: middle; + text-align: center; + overflow: hidden; + width: 113px; + height: 113px; + transform-origin: 50% 50% 0px; + transition: all 200ms ease-out 0s; } + .uedbody .wrapper .wra_body .upload-panel .image-list-box .filelist li .file-opt-box { + position: absolute; + display: none; + background: rgba(0, 0, 0, 0.5) none repeat scroll 0% 0%; + width: 100%; + top: 0px; + left: 0px; + overflow: hidden; } + .uedbody .wrapper .wra_body .upload-panel .image-list-box .filelist li .file-opt-box span { + width: 24px; + height: 24px; + display: inline; + float: right; + text-indent: -9999px; + overflow: hidden; + background: url("images/icons.png") no-repeat; + margin: 5px 1px 1px; + cursor: pointer; + -webkit-tap-highlight-color: rgba(0, 0, 0, 0); + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; } + .uedbody .wrapper .wra_body .upload-panel .image-list-box .filelist li .file-opt-box .remove { + background-position: -48px -24px; } + .uedbody .wrapper .wra_body .upload-panel .image-list-box .filelist li .file-opt-box .remove:hover { + background-position: -48px -0px; } + .uedbody .wrapper .wra_body .upload-panel .image-list-box .filelist li .file-opt-box .rotateRight { + display: none; + background-position: -24px -24px; } + .uedbody .wrapper .wra_body .upload-panel .image-list-box .filelist li .file-opt-box .rotateRight:hover { + background-position: -24px -0px; } + .uedbody .wrapper .wra_body .upload-panel .image-list-box .filelist li .file-opt-box .rotateLeft { + display: none; + background-position: 0px -24px; } + .uedbody .wrapper .wra_body .upload-panel .image-list-box .filelist li .file-opt-box .rotateLeft:hover { + background-position: 0px 0px; } + .uedbody .wrapper .wra_body .upload-panel .image-list-box .filelist li .success { + background: url("images/success.png") no-repeat right; + position: absolute; + display: none; + left: 0px; + bottom: 0px; + height: 40px; + width: 100%; } + .uedbody .wrapper .wra_body .upload-panel .image-list-box .filelist li .error { + position: absolute; + width: 100%; + display: none; + background: rgba(255, 255, 255, 0.7) none repeat scroll 0% 0%; + left: 0; + padding: 5px 3px; + color: #cc0000; + border: 1px solid #cccccc; + bottom: 0; } + .uedbody .wrapper .wra_body .upload-panel .image-list-box .filelist li .progress { + position: absolute; + width: 100%; + bottom: 0; + left: 0; + bottom: 0; + height: 8px; + overflow: hidden; + z-index: 50; + margin: 0; + border-radius: 0; + background: none; + -webkit-box-shadow: 0 0 0; } + .uedbody .wrapper .wra_body .upload-panel .image-list-box .filelist li .progress span { + width: 0; + height: 100%; + background: #1483d8 url("images/progress.png") repeat-x; + -webit-transition: width 200ms linear; + -moz-transition: width 200ms linear; + -o-transition: width 200ms linear; + -ms-transition: width 200ms linear; + transition: width 200ms linear; + -webkit-animation: progressmove 2s linear infinite; + -moz-animation: progressmove 2s linear infinite; + -o-animation: progressmove 2s linear infinite; + -ms-animation: progressmove 2s linear infinite; + animation: progressmove 2s linear infinite; + -webkit-transform: translateZ(0); } + .uedbody .wrapper .wra_body .online { + width: 100%; + height: 336px; + padding: 10px 0px 0px; + display: none; } + .uedbody .wrapper .wra_body .online .imagelist { + width: 100%; + height: 100%; + overflow-x: hidden; + overflow-y: auto; + position: relative; } + .uedbody .wrapper .wra_body .online .imagelist .list li { + float: left; + display: block; + list-style: outside none none; + padding: 0px; + width: 113px; + height: 113px; + margin: 0px 0px 9px 9px; + background-color: #EEE; + overflow: hidden; + cursor: pointer; + position: relative; } + .uedbody .wrapper .wra_body .online .imagelist .list li img { + cursor: pointer; } + .uedbody .wrapper .wra_body .online .imagelist .list li span.ic { + position: absolute; + top: 0px; + left: 0px; + cursor: pointer; + width: 113px; + height: 113px; } + .uedbody .wrapper .wra_body .online .imagelist .list li span.ic .img-size { + font-size: 12px; + padding: 5px; + background: rgba(0, 0, 0, 0.6); + display: none; + color: #ffffff; } + .uedbody .wrapper .wra_body .online .imagelist .list li span.ic:hover { + width: 107px; + height: 107px; + border: 3px solid #1094FA; + background-position: 72px 72px; } + .uedbody .wrapper .wra_body .online .imagelist .list li span.ic:hover .img-size { + display: inline-block; + width: 97px; } + .uedbody .wrapper .wra_body .online .imagelist .list li span.selected { + background: url("images/success.png") no-repeat 75px 75px; } + .uedbody .wrapper .wra_body .searchbox { + width: 100%; + padding: 10px 0px 0px; + zoom: 1; + overflow: hidden; + display: none; } + .uedbody .wrapper .wra_body .searchbox .search-bar .searTxt { + margin-left: 5px; + background: #FFF none repeat scroll 0% 0%; + width: 300px; + height: 21px; + line-height: 21px; + padding: 3px 6px; + font-size: 14px; + line-height: 1.42857; + border: 1px solid #CCC; + border-radius: 4px; + box-shadow: 0px 1px 1px rgba(0, 0, 0, 0.075) inset; + transition: border-color 0.15s ease-in-out 0s, box-shadow 0.15s ease-in-out 0s; + margin-right: 10px; } + .uedbody .wrapper .wra_body .searchbox .search-bar .searchBtn { + color: #FFF; + border-color: #285E8E; + background-color: #3B97D7; } + .uedbody .wrapper .wra_body .searchbox .search-bar .searchRese { + color: #333; + border-color: #CCC; + background-color: #FFF; } + .uedbody .wrapper .wra_body .searchbox .search-imagelist-box { + width: 100%; + height: 292px; + overflow-x: hidden; + overflow-y: auto; + position: relative; + margin-top: 10px; } + .uedbody .wrapper .wra_body .searchbox .search-imagelist-box .search-list { + zoom: 1; + overflow: hidden; } + .uedbody .wrapper .wra_body .searchbox .search-imagelist-box .search-list li { + float: left; + display: block; + list-style: outside none none; + padding: 0px; + width: 113px; + height: 113px; + margin: 0px 0px 9px 9px; + background-color: #EEE; + overflow: hidden; + cursor: pointer; + position: relative; } + .uedbody .wrapper .wra_body .searchbox .search-imagelist-box .search-list li img { + cursor: pointer; } + .uedbody .wrapper .wra_body .searchbox .search-imagelist-box .search-list li span.ic { + position: absolute; + top: 0px; + left: 0px; + cursor: pointer; + width: 113px; + height: 113px; } + .uedbody .wrapper .wra_body .searchbox .search-imagelist-box .search-list li span.ic .img-size { + font-size: 12px; + padding: 5px; + background: rgba(0, 0, 0, 0.6); + display: none; + color: #ffffff; } + .uedbody .wrapper .wra_body .searchbox .search-imagelist-box .search-list li span.ic:hover { + width: 107px; + height: 107px; + border: 3px solid #1094FA; + background-position: 72px 72px; + overflow: hidden; } + .uedbody .wrapper .wra_body .searchbox .search-imagelist-box .search-list li span.ic:hover .img-size { + display: inline-block; + width: 97px; } + .uedbody .wrapper .wra_body .searchbox .search-imagelist-box .search-list li span.selected { + background: url("images/success.png") no-repeat 75px 75px; } + .uedbody .wrapper .wra_body .no-data { + line-height: 40px; + height: 40px; + font-size: 14px; + color: #999999; + text-align: center; + display: none; } + .uedbody .wrapper .wra_body .no-data .error { + color: #cc0000; } + .uedbody .wrapper .wra_body .loading-icon { + background: rgba(0, 0, 0, 0.4) url("images/loader.gif") no-repeat center center; + position: absolute; + width: 100%; + height: 346px; + top: 0; + left: 0; + display: none; + text-align: center; } + .uedbody .wrapper .wra_body .loading-icon .loading-message { + position: absolute; + font-size: 14px; + color: #f0f0f0; + top: 210px; + left: 253px; } + .uedbody .wrapper .wra_body .icon-placeholder { + background-size: 113px 113px; + display: block; + width: 113px; + height: 113px; } + .uedbody .wrapper .wra_body .icon-aep, .uedbody .wrapper .wra_body .icon-aepx { + background-image: url("icons/aep.png"); } + .uedbody .wrapper .wra_body .icon-asp { + background-image: url("icons/asp.png"); } + .uedbody .wrapper .wra_body .icon-avi { + background-image: url("icons/avi.png"); } + .uedbody .wrapper .wra_body .icon-c, .uedbody .wrapper .wra_body .icon-cpp { + background-image: url("icons/c.png"); } + .uedbody .wrapper .wra_body .icon-conf { + background-image: url("icons/conf.png"); } + .uedbody .wrapper .wra_body .icon-css { + background-image: url("icons/css.png"); } + .uedbody .wrapper .wra_body .icon-htm, .uedbody .wrapper .wra_body .icon-html { + background-image: url("icons/htm.png"); } + .uedbody .wrapper .wra_body .icon-default { + background-image: url("icons/txt.png"); } + .uedbody .wrapper .wra_body .icon-doc, .uedbody .wrapper .wra_body .icon-docx { + background-image: url("icons/doc.png"); } + .uedbody .wrapper .wra_body .icon-eps { + background-image: url("icons/eps.png"); } + .uedbody .wrapper .wra_body .icon-fla, .uedbody .wrapper .wra_body .icon-swf { + background-image: url("icons/fla.png"); } + .uedbody .wrapper .wra_body .icon-idn { + background-image: url("icons/idn.png"); } + .uedbody .wrapper .wra_body .icon-ini { + background-image: url("icons/ini.png"); } + .uedbody .wrapper .wra_body .icon-java, .uedbody .wrapper .wra_body .icon-jar, .uedbody .wrapper .wra_body .icon-war { + background-image: url("icons/java.png"); } + .uedbody .wrapper .wra_body .icon-js { + background-image: url("icons/js.png"); } + .uedbody .wrapper .wra_body .icon-jsf { + background-image: url("icons/jsf.png"); } + .uedbody .wrapper .wra_body .icon-md, .uedbody .wrapper .wra_body .icon-markdown { + background-image: url("icons/markdown.png"); } + .uedbody .wrapper .wra_body .icon-mdb { + background-image: url("icons/mdb.png"); } + .uedbody .wrapper .wra_body .icon-midi { + background-image: url("icons/midi.png"); } + .uedbody .wrapper .wra_body .icon-mov { + background-image: url("icons/mov.png"); } + .uedbody .wrapper .wra_body .icon-mp3 { + background-image: url("icons/mp3.png"); } + .uedbody .wrapper .wra_body .icon-mpeg { + background-image: url("icons/mpeg.png"); } + .uedbody .wrapper .wra_body .icon-pdf { + background-image: url("icons/pdf.png"); } + .uedbody .wrapper .wra_body .icon-php { + background-image: url("icons/php.png"); } + .uedbody .wrapper .wra_body .icon-ppt, .uedbody .wrapper .wra_body .icon-pptx { + background-image: url("icons/ppt.png"); } + .uedbody .wrapper .wra_body .icon-psd { + background-image: url("icons/psd.png"); } + .uedbody .wrapper .wra_body .icon-pst { + background-image: url("icons/pst.png"); } + .uedbody .wrapper .wra_body .icon-pub { + background-image: url("icons/pub.png"); } + .uedbody .wrapper .wra_body .icon-py { + background-image: url("icons/py.png"); } + .uedbody .wrapper .wra_body .icon-rb { + background-image: url("icons/rb.png"); } + .uedbody .wrapper .wra_body .icon-rm, .uedbody .wrapper .wra_body .icon-rmvb { + background-image: url("icons/rmvb.png"); } + .uedbody .wrapper .wra_body .icon-scss { + background-image: url("icons/scss.png"); } + .uedbody .wrapper .wra_body .icon-tif { + background-image: url("icons/tif.png"); } + .uedbody .wrapper .wra_body .icon-txt { + background-image: url("icons/txt.png"); } + .uedbody .wrapper .wra_body .icon-vsd { + background-image: url("icons/vsd.png"); } + .uedbody .wrapper .wra_body .icon-wav { + background-image: url("icons/wav.png"); } + .uedbody .wrapper .wra_body .icon-wma { + background-image: url("icons/wma.png"); } + .uedbody .wrapper .wra_body .icon-wmv { + background-image: url("icons/wmv.png"); } + .uedbody .wrapper .wra_body .icon-xls, .uedbody .wrapper .wra_body .icon-xlsx { + background-image: url("icons/xls.png"); } + .uedbody .wrapper .wra_body .icon-xml { + background-image: url("icons/xml.png"); } + .uedbody .wrapper .wra_body .icon-zip, .uedbody .wrapper .wra_body .icon-rar, .uedbody .wrapper .wra_body .icon-tgz, .uedbody .wrapper .wra_body .icon-gz, .uedbody .wrapper .wra_body .icon-tar, .uedbody .wrapper .wra_body .icon-7z { + background-image: url("icons/zip.png"); } + .uedbody .wrapper .wra_body_server { + height: 380px; } + .uedbody .wrapper .wra_body_server .online { + display: block !important; + height: 365px; } + .uedbody .wra-btn-group { + clear: both; + zoom: 1; + text-align: right; + padding: 10px 20px 20px 0px; } + .uedbody .wra-btn-group .tip-text { + float: left; + padding: 5px 10px; + color: #999; + font-size: 14px; } + +/*# sourceMappingURL=upload.css.map */ diff --git a/tools/NKeditor/plugins/multiimage/css/upload.css.map b/tools/NKeditor/plugins/multiimage/css/upload.css.map new file mode 100644 index 00000000..b7e49d43 --- /dev/null +++ b/tools/NKeditor/plugins/multiimage/css/upload.css.map @@ -0,0 +1,7 @@ +{ +"version": 3, +"mappings": "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", +"sources": ["upload.scss"], +"names": [], +"file": "upload.css" +} \ No newline at end of file diff --git a/tools/NKeditor/plugins/multiimage/css/upload.min.css b/tools/NKeditor/plugins/multiimage/css/upload.min.css new file mode 100644 index 00000000..3f463d74 --- /dev/null +++ b/tools/NKeditor/plugins/multiimage/css/upload.min.css @@ -0,0 +1 @@ +@charset "UTF-8";.uedbody{box-sizing:content-box!important;-webkit-box-sizing:content-box!important;-moz-box-sizing:content-box!important;width:652px;position:fixed;padding:2px 0 0 2px;background-color:#fff;border:1px solid rgba(0,0,0,.2);border-radius:6px;box-shadow:0 5px 10px rgba(0,0,0,.2);z-index:811213;font-family:"微软雅黑";font-size:12px;margin:0 auto}.uedbody blockquote,.uedbody button,.uedbody code,.uedbody dd,.uedbody div,.uedbody dl,.uedbody dt,.uedbody fieldset,.uedbody form,.uedbody h1,.uedbody h2,.uedbody h3,.uedbody h4,.uedbody h5,.uedbody h6,.uedbody legend,.uedbody li,.uedbody ol,.uedbody p,.uedbody pre,.uedbody textarea,.uedbody ul{margin:0;padding:0}.uedbody h1,.uedbody h2,.uedbody h3,.uedbody h4,.uedbody h5,.uedbody h6{font-weight:400}.uedbody li{list-style-type:none}.uedbody dl,.uedbody ol,.uedbody ul{list-style:none}.uedbody em{font-style:normal}.uedbody img{border:none;vertical-align:middle}.uedbody input,.uedbody label,.uedbody select{vertical-align:middle;padding:0;margin:0;outline:medium;font-size:12px}.uedbody textarea{resize:none;line-height:18px}.uedbody table{border-collapse:collapse;border-spacing:0;empty-cell:show}.uedbody a{text-decoration:none;color:#333;outline:0;cursor:pointer}.uedbody a:hover{cursor:pointer;blr:expression(this.onFocus=this.blur())}.uedbody *{padding:0;margin:0;box-sizing:content-box!important;-webkit-box-sizing:content-box!important;-moz-box-sizing:content-box!important}.uedbody .clearfix:after,.uedbody .clearfix:before{content:"";display:table}.uedbody .clearfix:after{clear:both}.uedbody .fr{float:right}.uedbody .fl{float:left}.uedbody .ued_title{height:26px;border-bottom:1px solid #c6c6c6;background:transparent url(images/dialog-title-bg.png) repeat-x scroll 0 0;position:relative;cursor:move}.uedbody .ued_title .icon{background:url(images/icons-all.gif) no-repeat center}.uedbody .ued_title .uedbar span{font-weight:700;font-size:14px;color:#444;line-height:26px;padding-left:5px}.uedbody .ued_title .close_btn{height:20px;width:20px;cursor:pointer;background-position:0 -59px;position:absolute;right:5px;top:3px}.uedbody .ued_title .close_btn:hover{background-position:0 -89px}.uedbody .btn{display:inline-block;margin-bottom:0;margin-right:5px;padding:4px 10px;font-weight:400;text-align:center;cursor:pointer;border:1px solid transparent;white-space:nowrap;font-size:14px;border-radius:3px;-moz-user-select:none;box-shadow:0 1px 1px rgba(0,0,0,.1);padding:5px 14px}.uedbody .btn-default{border:1px solid #cfcfcf;color:#565656;background:#fff}.uedbody .btn-default:hover{background:#f0f0f0}.uedbody .btn-primary{background:#00b7ee;color:#fff}.uedbody .btn-primary:hover{background:#00a2d4}.uedbody .btn.disabled{cursor:not-allowed;opacity:.65}.uedbody .btn.disabled:hover{background:#00b7ee}.uedbody .wrapper{width:630px;height:380px;margin:0 auto;padding:10px;position:relative;font-family:sans-serif}.uedbody .wrapper .wra_head span{float:left;padding:0 5px;margin-right:3px;height:30px;border:1px solid #ccc;background:transparent url(images/dialog-title-bg.png) repeat-x scroll 0 0;text-align:center;line-height:30px;cursor:pointer;position:relative}.uedbody .wrapper .wra_head span.focus{height:31px;border-bottom:medium none;background:#fff none repeat scroll 0 0;position:relative;z-index:2}.uedbody .wrapper .wra_body{width:100%;height:346px;clear:both;margin:0 auto;border:1px solid #ccc;display:block;clip:auto;overflow:hidden;top:-1px;position:relative}.uedbody .wrapper .wra_body .upload-panel .wra_pla{zoom:1;overflow:hidden;text-align:center}.uedbody .wrapper .wra_body .upload-panel .wra_pla .upload-image-placeholder{margin:10px;border:2px dashed #e6e6e6;height:172px;padding-top:150px;text-align:center;background:url(images/image.png) center 70px no-repeat;position:relative;top:0}.uedbody .wrapper .wra_body .upload-panel .wra_pla .upload-image-placeholder .webuploader-element-invisible{opacity:0;width:0;height:0}.uedbody .wrapper .wra_body .upload-panel .wra_pla .upload-image-placeholder .image-select{padding:10px 30px;cursor:pointer}.uedbody .wrapper .wra_body .upload-panel .image-list-box .wra_bar{border-bottom:1px solid #dadada;padding:8px;vertical-align:middle;position:relative;zoom:1;overflow:hidden}.uedbody .wrapper .wra_body .upload-panel .image-list-box .wra_bar .info{font-size:14px;color:#666;margin-top:6px}.uedbody .wrapper .wra_body .upload-panel .image-list-box .wra_bar .fr .btn{padding:6px 15px}.uedbody .wrapper .wra_body .upload-panel .image-list-box .filelist{list-style:outside none none;margin:0;padding:0;overflow-x:hidden;overflow-y:auto;position:relative;height:300px}.uedbody .wrapper .wra_body .upload-panel .image-list-box .filelist li{width:113px;height:113px;margin:9px 0 0 9px;position:relative;display:block;float:left;overflow:hidden;font-size:12px}.uedbody .wrapper .wra_body .upload-panel .image-list-box .filelist li .imgWrap{position:relative;vertical-align:middle;text-align:center;overflow:hidden;width:113px;height:113px;transform-origin:50% 50% 0;transition:all .2s ease-out 0s}.uedbody .wrapper .wra_body .upload-panel .image-list-box .filelist li .file-opt-box{position:absolute;display:none;background:rgba(0,0,0,.5) none repeat scroll 0 0;width:100%;top:0;left:0;overflow:hidden}.uedbody .wrapper .wra_body .upload-panel .image-list-box .filelist li .file-opt-box span{width:24px;height:24px;display:inline;float:right;text-indent:-9999px;overflow:hidden;background:url(images/icons.png) no-repeat;margin:5px 1px 1px;cursor:pointer;-webkit-tap-highlight-color:transparent;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.uedbody .wrapper .wra_body .upload-panel .image-list-box .filelist li .file-opt-box .remove{background-position:-48px -24px}.uedbody .wrapper .wra_body .upload-panel .image-list-box .filelist li .file-opt-box .remove:hover{background-position:-48px 0}.uedbody .wrapper .wra_body .upload-panel .image-list-box .filelist li .file-opt-box .rotateRight{display:none;background-position:-24px -24px}.uedbody .wrapper .wra_body .upload-panel .image-list-box .filelist li .file-opt-box .rotateRight:hover{background-position:-24px 0}.uedbody .wrapper .wra_body .upload-panel .image-list-box .filelist li .file-opt-box .rotateLeft{display:none;background-position:0 -24px}.uedbody .wrapper .wra_body .upload-panel .image-list-box .filelist li .file-opt-box .rotateLeft:hover{background-position:0 0}.uedbody .wrapper .wra_body .upload-panel .image-list-box .filelist li .success{background:url(images/success.png) no-repeat right;position:absolute;display:none;left:0;bottom:0;height:40px;width:100%}.uedbody .wrapper .wra_body .upload-panel .image-list-box .filelist li .error{position:absolute;width:100%;display:none;background:rgba(255,255,255,.7) none repeat scroll 0 0;left:0;padding:5px 3px;color:#c00;border:1px solid #ccc;bottom:0}.uedbody .wrapper .wra_body .upload-panel .image-list-box .filelist li .progress{position:absolute;width:100%;bottom:0;left:0;bottom:0;height:8px;overflow:hidden;z-index:50;margin:0;border-radius:0;background:0 0;-webkit-box-shadow:0 0 0}.uedbody .wrapper .wra_body .upload-panel .image-list-box .filelist li .progress span{width:0;height:100%;background:#1483d8 url(images/progress.png) repeat-x;-webit-transition:width .2s linear;-moz-transition:width .2s linear;-o-transition:width .2s linear;-ms-transition:width .2s linear;transition:width .2s linear;-webkit-animation:progressmove 2s linear infinite;-moz-animation:progressmove 2s linear infinite;-o-animation:progressmove 2s linear infinite;-ms-animation:progressmove 2s linear infinite;animation:progressmove 2s linear infinite;-webkit-transform:translateZ(0)}.uedbody .wrapper .wra_body .online{width:100%;height:336px;padding:10px 0 0;display:none}.uedbody .wrapper .wra_body .online .imagelist{width:100%;height:100%;overflow-x:hidden;overflow-y:auto;position:relative}.uedbody .wrapper .wra_body .online .imagelist .list li{float:left;display:block;list-style:outside none none;padding:0;width:113px;height:113px;margin:0 0 9px 9px;background-color:#eee;overflow:hidden;cursor:pointer;position:relative}.uedbody .wrapper .wra_body .online .imagelist .list li img{cursor:pointer}.uedbody .wrapper .wra_body .online .imagelist .list li span.ic{position:absolute;top:0;left:0;cursor:pointer;width:113px;height:113px}.uedbody .wrapper .wra_body .online .imagelist .list li span.ic .img-size{font-size:12px;padding:5px;background:rgba(0,0,0,.6);display:none;color:#fff}.uedbody .wrapper .wra_body .online .imagelist .list li span.ic:hover{width:107px;height:107px;border:3px solid #1094fa;background-position:72px 72px}.uedbody .wrapper .wra_body .online .imagelist .list li span.ic:hover .img-size{display:inline-block;width:97px}.uedbody .wrapper .wra_body .online .imagelist .list li span.selected{background:url(images/success.png) no-repeat 75px 75px}.uedbody .wrapper .wra_body .searchbox{width:100%;padding:10px 0 0;zoom:1;overflow:hidden;display:none}.uedbody .wrapper .wra_body .searchbox .search-bar .searTxt{margin-left:5px;background:#fff none repeat scroll 0 0;width:300px;height:21px;line-height:21px;padding:3px 6px;font-size:14px;line-height:1.42857;border:1px solid #ccc;border-radius:4px;box-shadow:0 1px 1px rgba(0,0,0,.075) inset;transition:border-color .15s ease-in-out 0s,box-shadow .15s ease-in-out 0s;margin-right:10px}.uedbody .wrapper .wra_body .searchbox .search-bar .searchBtn{color:#fff;border-color:#285e8e;background-color:#3b97d7}.uedbody .wrapper .wra_body .searchbox .search-bar .searchRese{color:#333;border-color:#ccc;background-color:#fff}.uedbody .wrapper .wra_body .searchbox .search-imagelist-box{width:100%;height:292px;overflow-x:hidden;overflow-y:auto;position:relative;margin-top:10px}.uedbody .wrapper .wra_body .searchbox .search-imagelist-box .search-list{zoom:1;overflow:hidden}.uedbody .wrapper .wra_body .searchbox .search-imagelist-box .search-list li{float:left;display:block;list-style:outside none none;padding:0;width:113px;height:113px;margin:0 0 9px 9px;background-color:#eee;overflow:hidden;cursor:pointer;position:relative}.uedbody .wrapper .wra_body .searchbox .search-imagelist-box .search-list li img{cursor:pointer}.uedbody .wrapper .wra_body .searchbox .search-imagelist-box .search-list li span.ic{position:absolute;top:0;left:0;cursor:pointer;width:113px;height:113px}.uedbody .wrapper .wra_body .searchbox .search-imagelist-box .search-list li span.ic .img-size{font-size:12px;padding:5px;background:rgba(0,0,0,.6);display:none;color:#fff}.uedbody .wrapper .wra_body .searchbox .search-imagelist-box .search-list li span.ic:hover{width:107px;height:107px;border:3px solid #1094fa;background-position:72px 72px;overflow:hidden}.uedbody .wrapper .wra_body .searchbox .search-imagelist-box .search-list li span.ic:hover .img-size{display:inline-block;width:97px}.uedbody .wrapper .wra_body .searchbox .search-imagelist-box .search-list li span.selected{background:url(images/success.png) no-repeat 75px 75px}.uedbody .wrapper .wra_body .no-data{line-height:40px;height:40px;font-size:14px;color:#999;text-align:center;display:none}.uedbody .wrapper .wra_body .no-data .error{color:#c00}.uedbody .wrapper .wra_body .loading-icon{background:rgba(0,0,0,.4) url(images/loader.gif) no-repeat center center;position:absolute;width:100%;height:346px;top:0;left:0;display:none;text-align:center}.uedbody .wrapper .wra_body .loading-icon .loading-message{position:absolute;font-size:14px;color:#f0f0f0;top:210px;left:253px}.uedbody .wrapper .wra_body .icon-placeholder{background-size:113px 113px;display:block;width:113px;height:113px}.uedbody .wrapper .wra_body .icon-aep,.uedbody .wrapper .wra_body .icon-aepx{background-image:url(icons/aep.png)}.uedbody .wrapper .wra_body .icon-asp{background-image:url(icons/asp.png)}.uedbody .wrapper .wra_body .icon-avi{background-image:url(icons/avi.png)}.uedbody .wrapper .wra_body .icon-c,.uedbody .wrapper .wra_body .icon-cpp{background-image:url(icons/c.png)}.uedbody .wrapper .wra_body .icon-conf{background-image:url(icons/conf.png)}.uedbody .wrapper .wra_body .icon-css{background-image:url(icons/css.png)}.uedbody .wrapper .wra_body .icon-htm,.uedbody .wrapper .wra_body .icon-html{background-image:url(icons/htm.png)}.uedbody .wrapper .wra_body .icon-default{background-image:url(icons/txt.png)}.uedbody .wrapper .wra_body .icon-doc,.uedbody .wrapper .wra_body .icon-docx{background-image:url(icons/doc.png)}.uedbody .wrapper .wra_body .icon-eps{background-image:url(icons/eps.png)}.uedbody .wrapper .wra_body .icon-fla,.uedbody .wrapper .wra_body .icon-swf{background-image:url(icons/fla.png)}.uedbody .wrapper .wra_body .icon-idn{background-image:url(icons/idn.png)}.uedbody .wrapper .wra_body .icon-ini{background-image:url(icons/ini.png)}.uedbody .wrapper .wra_body .icon-jar,.uedbody .wrapper .wra_body .icon-java,.uedbody .wrapper .wra_body .icon-war{background-image:url(icons/java.png)}.uedbody .wrapper .wra_body .icon-js{background-image:url(icons/js.png)}.uedbody .wrapper .wra_body .icon-jsf{background-image:url(icons/jsf.png)}.uedbody .wrapper .wra_body .icon-markdown,.uedbody .wrapper .wra_body .icon-md{background-image:url(icons/markdown.png)}.uedbody .wrapper .wra_body .icon-mdb{background-image:url(icons/mdb.png)}.uedbody .wrapper .wra_body .icon-midi{background-image:url(icons/midi.png)}.uedbody .wrapper .wra_body .icon-mov{background-image:url(icons/mov.png)}.uedbody .wrapper .wra_body .icon-mp3{background-image:url(icons/mp3.png)}.uedbody .wrapper .wra_body .icon-mpeg{background-image:url(icons/mpeg.png)}.uedbody .wrapper .wra_body .icon-pdf{background-image:url(icons/pdf.png)}.uedbody .wrapper .wra_body .icon-php{background-image:url(icons/php.png)}.uedbody .wrapper .wra_body .icon-ppt,.uedbody .wrapper .wra_body .icon-pptx{background-image:url(icons/ppt.png)}.uedbody .wrapper .wra_body .icon-psd{background-image:url(icons/psd.png)}.uedbody .wrapper .wra_body .icon-pst{background-image:url(icons/pst.png)}.uedbody .wrapper .wra_body .icon-pub{background-image:url(icons/pub.png)}.uedbody .wrapper .wra_body .icon-py{background-image:url(icons/py.png)}.uedbody .wrapper .wra_body .icon-rb{background-image:url(icons/rb.png)}.uedbody .wrapper .wra_body .icon-rm,.uedbody .wrapper .wra_body .icon-rmvb{background-image:url(icons/rmvb.png)}.uedbody .wrapper .wra_body .icon-scss{background-image:url(icons/scss.png)}.uedbody .wrapper .wra_body .icon-tif{background-image:url(icons/tif.png)}.uedbody .wrapper .wra_body .icon-txt{background-image:url(icons/txt.png)}.uedbody .wrapper .wra_body .icon-vsd{background-image:url(icons/vsd.png)}.uedbody .wrapper .wra_body .icon-wav{background-image:url(icons/wav.png)}.uedbody .wrapper .wra_body .icon-wma{background-image:url(icons/wma.png)}.uedbody .wrapper .wra_body .icon-wmv{background-image:url(icons/wmv.png)}.uedbody .wrapper .wra_body .icon-xls,.uedbody .wrapper .wra_body .icon-xlsx{background-image:url(icons/xls.png)}.uedbody .wrapper .wra_body .icon-xml{background-image:url(icons/xml.png)}.uedbody .wrapper .wra_body .icon-7z,.uedbody .wrapper .wra_body .icon-gz,.uedbody .wrapper .wra_body .icon-rar,.uedbody .wrapper .wra_body .icon-tar,.uedbody .wrapper .wra_body .icon-tgz,.uedbody .wrapper .wra_body .icon-zip{background-image:url(icons/zip.png)}.uedbody .wrapper .wra_body_server{height:380px}.uedbody .wrapper .wra_body_server .online{display:block!important;height:365px}.uedbody .wra-btn-group{clear:both;zoom:1;text-align:right;padding:10px 20px 20px 0}.uedbody .wra-btn-group .tip-text{float:left;padding:5px 10px;color:#999;font-size:14px} \ No newline at end of file diff --git a/tools/NKeditor/plugins/multiimage/css/upload.scss b/tools/NKeditor/plugins/multiimage/css/upload.scss new file mode 100644 index 00000000..10ff8320 --- /dev/null +++ b/tools/NKeditor/plugins/multiimage/css/upload.scss @@ -0,0 +1,642 @@ +$dialogWidth:652px; +$dialogZindex:811213; +$fontsize:14px; +.uedbody{ + div, dl, dt, dd, ul, li,ol, h1, h2, h3, h4, h5, h6, pre, code, form, fieldset, legend, button, textarea, blockquote,p{margin:0; padding:0;} + h1,h2,h3,h4,h5,h6 {font-weight:normal;} + li{list-style-type:none;} + ol,ul,dl{list-style:none;} + em{font-style:normal;} + img{border:none;vertical-align:middle;} + select,label,input{vertical-align:middle; padding:0; margin:0;outline:medium;font-size:12px;} + textarea{resize: none; line-height:18px;} + table { border-collapse: collapse; border-spacing: 0; empty-cell:show;} + a{text-decoration:none;color:#333;outline:none; cursor:pointer;} + a:hover{cursor:pointer;blr:expression(this.onFocus=this.blur());} + + box-sizing : content-box !important; + -webkit-box-sizing: content-box !important; + -moz-box-sizing: content-box !important; + + * { + padding: 0; margin: 0; + box-sizing : content-box !important; + -webkit-box-sizing: content-box !important; + -moz-box-sizing: content-box !important; + } + + .clearfix:before, .clearfix:after { + content: ""; + display: table; + } + .clearfix:after{ + clear: both; + } + .clearfix{ + *zoom: 1; + } + .fr{float: right;} + .fl{float: left;} + + width: $dialogWidth; + position: fixed; + padding: 2px 0px 0px 2px; + background-color: #FFF; + border: 1px solid rgba(0, 0, 0, 0.2); + border-radius: 6px; + box-shadow: 0px 5px 10px rgba(0, 0, 0, 0.2); + z-index: $dialogZindex; + font-family:"微软雅黑"; + font-size: 12px; + margin: 0px auto; + + //start of ued_title + .ued_title{ + height: 26px; + border-bottom: 1px solid #C6C6C6; + background: transparent url("images/dialog-title-bg.png") repeat-x scroll 0% 0%; + position: relative; + cursor: move; + + .icon{background: url("images/icons-all.gif") no-repeat center;} + + .uedbar { + span{ + font-weight: bold; + font-size: 14px; + color: #444; + line-height: 26px; + padding-left: 5px; + } + } + + .close_btn{ + height: 20px; + width: 20px; + cursor: pointer; + background-position :0px -59px; + position: absolute; + right: 5px; + top: 3px; + + &:hover{background-position: 0px -89px;} + } + } + //end of ued_title + + //button styles + .btn { + display: inline-block; + margin-bottom: 0px; + margin-right: 5px; + padding: 4px 10px; + font-weight: 400; + text-align: center; + cursor: pointer; + border: 1px solid transparent; + white-space: nowrap; + font-size: $fontsize; + border-radius: 3px; + -moz-user-select: none; + box-shadow: 0 1px 1px rgba(0, 0, 0, 0.1); + padding: 5px 14px; + } + .btn-default { + border: 1px solid #CFCFCF; + color: #565656; + background: #ffffff; + &:hover { + background: #f0f0f0; + } + } + .btn-primary { + background:#00b7ee; + color: #ffffff; + &:hover { + background: #00a2d4; + } + }//button style end + .btn.disabled { + cursor: not-allowed; + opacity: .65; + &:hover { + background: #00b7ee; + } + } + + //start of wrapper + .wrapper { + width: 630px; + height: 380px; + margin: 0px auto; + padding: 10px; + position: relative; + font-family: sans-serif; + + //start of wra_head + .wra_head { + span { + float: left; + padding: 0px 5px; + margin-right:3px; + height: 30px; + border: 1px solid #CCC; + background: transparent url("images/dialog-title-bg.png") repeat-x scroll 0% 0%; + text-align: center; + line-height: 30px; + cursor: pointer; + position: relative; + } + span.focus { + height: 31px; + border-bottom: medium none; + background: #FFF none repeat scroll 0% 0%; + position: relative; + z-index: 2; + } + }//end of wra_head + + //start of wra_body + .wra_body{ + + width: 100%; + height: 346px; + clear: both; + margin: 0px auto; + border: 1px solid #CCC; + display: block; + clip: auto; + overflow: hidden; + top: -1px; + position: relative; + + //upload panel start + .upload-panel { + .wra_pla { + zoom: 1; overflow: hidden; + text-align: center; + + .upload-image-placeholder { + margin: 10px; + border: 2px dashed #e6e6e6; + height: 172px; + padding-top: 150px; + text-align: center; + background: url("images/image.png") center 70px no-repeat; + position: relative; + top: 0; + + .webuploader-element-invisible { + //width: 145px; + //height: 40px; + //position: absolute; + //left: 225px; + opacity: 0; + width: 0; height: 0; + } + + .image-select { + padding: 10px 30px; + cursor: pointer; + } + } + } + + //image list box start + .image-list-box { + .wra_bar { + border-bottom: 1px solid #DADADA; + padding: 8px; + vertical-align: middle; + position: relative; + zoom: 1; overflow: hidden; + + .info{ + font-size: $fontsize; + color: #666; + margin-top: 6px; + } + + .fr { + .btn {padding: 6px 15px;} + } + + } + + //filelist start + .filelist{ + list-style: outside none none; + margin: 0px; + padding: 0px; + overflow-x: hidden; + overflow-y: auto; + position: relative; + height: 300px; + + li { + width: 113px; + height: 113px; + margin: 9px 0px 0px 9px; + position: relative; + display: block; + float: left; + overflow: hidden; + font-size: 12px; + + .imgWrap{ + position: relative; + vertical-align: middle; + text-align: center; + overflow: hidden; + width: 113px; + height: 113px; + transform-origin: 50% 50% 0px; + transition: all 200ms ease-out 0s; + + } + + //file opt box start + .file-opt-box{ + position: absolute; + display: none; + background: rgba(0, 0, 0, 0.5) none repeat scroll 0% 0%; + width: 100%; + top: 0px; + left: 0px; + overflow: hidden; + + span { + width: 24px; + height: 24px; + display: inline; + float: right; + text-indent: -9999px; + overflow: hidden; + background: url("images/icons.png") no-repeat; + margin: 5px 1px 1px; + cursor: pointer; + -webkit-tap-highlight-color: rgba(0,0,0,0); + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; + } + + .remove{ + background-position: -48px -24px; + &:hover{ + background-position: -48px -0px; + } + } + .rotateRight{ + display: none; + background-position: -24px -24px; + &:hover{ + background-position: -24px -0px; + } + } + .rotateLeft{ + display: none; + background-position: 0px -24px; + &:hover{ + background-position: 0px 0px; + } + } + }//file opt box end + + .success{ + background: url("images/success.png") no-repeat right; + position: absolute; + display: none; + left: 0px; + bottom: 0px; + height: 40px; + width: 100%; + } + + .error { + position: absolute; + width: 100%; + display: none; + background: rgba(255, 255, 255, 0.7) none repeat scroll 0% 0%; + left: 0; + padding:5px 3px; + color: #cc0000; + border: 1px solid #cccccc; + bottom: 0; + } + + .progress { + position: absolute; + width: 100%; + bottom: 0; + left: 0; + bottom: 0; + height: 8px; + overflow: hidden; + z-index: 50; + margin: 0; + border-radius: 0; + background: none; + -webkit-box-shadow: 0 0 0; + + span { + width: 0; + height: 100%; + background: #1483d8 url("images/progress.png") repeat-x; + -webit-transition: width 200ms linear; + -moz-transition: width 200ms linear; + -o-transition: width 200ms linear; + -ms-transition: width 200ms linear; + transition: width 200ms linear; + -webkit-animation: progressmove 2s linear infinite; + -moz-animation: progressmove 2s linear infinite; + -o-animation: progressmove 2s linear infinite; + -ms-animation: progressmove 2s linear infinite; + animation: progressmove 2s linear infinite; + -webkit-transform: translateZ(0); + } + } + }//end li + + }//filelist end + + }//image list box end + }//upload panel end + + //image online start + .online{ + width: 100%; + height: 336px; + padding: 10px 0px 0px; + display: none; + + .imagelist { + width: 100%; + height: 100%; + overflow-x: hidden; + overflow-y: auto; + position: relative; + + .list { + li { + float: left; + display: block; + list-style: outside none none; + padding: 0px; + width: 113px; + height: 113px; + margin: 0px 0px 9px 9px; + background-color: #EEE; + overflow: hidden; + cursor: pointer; + position: relative; + + img{cursor: pointer;} + + span.ic { + position: absolute; + top: 0px; + left: 0px; + cursor: pointer; + width: 113px; + height: 113px; + + .img-size { + font-size:12px; + padding: 5px; + background:rgba(0,0,0,0.6); + display: none; + color: #ffffff; + } + + &:hover{ + width: 107px; + height: 107px; + border: 3px solid #1094FA; + background-position: 72px 72px; + .img-size { + display: inline-block; + width: 97px; + } + + } + } + span.selected { + background: url("images/success.png") no-repeat 75px 75px; + } + } + } + + } + + } //image online end + + //image search start + .searchbox { + width: 100%; + padding: 10px 0px 0px; + zoom: 1; overflow: hidden; + display: none; + + //搜索条 + .search-bar { + + .searTxt{ + margin-left: 5px; + background: #FFF none repeat scroll 0% 0%; + width: 300px; + height: 21px; + line-height: 21px; + padding: 3px 6px; + font-size: $fontsize; + line-height: 1.42857; + border: 1px solid #CCC; + border-radius: 4px; + box-shadow: 0px 1px 1px rgba(0, 0, 0, 0.075) inset; + transition: border-color 0.15s ease-in-out 0s, box-shadow 0.15s ease-in-out 0s; + margin-right:10px; + } + + .searchBtn { + color: #FFF; + border-color: #285E8E; + background-color: #3B97D7; + } + .searchRese{ + color: #333; + border-color: #CCC; + background-color: #FFF; + } + } + + .search-imagelist-box { + width: 100%; + height: 292px; + overflow-x: hidden; + overflow-y: auto; + position: relative; + margin-top:10px; + + .search-list { + zoom:1; overflow: hidden; + li { + float: left; + display: block; + list-style: outside none none; + padding: 0px; + width: 113px; + height: 113px; + margin: 0px 0px 9px 9px; + background-color: #EEE; + overflow: hidden; + cursor: pointer; + position: relative; + + img { + cursor: pointer; + } + + span.ic { + position: absolute; + top: 0px; + left: 0px; + cursor: pointer; + width: 113px; + height: 113px; + + .img-size { + font-size:12px; + padding: 5px; + background:rgba(0,0,0,0.6); + display: none; + color: #ffffff; + } + + &:hover { + width: 107px; + height: 107px; + border: 3px solid #1094FA; + background-position: 72px 72px; + overflow: hidden; + .img-size { + display: inline-block; + width: 97px; + } + } + } + span.selected { + background: url("images/success.png") no-repeat 75px 75px; + } + } + } + } + + }//image search start end + + .no-data { + line-height: 40px; + height: 40px; + font-size:$fontsize; + color: #999999; + text-align: center; + display: none; + .error { + color: #cc0000; + } + } + + .loading-icon { + background:rgba(0,0,0,0.4) url("images/loader.gif") no-repeat center center; + position: absolute; + width: 100%; + height: 346px; + top:0; left: 0; + display: none; + text-align: center; + + .loading-message { + position: absolute; + font-size: 14px; + color: #f0f0f0; + top: 210px; + left:253px; + } + } + + //图片占位符 + .icon-placeholder { + background-size: 113px 113px; + display: block; + width: 113px; + height: 113px; + } + .icon-aep, .icon-aepx {background-image: url("icons/aep.png");} + .icon-asp {background-image: url("icons/asp.png");} + .icon-avi {background-image: url("icons/avi.png");} + .icon-c, .icon-cpp {background-image: url("icons/c.png");} + .icon-conf {background-image: url("icons/conf.png");} + .icon-css {background-image: url("icons/css.png");} + .icon-htm,.icon-html {background-image: url("icons/htm.png");} + .icon-default {background-image: url("icons/txt.png");} + .icon-doc,.icon-docx {background-image: url("icons/doc.png");} + .icon-eps {background-image: url("icons/eps.png");} + .icon-fla,.icon-swf {background-image: url("icons/fla.png");} + .icon-idn {background-image: url("icons/idn.png");} + .icon-ini {background-image: url("icons/ini.png");} + .icon-java, .icon-jar, .icon-war {background-image: url("icons/java.png");} + .icon-js {background-image: url("icons/js.png");} + .icon-jsf {background-image: url("icons/jsf.png");} + .icon-md, .icon-markdown {background-image: url("icons/markdown.png");} + .icon-mdb {background-image: url("icons/mdb.png");} + .icon-midi {background-image: url("icons/midi.png");} + .icon-mov {background-image: url("icons/mov.png");} + .icon-mp3 {background-image: url("icons/mp3.png");} + .icon-mpeg {background-image: url("icons/mpeg.png");} + .icon-pdf {background-image: url("icons/pdf.png");} + .icon-php {background-image: url("icons/php.png");} + .icon-ppt, .icon-pptx {background-image: url("icons/ppt.png");} + .icon-psd {background-image: url("icons/psd.png");} + .icon-pst {background-image: url("icons/pst.png");} + .icon-pub {background-image: url("icons/pub.png");} + .icon-py {background-image: url("icons/py.png");} + .icon-rb {background-image: url("icons/rb.png");} + .icon-rm, .icon-rmvb {background-image: url("icons/rmvb.png");} + .icon-scss {background-image: url("icons/scss.png");} + .icon-tif {background-image: url("icons/tif.png");} + .icon-txt {background-image: url("icons/txt.png");} + .icon-vsd {background-image: url("icons/vsd.png");} + .icon-wav {background-image: url("icons/wav.png");} + .icon-wma {background-image: url("icons/wma.png");} + .icon-wmv {background-image: url("icons/wmv.png");} + .icon-xls, .icon-xlsx {background-image: url("icons/xls.png");} + .icon-xml {background-image: url("icons/xml.png");} + .icon-zip, .icon-rar, .icon-tgz, .icon-gz, .icon-tar, .icon-7z {background-image: url("icons/zip.png");} + + }//end of wra_body + + .wra_body_server { + height: 380px; + + .online { + display: block !important; + height: 365px; + } + } + + }//start of wrapper + + .wra-btn-group { + clear: both; + zoom: 1; + text-align: right; + padding: 10px 20px 20px 0px; + + .tip-text { + float: left; + padding: 5px 10px; + color: #999; + font-size: 14px; + } + } +} \ No newline at end of file diff --git a/tools/NKeditor/plugins/multiimage/multiimage.js b/tools/NKeditor/plugins/multiimage/multiimage.js new file mode 100644 index 00000000..b6652248 --- /dev/null +++ b/tools/NKeditor/plugins/multiimage/multiimage.js @@ -0,0 +1,88 @@ +/** + * HTML5 批量文件上传 + * @author yangjian + * @since v4.1.12(2017-09-12) + * @site http://git.oschina.net/blackfox/kindeditor + */ + +KindEditor.plugin('multiimage', function(K) { + var self = this, name = 'multiimage', + uploadJson = K.undef(self.uploadJson, self.basePath + 'php/upload_json.php'), + fileManagerJson = K.undef(self.fileManagerJson, self.basePath + 'php/file_manager_json.php'), + imageSizeLimit = K.undef(self.imageSizeLimit, 2048), //单位KB + imageFileTypes = K.undef(self.imageFileTypes, 'jpg|png|gif|jpeg'), + imageUploadLimit = K.undef(self.imageUploadLimit, 20), + filePostName = K.undef(self.filePostName, 'imgFile'), + extraParams = K.undef(self.extraFileUploadParams, {}), + lang = self.lang(name + '.'); + + if(typeof jQuery == 'undefined') { + K.options.errorMsgHandler(lang.depJQueryError, "error"); + return; + } else { + K.loadScript(K.options.pluginsPath+name+"/BUpload.js"); + K.loadStyle(K.options.pluginsPath+name+"/css/upload.css"); + } + + //锁屏插件 + K.locker = function () { + var docWidth = Math.max(document.documentElement.clientWidth, document.body.clientWidth); + var docHeight = Math.max(document.documentElement.clientHeight, document.body.clientHeight, $(document).height()) + document.documentElement.scrollTop; + return K.widget({ + x : 0, + y : 0, + cls : 'ke-dialog-lock', + width : docWidth, + height : docHeight + }); + } + self.plugin.multiImageDialog = function(options) { + + var clickFn = options.clickFn; + var locker = K.locker(); + locker.show(); + + var dialog = new BUpload({ + src : filePostName, + upload_url : uploadJson, + list_url : fileManagerJson, //图片列表数据获取url + max_filesize : imageSizeLimit, + max_filenum : imageUploadLimit, + ext_allow : imageFileTypes, + extra_params : extraParams, + lang : lang, + top : self.dialogOffset, + fileType : "image", + errorHandler : K.options.errorMsgHandler, + callback : function(data) { + //console.log(data); + clickFn.call(this, data); + }, + close : function () { + locker.remove(); + } + }); + + return dialog; + }; + self.clickToolbar(name, function() { + self.plugin.multiImageDialog({ + clickFn : function (urlList) { + + if (urlList.length === 0) { + return; + } + K.each(urlList, function(i, data) { + if (self.afterUpload) { + self.afterUpload.call(self, data, data, 'multiimage'); + } + self.exec('insertimage', data); + }); + // Bugfix: [Firefox] 上传图片后,总是出现正在加载的样式,需要延迟执行hideDialog + setTimeout(function() { + self.hideDialog().focus(); + }, 0); + } + }); + }); +}); diff --git a/tools/NKeditor/plugins/multiimage/template/template.html b/tools/NKeditor/plugins/multiimage/template/template.html new file mode 100644 index 00000000..6625f0a8 --- /dev/null +++ b/tools/NKeditor/plugins/multiimage/template/template.html @@ -0,0 +1,95 @@ +
          +
          +
          + 多图上传 +
          +
          +
          + +
          +
          + 本地上传 + 文件服务器 + 图片搜索 +
          + +
          +
          +
          +
          +
          点击选择图片
          + +
          +
          + + +
          + +
          +
          +
            +
          • + + "> +
          • +
          +
          (⊙o⊙)亲,没有多数据了。
          +
          +
          + + + +
          +
          + +
          + +
          + 确认 + 取消 +
          +
          \ No newline at end of file diff --git a/tools/NKeditor/plugins/pagebreak/pagebreak.js b/tools/NKeditor/plugins/pagebreak/pagebreak.js new file mode 100644 index 00000000..dfa883af --- /dev/null +++ b/tools/NKeditor/plugins/pagebreak/pagebreak.js @@ -0,0 +1,27 @@ +/******************************************************************************* +* KindEditor - WYSIWYG HTML Editor for Internet +* Copyright (C) 2006-2011 kindsoft.net +* +* @author Roddy +* @site http://www.kindsoft.net/ +* @licence http://www.kindsoft.net/license.php +*******************************************************************************/ + +KindEditor.plugin('pagebreak', function(K) { + var self = this; + var name = 'pagebreak'; + var pagebreakHtml = K.undef(self.pagebreakHtml, '
          '); + + self.clickToolbar(name, function() { + var cmd = self.cmd, range = cmd.range; + self.focus(); + var tail = self.newlineTag == 'br' || K.WEBKIT ? '' : ''; + self.insertHtml(pagebreakHtml + tail); + if (tail !== '') { + var p = K('#__kindeditor_tail_tag__', self.edit.doc); + range.selectNodeContents(p[0]); + p.removeAttr('id'); + cmd.select(); + } + }); +}); diff --git a/tools/NKeditor/plugins/plainpaste/plainpaste.js b/tools/NKeditor/plugins/plainpaste/plainpaste.js new file mode 100644 index 00000000..8f7bed80 --- /dev/null +++ b/tools/NKeditor/plugins/plainpaste/plainpaste.js @@ -0,0 +1,41 @@ +/******************************************************************************* +* KindEditor - WYSIWYG HTML Editor for Internet +* Copyright (C) 2006-2011 kindsoft.net +* +* @author Roddy +* @site http://www.kindsoft.net/ +* @licence http://www.kindsoft.net/license.php +*******************************************************************************/ + +KindEditor.plugin('plainpaste', function(K) { + var self = this, name = 'plainpaste'; + self.clickToolbar(name, function() { + var lang = self.lang(name + '.'), + html = '
          ' + + '
          ' + lang.comment + '
          ' + + '' + + '
          ', + dialog = self.createDialog({ + name : name, + width : 450, + title : self.lang(name), + body : html, + yesBtn : { + name : self.lang('yes'), + click : function(e) { + var html = textarea.val(); + html = K.escape(html); + html = html.replace(/ {2}/g, '  '); + if (self.newlineTag == 'p') { + html = html.replace(/^/, '

          ').replace(/$/, '

          ').replace(/\n/g, '

          '); + } else { + html = html.replace(/\n/g, '
          $&'); + } + self.insertHtml(html).hideDialog().focus(); + } + } + }), + textarea = K('textarea', dialog.div); + textarea[0].focus(); + }); +}); diff --git a/tools/NKeditor/plugins/preview/preview.js b/tools/NKeditor/plugins/preview/preview.js new file mode 100644 index 00000000..029c2273 --- /dev/null +++ b/tools/NKeditor/plugins/preview/preview.js @@ -0,0 +1,134 @@ +/******************************************************************************* +* KindEditor - WYSIWYG HTML Editor for Internet +* Copyright (C) 2006-2011 kindsoft.net +* +* @author Roddy +* @site http://www.kindsoft.net/ +* @licence http://www.kindsoft.net/license.php +*******************************************************************************/ + +KindEditor.plugin('preview', function(K) { + var self = this, name = 'preview', undefined; + self.clickToolbar(name, function() { + var lang = self.lang(name + '.'), + width = document.documentElement.clientWidth * 0.9, + height = document.documentElement.clientHeight - 160, + html = '

          ' + + '' + + '
          ', + dialog = self.createDialog({ + name : name, + width : width, + title : self.lang(name), + body : html + }), + iframe = K('iframe', dialog.div), + doc = K.iframeDoc(iframe); + doc.open(); + + var cssPath = self.options.cssPath; + var jsPath = self.options.jsPath; + var arr = [ + '', + '', + //'', + ''); + // 加载 css + if (!K.isArray(cssPath)) { + cssPath = [cssPath]; + } + if (K.inArray(self.options.pluginsPath+'code/prism.css', cssPath) < 0) { + cssPath.push(self.options.pluginsPath+'code/prism.css'); + } + K.each(cssPath, function(i, path) { + if (path) { + arr.push(''); + } + }); + if (self.options.cssData) { + arr.push(''); + } + arr.push(''); + // 获取编辑器内容 + arr.push(self.fullHtml()); + // 加载脚本 + if (!K.isArray(jsPath)) { + jsPath = [jsPath]; + } + // 加载代码高亮的脚本 + if (K.inArray(self.options.pluginsPath+'code/prism.js', jsPath) < 0) { + jsPath.push(self.options.pluginsPath+'code/prism.js'); + } + K.each(jsPath, function(i, path) { + if (path) { + arr.push(''); + } + }); + arr.push(''); + doc.write(arr.join('\n')); + doc.close(); + K(doc.body).css('background-color', '#FFF'); + iframe[0].contentWindow.focus(); + }); +}); diff --git a/tools/NKeditor/plugins/quickformat/quickformat.js b/tools/NKeditor/plugins/quickformat/quickformat.js new file mode 100644 index 00000000..5b98c722 --- /dev/null +++ b/tools/NKeditor/plugins/quickformat/quickformat.js @@ -0,0 +1,81 @@ +/******************************************************************************* +* KindEditor - WYSIWYG HTML Editor for Internet +* Copyright (C) 2006-2011 kindsoft.net +* +* @author Roddy +* @site http://www.kindsoft.net/ +* @licence http://www.kindsoft.net/license.php +*******************************************************************************/ + +KindEditor.plugin('quickformat', function(K) { + var self = this, name = 'quickformat', + blockMap = K.toMap('blockquote,center,div,h1,h2,h3,h4,h5,h6,p'); + function getFirstChild(knode) { + var child = knode.first(); + while (child && child.first()) { + child = child.first(); + } + return child; + } + self.clickToolbar(name, function() { + self.focus(); + var doc = self.edit.doc, + range = self.cmd.range, + child = K(doc.body).first(), next, + nodeList = [], subList = [], + bookmark = range.createBookmark(true); + while(child) { + next = child.next(); + var firstChild = getFirstChild(child); + if (!firstChild || firstChild.name != 'img') { + if (blockMap[child.name]) { + child.html(child.html().replace(/^(\s| | )+/ig, '')); + child.css('text-indent', '2em'); + } else { + subList.push(child); + } + if (!next || (blockMap[next.name] || blockMap[child.name] && !blockMap[next.name])) { + if (subList.length > 0) { + nodeList.push(subList); + } + subList = []; + } + } + child = next; + } + K.each(nodeList, function(i, subList) { + var wrapper = K('

          ', doc); + subList[0].before(wrapper); + K.each(subList, function(i, knode) { + wrapper.append(knode); + }); + }); + range.moveToBookmark(bookmark); + self.addBookmark(); + }); +}); + +/** +-------------------------- +abcd
          +1234
          + +to + +

          + abcd
          + 1234
          +

          + +-------------------------- + +  abcd1233 +

          1234

          + +to + +

          abcd1233

          +

          1234

          + +-------------------------- +*/ \ No newline at end of file diff --git a/tools/NKeditor/plugins/quote/quote.js b/tools/NKeditor/plugins/quote/quote.js new file mode 100644 index 00000000..b4daca4d --- /dev/null +++ b/tools/NKeditor/plugins/quote/quote.js @@ -0,0 +1,12 @@ +/** + * 引用插件 + * @author yangjian + */ +KindEditor.plugin('quote', function(K) { + var self = this; + var name = 'quote'; + self.clickToolbar(name, function() { + self.insertHtml('

          这里输入引用内容...


          '); + self.focus(); + }); +}); diff --git a/tools/NKeditor/plugins/table/table.js b/tools/NKeditor/plugins/table/table.js new file mode 100644 index 00000000..1068edcd --- /dev/null +++ b/tools/NKeditor/plugins/table/table.js @@ -0,0 +1,746 @@ +/******************************************************************************* +* KindEditor - WYSIWYG HTML Editor for Internet +* Copyright (C) 2006-2011 kindsoft.net +* +* @author Roddy +* @site http://www.kindsoft.net/ +* @licence http://www.kindsoft.net/license.php +*******************************************************************************/ + +KindEditor.plugin('table', function(K) { + var self = this, name = 'table', lang = self.lang(name + '.'), zeroborder = 'ke-zeroborder'; + var borderColor = K.undef(self.options.tableBorderColor, '#cccccc'); + // 设置颜色 + function _setColor(box, color) { + color = color.toUpperCase(); + box.css('background-color', color); + box.css('color', color === '#000000' ? '#FFFFFF' : '#000000'); + box.html(color); + } + // 初始化取色器 + var pickerList = []; + function _initColorPicker(dialogDiv, colorBox) { + colorBox.bind('click,mousedown', function(e){ + e.stopPropagation(); + }); + function removePicker() { + K.each(pickerList, function() { + this.remove(); + }); + pickerList = []; + K(document).unbind('click,mousedown', removePicker); + dialogDiv.unbind('click,mousedown', removePicker); + } + colorBox.click(function(e) { + removePicker(); + var box = K(this), + pos = box.pos(); + var picker = K.colorpicker({ + x : pos.x, + y : pos.y + box.height(), + z : 811214, + selectedColor : K(this).html(), + colors : self.colorTable, + noColor : self.lang('noColor'), + shadowMode : self.shadowMode, + click : function(color) { + _setColor(box, color); + removePicker(); + } + }); + pickerList.push(picker); + K(document).bind('click,mousedown', removePicker); + dialogDiv.bind('click,mousedown', removePicker); + }); + } + // 取得下一行cell的index + function _getCellIndex(table, row, cell) { + var rowSpanCount = 0; + for (var i = 0, len = row.cells.length; i < len; i++) { + if (row.cells[i] == cell) { + break; + } + rowSpanCount += row.cells[i].rowSpan - 1; + } + return cell.cellIndex - rowSpanCount; + } + self.plugin.table = { + //insert or modify table + prop : function(isInsert) { + var html = [ + '
          ', + //rows, cols + '
          ', + '', + '
          ', + lang.rows + '   ', + lang.cols + ' ', + '
          ', + '
          ', + //width, height + '
          ', + '', + '
          ', + lang.width + '   ', + '   ', + lang.height + '   ', + '', + '
          ', + '
          ', + //space, padding + '
          ', + '', + '
          ', + lang.padding + '   ', + lang.spacing + ' ', + '
          ', + '
          ', + //align + '
          ', + '', + '
          ', + '', + '
          ', + '
          ', + //border + '
          ', + '', + '
          ', + lang.borderWidth + '   ', + lang.borderColor + ' ', + '
          ', + '
          ', + //background color + '
          ', + '', + '
          ', + '', + '
          ', + '
          ', + '
          ' + ].join(''); + var bookmark = self.cmd.range.createBookmark(); + var dialog = self.createDialog({ + name : name, + width : 500, + title : self.lang(name), + body : html, + beforeRemove : function() { + colorBox.unbind(); + }, + yesBtn : { + name : self.lang('yes'), + click : function(e) { + var rows = rowsBox.val(), + cols = colsBox.val(), + width = widthBox.val(), + height = heightBox.val(), + widthType = widthTypeBox.val(), + heightType = heightTypeBox.val(), + padding = paddingBox.val(), + spacing = spacingBox.val(), + align = alignBox.val(), + border = borderBox.val(), + borderColor = K(colorBox[0]).html() || '', + bgColor = K(colorBox[1]).html() || ''; + if (rows == 0 || !/^\d+$/.test(rows)) { + K.options.errorMsgHandler(self.lang('invalidRows'), "error"); + rowsBox[0].focus(); + return; + } + if (cols == 0 || !/^\d+$/.test(cols)) { + K.options.errorMsgHandler(self.lang('invalidRows'), "error"); + colsBox[0].focus(); + return; + } + if (!/^\d*$/.test(width)) { + K.options.errorMsgHandler(self.lang('invalidWidth'), "error"); + widthBox[0].focus(); + return; + } + if (!/^\d*$/.test(height)) { + K.options.errorMsgHandler(self.lang('invalidHeight'), "error"); + heightBox[0].focus(); + return; + } + if (!/^\d*$/.test(padding)) { + K.options.errorMsgHandler(self.lang('invalidPadding'), "error"); + paddingBox[0].focus(); + return; + } + if (!/^\d*$/.test(spacing)) { + K.options.errorMsgHandler(self.lang('invalidSpacing'), "error"); + spacingBox[0].focus(); + return; + } + if (!/^\d*$/.test(border)) { + K.options.errorMsgHandler(self.lang('invalidBorder'), "error"); + borderBox[0].focus(); + return; + } + //modify table + if (table) { + if (width !== '') { + table.width(width + widthType); + } else { + table.css('width', ''); + } + if (table[0].width !== undefined) { + table.removeAttr('width'); + } + if (height !== '') { + table.height(height + heightType); + } else { + table.css('height', ''); + } + if (table[0].height !== undefined) { + table.removeAttr('height'); + } + table.css('background-color', bgColor); + if (table[0].bgColor !== undefined) { + table.removeAttr('bgColor'); + } + if (padding !== '') { + table[0].cellPadding = padding; + } else { + table.removeAttr('cellPadding'); + } + if (spacing !== '') { + table[0].cellSpacing = spacing; + } else { + table.removeAttr('cellSpacing'); + } + if (align !== '') { + table[0].align = align; + } else { + table.removeAttr('align'); + } + if (border !== '') { + table.attr('border', border); + } else { + table.removeAttr('border'); + } + if (border === '' || border === '0') { + table.addClass(zeroborder); + } else { + table.removeClass(zeroborder); + } + if (borderColor !== '') { + table.attr('borderColor', borderColor); + } else { + table.removeAttr('borderColor'); + } + self.hideDialog().focus(); + self.cmd.range.moveToBookmark(bookmark); + self.cmd.select(); + self.addBookmark(); + return; + } + //insert new table + var style = ''; + if (width !== '') { + style += 'width:' + width + widthType + ';'; + } + if (height !== '') { + style += 'height:' + height + heightType + ';'; + } + if (bgColor !== '') { + style += 'background-color:' + bgColor + ';'; + } + var html = '
          ') + ''; + } + html += ''; + } + html += '
          '; + if (!K.IE) { + html += '
          '; + } + // 取得range的block标签 + function getAncestorTag(range) { + var ancestor = K(range.commonAncestor()); + while (ancestor) { + if (ancestor.type == 1 && !ancestor.isStyle()) { + break; + } + ancestor = ancestor.parent(); + } + return ancestor; + } + // 如果是在 p 标签中插入表格,则自动删除当前 p 标签 + var tag = getAncestorTag(self.cmd.range); + if (tag.name == 'p') { + tag.before(K(html)); + tag.remove(); + self.cmd.selection(); + self.insertHtml('
          '); + self.select().hideDialog().focus(); + } else { + self.insertHtml(html); + self.select().hideDialog().focus(); + self.addBookmark(); + } + } + } + }), + div = dialog.div, + rowsBox = K('[name="rows"]', div).val(3), + colsBox = K('[name="cols"]', div).val(2), + widthBox = K('[name="width"]', div).val(100), + heightBox = K('[name="height"]', div), + widthTypeBox = K('[name="widthType"]', div), + heightTypeBox = K('[name="heightType"]', div), + paddingBox = K('[name="padding"]', div).val(0), + spacingBox = K('[name="spacing"]', div).val(0), + alignBox = K('[name="align"]', div), + borderBox = K('[name="border"]', div).val(1), + colorBox = K('.ke-input-color', div); + _initColorPicker(div, colorBox.eq(0)); + _initColorPicker(div, colorBox.eq(1)); + //_setColor(colorBox.eq(0), borderColor); + _setColor(colorBox.eq(1), ''); + // foucs and select + rowsBox[0].focus(); + rowsBox[0].select(); + var table; + if (isInsert) { + return; + } + //get selected table node + table = self.plugin.getSelectedTable(); + if (table) { + rowsBox.val(table[0].rows.length); + colsBox.val(table[0].rows.length > 0 ? table[0].rows[0].cells.length : 0); + rowsBox.attr('disabled', true); + colsBox.attr('disabled', true); + var match, + tableWidth = table[0].style.width || table[0].width, + tableHeight = table[0].style.height || table[0].height; + if (tableWidth !== undefined && (match = /^(\d+)((?:px|%)*)$/.exec(tableWidth))) { + widthBox.val(match[1]); + widthTypeBox.val(match[2]); + } else { + widthBox.val(''); + } + if (tableHeight !== undefined && (match = /^(\d+)((?:px|%)*)$/.exec(tableHeight))) { + heightBox.val(match[1]); + heightTypeBox.val(match[2]); + } + paddingBox.val(table[0].cellPadding || ''); + spacingBox.val(table[0].cellSpacing || ''); + alignBox.val(table[0].align || ''); + borderBox.val(table[0].border === undefined ? '' : table[0].border); + _setColor(colorBox.eq(0), K.toHex(table.attr('borderColor') || '')); + _setColor(colorBox.eq(1), K.toHex(table[0].style.backgroundColor || table[0].bgColor || '')); + widthBox[0].focus(); + widthBox[0].select(); + } + }, + //modify cell + cellprop : function() { + var html = [ + '
          ', + //width, height + '
          ', + '', + lang.width + '   ', + '   ', + lang.height + '   ', + '', + '
          ', + //align + '
          ', + '', + lang.textAlign + ' ', + lang.verticalAlign + ' ', + '
          ', + //border + '
          ', + '', + lang.borderWidth + '   ', + lang.borderColor + ' ', + '
          ', + //background color + '
          ', + '', + '', + '
          ', + '
          ' + ].join(''); + var bookmark = self.cmd.range.createBookmark(); + var dialog = self.createDialog({ + name : name, + width : 500, + title : self.lang('tablecell'), + body : html, + beforeRemove : function() { + colorBox.unbind(); + }, + yesBtn : { + name : self.lang('yes'), + click : function(e) { + var width = widthBox.val(), + height = heightBox.val(), + widthType = widthTypeBox.val(), + heightType = heightTypeBox.val(), + padding = paddingBox.val(), + spacing = spacingBox.val(), + textAlign = textAlignBox.val(), + verticalAlign = verticalAlignBox.val(), + border = borderBox.val(), + borderColor = K(colorBox[0]).html() || '', + bgColor = K(colorBox[1]).html() || ''; + if (!/^\d*$/.test(width)) { + K.options.errorMsgHandler(self.lang('invalidWidth'), "error"); + widthBox[0].focus(); + return; + } + if (!/^\d*$/.test(height)) { + K.options.errorMsgHandler(self.lang('invalidHeight'), "error"); + heightBox[0].focus(); + return; + } + if (!/^\d*$/.test(border)) { + K.options.errorMsgHandler(self.lang('invalidBorder'), "error"); + borderBox[0].focus(); + return; + } + cell.css({ + width : width !== '' ? (width + widthType) : '', + height : height !== '' ? (height + heightType) : '', + 'background-color' : bgColor, + 'text-align' : textAlign, + 'vertical-align' : verticalAlign, + 'border-width' : border, + 'border-style' : border !== '' ? 'solid' : '', + 'border-color' : borderColor + }); + self.hideDialog().focus(); + self.cmd.range.moveToBookmark(bookmark); + self.cmd.select(); + self.addBookmark(); + } + } + }), + div = dialog.div, + widthBox = K('[name="width"]', div).val(100), + heightBox = K('[name="height"]', div), + widthTypeBox = K('[name="widthType"]', div), + heightTypeBox = K('[name="heightType"]', div), + paddingBox = K('[name="padding"]', div).val(0), + spacingBox = K('[name="spacing"]', div).val(0), + textAlignBox = K('[name="textAlign"]', div), + verticalAlignBox = K('[name="verticalAlign"]', div), + borderBox = K('[name="border"]', div).val(1), + colorBox = K('.ke-input-color', div); + _initColorPicker(div, colorBox.eq(0)); + _initColorPicker(div, colorBox.eq(1)); + //_setColor(colorBox.eq(0), '#000000'); + _setColor(colorBox.eq(1), ''); + // foucs and select + widthBox[0].focus(); + widthBox[0].select(); + // get selected cell + var cell = self.plugin.getSelectedCell(); + var match, + cellWidth = cell[0].style.width || cell[0].width || '', + cellHeight = cell[0].style.height || cell[0].height || ''; + if ((match = /^(\d+)((?:px|%)*)$/.exec(cellWidth))) { + widthBox.val(match[1]); + widthTypeBox.val(match[2]); + } else { + widthBox.val(''); + } + if ((match = /^(\d+)((?:px|%)*)$/.exec(cellHeight))) { + heightBox.val(match[1]); + heightTypeBox.val(match[2]); + } + textAlignBox.val(cell[0].style.textAlign || ''); + verticalAlignBox.val(cell[0].style.verticalAlign || ''); + var border = cell[0].style.borderWidth || ''; + if (border) { + border = parseInt(border); + } + borderBox.val(border); + _setColor(colorBox.eq(0), K.toHex(cell[0].style.borderColor || '')); + _setColor(colorBox.eq(1), K.toHex(cell[0].style.backgroundColor || '')); + widthBox[0].focus(); + widthBox[0].select(); + }, + insert : function() { + this.prop(true); + }, + 'delete' : function() { + var table = self.plugin.getSelectedTable(); + self.cmd.range.setStartBefore(table[0]).collapse(true); + self.cmd.select(); + table.remove(); + self.addBookmark(); + }, + colinsert : function(offset) { + var table = self.plugin.getSelectedTable()[0], + row = self.plugin.getSelectedRow()[0], + cell = self.plugin.getSelectedCell()[0], + index = cell.cellIndex + offset; + // 取得第一行的index + index += table.rows[0].cells.length - row.cells.length; + + for (var i = 0, len = table.rows.length; i < len; i++) { + var newRow = table.rows[i], + newCell = newRow.insertCell(index); + newCell.innerHTML = K.IE ? '' : '
          '; + // 调整下一行的单元格index + index = _getCellIndex(table, newRow, newCell); + } + self.cmd.range.selectNodeContents(cell).collapse(true); + self.cmd.select(); + self.addBookmark(); + }, + colinsertleft : function() { + this.colinsert(0); + }, + colinsertright : function() { + this.colinsert(1); + }, + rowinsert : function(offset) { + var table = self.plugin.getSelectedTable()[0], + row = self.plugin.getSelectedRow()[0], + cell = self.plugin.getSelectedCell()[0]; + var rowIndex = row.rowIndex; + if (offset === 1) { + rowIndex = row.rowIndex + (cell.rowSpan - 1) + offset; + } + var newRow = table.insertRow(rowIndex); + + for (var i = 0, len = row.cells.length; i < len; i++) { + // 调整cell个数 + if (row.cells[i].rowSpan > 1) { + len -= row.cells[i].rowSpan - 1; + } + var newCell = newRow.insertCell(i); + // copy colspan + if (offset === 1 && row.cells[i].colSpan > 1) { + newCell.colSpan = row.cells[i].colSpan; + } + newCell.innerHTML = K.IE ? '' : '
          '; + } + // 调整rowspan + for (var j = rowIndex; j >= 0; j--) { + var cells = table.rows[j].cells; + if (cells.length > i) { + for (var k = cell.cellIndex; k >= 0; k--) { + if (cells[k].rowSpan > 1) { + cells[k].rowSpan += 1; + } + } + break; + } + } + self.cmd.range.selectNodeContents(cell).collapse(true); + self.cmd.select(); + self.addBookmark(); + }, + rowinsertabove : function() { + this.rowinsert(0); + }, + rowinsertbelow : function() { + this.rowinsert(1); + }, + rowmerge : function() { + var table = self.plugin.getSelectedTable()[0], + row = self.plugin.getSelectedRow()[0], + cell = self.plugin.getSelectedCell()[0], + rowIndex = row.rowIndex, // 当前行的index + nextRowIndex = rowIndex + cell.rowSpan, // 下一行的index + nextRow = table.rows[nextRowIndex]; // 下一行 + // 最后一行不能合并 + if (table.rows.length <= nextRowIndex) { + return; + } + var cellIndex = cell.cellIndex; // 下一行单元格的index + if (nextRow.cells.length <= cellIndex) { + return; + } + var nextCell = nextRow.cells[cellIndex]; // 下一行单元格 + // 上下行的colspan不一致时不能合并 + if (cell.colSpan !== nextCell.colSpan) { + return; + } + cell.rowSpan += nextCell.rowSpan; + nextRow.deleteCell(cellIndex); + self.cmd.range.selectNodeContents(cell).collapse(true); + self.cmd.select(); + self.addBookmark(); + }, + colmerge : function() { + var table = self.plugin.getSelectedTable()[0], + row = self.plugin.getSelectedRow()[0], + cell = self.plugin.getSelectedCell()[0], + rowIndex = row.rowIndex, // 当前行的index + cellIndex = cell.cellIndex, + nextCellIndex = cellIndex + 1; + // 最后一列不能合并 + if (row.cells.length <= nextCellIndex) { + return; + } + var nextCell = row.cells[nextCellIndex]; + // 左右列的rowspan不一致时不能合并 + if (cell.rowSpan !== nextCell.rowSpan) { + return; + } + cell.colSpan += nextCell.colSpan; + row.deleteCell(nextCellIndex); + self.cmd.range.selectNodeContents(cell).collapse(true); + self.cmd.select(); + self.addBookmark(); + }, + rowsplit : function() { + var table = self.plugin.getSelectedTable()[0], + row = self.plugin.getSelectedRow()[0], + cell = self.plugin.getSelectedCell()[0], + rowIndex = row.rowIndex; + // 不是可分割单元格 + if (cell.rowSpan === 1) { + return; + } + var cellIndex = _getCellIndex(table, row, cell); + for (var i = 1, len = cell.rowSpan; i < len; i++) { + var newRow = table.rows[rowIndex + i], + newCell = newRow.insertCell(cellIndex); + if (cell.colSpan > 1) { + newCell.colSpan = cell.colSpan; + } + newCell.innerHTML = K.IE ? '' : '
          '; + // 调整下一行的单元格index + cellIndex = _getCellIndex(table, newRow, newCell); + } + K(cell).removeAttr('rowSpan'); + self.cmd.range.selectNodeContents(cell).collapse(true); + self.cmd.select(); + self.addBookmark(); + }, + colsplit : function() { + var table = self.plugin.getSelectedTable()[0], + row = self.plugin.getSelectedRow()[0], + cell = self.plugin.getSelectedCell()[0], + cellIndex = cell.cellIndex; + // 不是可分割单元格 + if (cell.colSpan === 1) { + return; + } + for (var i = 1, len = cell.colSpan; i < len; i++) { + var newCell = row.insertCell(cellIndex + i); + if (cell.rowSpan > 1) { + newCell.rowSpan = cell.rowSpan; + } + newCell.innerHTML = K.IE ? '' : '
          '; + } + K(cell).removeAttr('colSpan'); + self.cmd.range.selectNodeContents(cell).collapse(true); + self.cmd.select(); + self.addBookmark(); + }, + coldelete : function() { + var table = self.plugin.getSelectedTable()[0], + row = self.plugin.getSelectedRow()[0], + cell = self.plugin.getSelectedCell()[0], + index = cell.cellIndex; + for (var i = 0, len = table.rows.length; i < len; i++) { + var newRow = table.rows[i], + newCell = newRow.cells[index]; + if (newCell.colSpan > 1) { + newCell.colSpan -= 1; + if (newCell.colSpan === 1) { + K(newCell).removeAttr('colSpan'); + } + } else { + newRow.deleteCell(index); + } + // 跳过不需要删除的行 + if (newCell.rowSpan > 1) { + i += newCell.rowSpan - 1; + } + } + if (row.cells.length === 0) { + self.cmd.range.setStartBefore(table).collapse(true); + self.cmd.select(); + K(table).remove(); + } else { + self.cmd.selection(true); + } + self.addBookmark(); + }, + rowdelete : function() { + var table = self.plugin.getSelectedTable()[0], + row = self.plugin.getSelectedRow()[0], + cell = self.plugin.getSelectedCell()[0], + rowIndex = row.rowIndex; + // 从下到上删除 + for (var i = cell.rowSpan - 1; i >= 0; i--) { + table.deleteRow(rowIndex + i); + } + if (table.rows.length === 0) { + self.cmd.range.setStartBefore(table).collapse(true); + self.cmd.select(); + K(table).remove(); + } else { + self.cmd.selection(true); + } + self.addBookmark(); + } + }; + self.clickToolbar(name, self.plugin.table.prop); +}); diff --git a/tools/NKeditor/plugins/template/html/1.html b/tools/NKeditor/plugins/template/html/1.html new file mode 100644 index 00000000..034126b7 --- /dev/null +++ b/tools/NKeditor/plugins/template/html/1.html @@ -0,0 +1,14 @@ + + + + + + +

          + 在此处输入标题 +

          +

          + 在此处输入内容 +

          + + \ No newline at end of file diff --git a/tools/NKeditor/plugins/template/html/2.html b/tools/NKeditor/plugins/template/html/2.html new file mode 100644 index 00000000..dc2584a0 --- /dev/null +++ b/tools/NKeditor/plugins/template/html/2.html @@ -0,0 +1,42 @@ + + + + + + +

          + 标题 +

          + + + + + + + + + + + + + + + +
          +

          标题1

          +
          +

          标题1

          +
          + 内容1 + + 内容2 +
          + 内容3 + + 内容4 +
          +

          + 表格说明 +

          + + \ No newline at end of file diff --git a/tools/NKeditor/plugins/template/html/3.html b/tools/NKeditor/plugins/template/html/3.html new file mode 100644 index 00000000..873f0c65 --- /dev/null +++ b/tools/NKeditor/plugins/template/html/3.html @@ -0,0 +1,36 @@ + + + + + + +

          + 在此处输入内容 +

          +
            +
          1. + 描述1 +
          2. +
          3. + 描述2 +
          4. +
          5. + 描述3 +
          6. +
          +

          + 在此处输入内容 +

          +
            +
          • + 描述1 +
          • +
          • + 描述2 +
          • +
          • + 描述3 +
          • +
          + + \ No newline at end of file diff --git a/tools/NKeditor/plugins/template/template.js b/tools/NKeditor/plugins/template/template.js new file mode 100644 index 00000000..30d0dc34 --- /dev/null +++ b/tools/NKeditor/plugins/template/template.js @@ -0,0 +1,58 @@ +/******************************************************************************* +* KindEditor - WYSIWYG HTML Editor for Internet +* Copyright (C) 2006-2011 kindsoft.net +* +* @author Roddy +* @site http://www.kindsoft.net/ +* @licence http://www.kindsoft.net/license.php +*******************************************************************************/ + +KindEditor.plugin('template', function(K) { + var self = this, name = 'template', lang = self.lang(name + '.'), + htmlPath = self.pluginsPath + name + '/html/'; + function getFilePath(fileName) { + return htmlPath + fileName + '?ver=' + encodeURIComponent(K.DEBUG ? K.TIME : K.VERSION); + } + self.clickToolbar(name, function() { + var lang = self.lang(name + '.'), + arr = ['
          ', + '
          ', + '
          ', + // left start + lang. selectTemplate + ' ', + // right start + ' ', + '
          ', + '
          ', + + //template iframe + '', + '
          '].join(''); + var dialog = self.createDialog({ + name : name, + width : 500, + title : self.lang(name), + body : html, + yesBtn : { + name : self.lang('yes'), + click : function(e) { + var doc = K.iframeDoc(iframe); + self[checkbox[0].checked ? 'html' : 'insertHtml'](doc.body.innerHTML).hideDialog().focus(); + } + } + }); + var selectBox = K('select', dialog.div), + checkbox = K('[name="replaceFlag"]', dialog.div), + iframe = K('iframe', dialog.div); + checkbox[0].checked = true; + iframe.attr('src', getFilePath(selectBox.val())); + selectBox.change(function() { + iframe.attr('src', getFilePath(this.value)); + }); + }); +}); diff --git a/tools/NKeditor/plugins/wordpaste/wordpaste.js b/tools/NKeditor/plugins/wordpaste/wordpaste.js new file mode 100644 index 00000000..22061e15 --- /dev/null +++ b/tools/NKeditor/plugins/wordpaste/wordpaste.js @@ -0,0 +1,51 @@ +/******************************************************************************* +* KindEditor - WYSIWYG HTML Editor for Internet +* Copyright (C) 2006-2011 kindsoft.net +* +* @author Roddy +* @site http://www.kindsoft.net/ +* @licence http://www.kindsoft.net/license.php +*******************************************************************************/ + +KindEditor.plugin('wordpaste', function(K) { + var self = this, name = 'wordpaste'; + self.clickToolbar(name, function() { + var lang = self.lang(name + '.'), + html = '
          ' + + '
          ' + lang.comment + '
          ' + + '' + + '
          ', + dialog = self.createDialog({ + name : name, + width : 450, + title : self.lang(name), + body : html, + yesBtn : { + name : self.lang('yes'), + click : function(e) { + var str = doc.body.innerHTML; + str = K.clearMsWord(str, self.filterMode ? self.htmlTags : K.options.htmlTags); + self.insertHtml(str).hideDialog().focus(); + } + } + }), + div = dialog.div, + iframe = K('iframe', div), + doc = K.iframeDoc(iframe); + if (!K.IE) { + doc.designMode = 'on'; + } + doc.open(); + doc.write('WordPaste'); + doc.write(''); + if (!K.IE) { + doc.write('
          '); + } + doc.write(''); + doc.close(); + if (K.IE) { + doc.body.contentEditable = 'true'; + } + iframe[0].contentWindow.focus(); + }); +}); diff --git a/tools/NKeditor/src/ajax.js b/tools/NKeditor/src/ajax.js new file mode 100644 index 00000000..6cd77c25 --- /dev/null +++ b/tools/NKeditor/src/ajax.js @@ -0,0 +1,85 @@ + +function _loadScript(url, fn) { + + //检查资源是否已经被加载,防止重复加载,浪费资源 + if (K.options.resLoadCache[url]) { + return; + } + var head = document.getElementsByTagName('head')[0] || (_QUIRKS ? document.body : document.documentElement), + script = document.createElement('script'); + head.appendChild(script); + K.options.resLoadCache[url] = 1; + script.src = url; + script.charset = 'utf-8'; + script.onload = script.onreadystatechange = function() { + if (!this.readyState || this.readyState === 'loaded') { + if (fn) { + fn(); + } + script.onload = script.onreadystatechange = null; + head.removeChild(script); + } + }; +} + +// 移除URL里的GET参数 +function _chopQuery(url) { + var index = url.indexOf('?'); + return index > 0 ? url.substr(0, index) : url; +} + +function _loadStyle(url) { + + //检查资源是否已经被加载,防止重复加载,浪费资源 + if (K.options.resLoadCache[url]) { + return; + } + + var head = document.getElementsByTagName('head')[0] || (_QUIRKS ? document.body : document.documentElement), + link = document.createElement('link'), + absoluteUrl = _chopQuery(_formatUrl(url, 'absolute')); + var links = K('link[rel="stylesheet"]', head); + for (var i = 0, len = links.length; i < len; i++) { + if (_chopQuery(_formatUrl(links[i].href, 'absolute')) === absoluteUrl) { + return; + } + } + head.appendChild(link); + K.options.resLoadCache[url] = 1; + link.href = url; + link.rel = 'stylesheet'; +} + +function _ajax(url, fn, method, param, dataType) { + method = method || 'GET'; //POST or GET + dataType = dataType || 'json'; //json or html + var xhr = window.XMLHttpRequest ? new window.XMLHttpRequest() : new ActiveXObject('Microsoft.XMLHTTP'); + xhr.open(method, url, true); + xhr.onreadystatechange = function () { + if (xhr.readyState == 4 && xhr.status == 200) { + if (fn) { + var data = _trim(xhr.responseText); + if (dataType == 'json') { + data = _json(data); + } + fn(data); + } + } + }; + if (method == 'POST') { + var params = []; + _each(param, function(key, val) { + params.push(encodeURIComponent(key) + '=' + encodeURIComponent(val)); + }); + try { + xhr.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded'); + } catch (e) {} + xhr.send(params.join('&')); + } else { + xhr.send(null); + } +} + +K.loadScript = _loadScript; +K.loadStyle = _loadStyle; +K.ajax = _ajax; diff --git a/tools/NKeditor/src/cmd.js b/tools/NKeditor/src/cmd.js new file mode 100644 index 00000000..7db9a302 --- /dev/null +++ b/tools/NKeditor/src/cmd.js @@ -0,0 +1,888 @@ + +// original execCommand +function _nativeCommand(doc, key, val) { + try { + doc.execCommand(key, false, val); + } catch(e) {} +} +// original queryCommandValue +function _nativeCommandValue(doc, key) { + var val = ''; + try { + val = doc.queryCommandValue(key); + } catch (e) {} + if (typeof val !== 'string') { + val = ''; + } + return val; +} +// get current selection of a document +function _getSel(doc) { + var win = _getWin(doc); + return _IERANGE ? doc.selection : win.getSelection(); +} +// get range of current selection +function _getRng(doc) { + var sel = _getSel(doc), rng; + try { + if (sel.rangeCount > 0) { + rng = sel.getRangeAt(0); + } else { + rng = sel.createRange(); + } + } catch(e) {} + if (_IERANGE && (!rng || (!rng.item && rng.parentElement().ownerDocument !== doc))) { + return null; + } + return rng; +} +//将map的复合key转换成单一key +function _singleKeyMap(map) { + var newMap = {}, arr, v; + _each(map, function(key, val) { + arr = key.split(','); + for (var i = 0, len = arr.length; i < len; i++) { + v = arr[i]; + newMap[v] = val; + } + }); + return newMap; +} +//判断一个node是否有指定属性或CSS +function _hasAttrOrCss(knode, map) { + return _hasAttrOrCssByKey(knode, map, '*') || _hasAttrOrCssByKey(knode, map); +} +function _hasAttrOrCssByKey(knode, map, mapKey) { + mapKey = mapKey || knode.name; + if (knode.type !== 1) { + return false; + } + var newMap = _singleKeyMap(map); + if (!newMap[mapKey]) { + return false; + } + var arr = newMap[mapKey].split(','); + for (var i = 0, len = arr.length; i < len; i++) { + var key = arr[i]; + if (key === '*') { + return true; + } + var match = /^(\.?)([^=]+)(?:=([^=]*))?$/.exec(key); + var method = match[1] ? 'css' : 'attr'; + key = match[2]; + var val = match[3] || ''; + if (val === '' && knode[method](key) !== '') { + return true; + } + if (val !== '' && knode[method](key) === val) { + return true; + } + } + return false; +} +//删除一个node的属性和CSS +function _removeAttrOrCss(knode, map) { + if (knode.type != 1) { + return; + } + _removeAttrOrCssByKey(knode, map, '*'); + _removeAttrOrCssByKey(knode, map); +} +function _removeAttrOrCssByKey(knode, map, mapKey) { + mapKey = mapKey || knode.name; + if (knode.type !== 1) { + return; + } + var newMap = _singleKeyMap(map); + if (!newMap[mapKey]) { + return; + } + var arr = newMap[mapKey].split(','), allFlag = false; + for (var i = 0, len = arr.length; i < len; i++) { + var key = arr[i]; + if (key === '*') { + allFlag = true; + break; + } + var match = /^(\.?)([^=]+)(?:=([^=]*))?$/.exec(key); + key = match[2]; + if (match[1]) { + key = _toCamel(key); + if (knode[0].style[key]) { + knode[0].style[key] = ''; + } + } else { + knode.removeAttr(key); + } + } + if (allFlag) { + knode.remove(true); + } +} +//取得最里面的element +function _getInnerNode(knode) { + var inner = knode; + while (inner.first()) { + inner = inner.first(); + } + return inner; +} +//最里面的element为inline element时返回true +function _isEmptyNode(knode) { + if (knode.type != 1 || knode.isSingle()) { + return false; + } + return knode.html().replace(/<[^>]+>/g, '') === ''; +} +//merge two wrapper +//a : +//b : +//result : +function _mergeWrapper(a, b) { + a = a.clone(true); + var lastA = _getInnerNode(a), childA = a, merged = false; + while (b) { + while (childA) { + if (childA.name === b.name) { + _mergeAttrs(childA, b.attr(), b.css()); + merged = true; + } + childA = childA.first(); + } + if (!merged) { + lastA.append(b.clone(false)); + } + merged = false; + b = b.first(); + } + return a; +} +//wrap and merge a node +function _wrapNode(knode, wrapper) { + wrapper = wrapper.clone(true); + //node为text node时 + if (knode.type == 3) { + _getInnerNode(wrapper).append(knode.clone(false)); + knode.replaceWith(wrapper); + return wrapper; + } + //node为element时 + //取得node的wrapper + var nodeWrapper = knode, child; + while ((child = knode.first()) && child.children().length == 1) { + knode = child; + } + //将node的子节点纳入在一个documentFragment里 + child = knode.first(); + var frag = knode.doc.createDocumentFragment(); + while (child) { + frag.appendChild(child[0]); + child = child.next(); + } + wrapper = _mergeWrapper(nodeWrapper, wrapper); + if (frag.firstChild) { + _getInnerNode(wrapper).append(frag); + } + nodeWrapper.replaceWith(wrapper); + return wrapper; +} +//merge attributes and styles +function _mergeAttrs(knode, attrs, styles) { + _each(attrs, function(key, val) { + if (key !== 'style') { + knode.attr(key, val); + } + }); + _each(styles, function(key, val) { + knode.css(key, val); + }); +} +// 判断node是否在pre、style、script里 +function _inPreElement(knode) { + while (knode && knode.name != 'body') { + if (_PRE_TAG_MAP[knode.name] || knode.name == 'div' && knode.hasClass('ke-script')) { + return true; + } + knode = knode.parent(); + } + return false; +} +// create KCmd class +function KCmd(range) { + this.init(range); +} +_extend(KCmd, { + init : function(range) { + var self = this, doc = range.doc; + self.doc = doc; + self.win = _getWin(doc); + self.sel = _getSel(doc); + self.range = range; + }, + selection : function(forceReset) { + var self = this, doc = self.doc, rng = _getRng(doc); + self.sel = _getSel(doc); + if (rng) { + self.range = _range(rng); + if (K(self.range.startContainer).name == 'html') { + self.range.selectNodeContents(doc.body).collapse(false); + } + return self; + } + if (forceReset) { + self.range.selectNodeContents(doc.body).collapse(false); + } + return self; + }, + select : function(hasDummy) { + hasDummy = _undef(hasDummy, true); + var self = this, sel = self.sel, range = self.range.cloneRange().shrink(), + sc = range.startContainer, so = range.startOffset, + ec = range.endContainer, eo = range.endOffset, + doc = _getDoc(sc), win = self.win, rng, hasU200b = false; + // tag内部无内容时选中tag内部,[] + if (hasDummy && sc.nodeType == 1 && range.collapsed) { + if (_IERANGE) { + var dummy = K(' ', doc); + range.insertNode(dummy[0]); + rng = doc.body.createTextRange(); + try { + rng.moveToElementText(dummy[0]); + } catch(ex) {} + rng.collapse(false); + rng.select(); + dummy.remove(); + win.focus(); + return self; + } + if (_WEBKIT) { + var children = sc.childNodes; + if (K(sc).isInline() || so > 0 && K(children[so - 1]).isInline() || children[so] && K(children[so]).isInline()) { + range.insertNode(doc.createTextNode('\u200B')); + hasU200b = true; + } + } + } + //other case + if (_IERANGE) { + try { + rng = range.get(true); + rng.select(); + } catch(e) {} + } else { + if (hasU200b) { + range.collapse(false); + } + rng = range.get(true); + + // Bugfix: firefox browser multiple image upload + if (sel != null) { + sel.removeAllRanges(); + sel.addRange(rng); + } + // Bugfix: https://github.com/kindsoft/kindeditor/issues/54 + if (doc !== document) { + var pos = K(rng.endContainer).pos(); + win.scrollTo(pos.x, pos.y); + } + } + win.focus(); + return self; + }, + wrap : function(val) { + var self = this, doc = self.doc, range = self.range, wrapper; + wrapper = K(val, doc); + // collapsed=true + if (range.collapsed) { + range.shrink(); + range.insertNode(wrapper[0]).selectNodeContents(wrapper[0]); + return self; + } + // block wrapper + if (wrapper.isBlock()) { + var copyWrapper = wrapper.clone(true), child = copyWrapper; + // find inner element + while (child.first()) { + child = child.first(); + } + child.append(range.extractContents()); + range.insertNode(copyWrapper[0]).selectNode(copyWrapper[0]); + return self; + } + // collapsed=false + range.enlarge(); + var bookmark = range.createBookmark(), ancestor = range.commonAncestor(), isStart = false; + K(ancestor).scan(function(node) { + if (!isStart && node == bookmark.start) { + isStart = true; + return; + } + if (isStart) { + if (node == bookmark.end) { + return false; + } + var knode = K(node); + if (_inPreElement(knode)) { + return; + } + if (knode.type == 3 && _trim(node.nodeValue).length > 0) { + // textNode为唯一的子节点时,重新设置node + var parent; + while ((parent = knode.parent()) && parent.isStyle() && parent.children().length == 1) { + knode = parent; + } + _wrapNode(knode, wrapper); + } + } + }); + range.moveToBookmark(bookmark); + return self; + }, + split : function(isStart, map) { + var range = this.range, doc = range.doc; + //get parent node + var tempRange = range.cloneRange().collapse(isStart); + var node = tempRange.startContainer, pos = tempRange.startOffset, + parent = node.nodeType == 3 ? node.parentNode : node, + needSplit = false, knode; + while (parent && parent.parentNode) { + knode = K(parent); + if (map) { + if (!knode.isStyle()) { + break; + } + if (!_hasAttrOrCss(knode, map)) { + break; + } + } else { + if (_NOSPLIT_TAG_MAP[knode.name]) { + break; + } + } + needSplit = true; + parent = parent.parentNode; + } + //split parent node + if (needSplit) { + var dummy = doc.createElement('span'); + range.cloneRange().collapse(!isStart).insertNode(dummy); + if (isStart) { + tempRange.setStartBefore(parent.firstChild).setEnd(node, pos); + } else { + tempRange.setStart(node, pos).setEndAfter(parent.lastChild); + } + var frag = tempRange.extractContents(), + first = frag.firstChild, last = frag.lastChild; + if (isStart) { + tempRange.insertNode(frag); + range.setStartAfter(last).setEndBefore(dummy); + } else { + parent.appendChild(frag); + range.setStartBefore(dummy).setEndBefore(first); + } + //调整endOffset + var dummyParent = dummy.parentNode; + if (dummyParent == range.endContainer) { + var prev = K(dummy).prev(), next = K(dummy).next(); + if (prev && next && prev.type == 3 && next.type == 3) { + //dummy元素的左右都是textNode,fg + range.setEnd(prev[0], prev[0].nodeValue.length); + } else if (!isStart) { + range.setEnd(range.endContainer, range.endOffset - 1); + } + } + dummyParent.removeChild(dummy); + } + return this; + }, + remove : function(map) { + var self = this, doc = self.doc, range = self.range; + range.enlarge(); + //

          [123456789]

          , remove strong + if (range.startOffset === 0) { + var ksc = K(range.startContainer), parent; + while ((parent = ksc.parent()) && parent.isStyle() && parent.children().length == 1) { + ksc = parent; + } + range.setStart(ksc[0], 0); + //

          [abcd

          , remove style + ksc = K(range.startContainer); + if (ksc.isBlock()) { + _removeAttrOrCss(ksc, map); + } + var kscp = ksc.parent(); + if (kscp && kscp.isBlock()) { + _removeAttrOrCss(kscp, map); + } + } + var sc, so; + // collapsed == true + if (range.collapsed) { + self.split(true, map); + // remove empty element + sc = range.startContainer; + so = range.startOffset; + if (so > 0) { + var sb = K(sc.childNodes[so - 1]); + if (sb && _isEmptyNode(sb)) { + sb.remove(); + range.setStart(sc, so - 1); + } + } + var sa = K(sc.childNodes[so]); + if (sa && _isEmptyNode(sa)) { + sa.remove(); + } + // | + if (_isEmptyNode(sc)) { + range.startBefore(sc); + sc.remove(); + } + range.collapse(true); + return self; + } + // split range + self.split(true, map); + self.split(false, map); + // insert dummy element + var startDummy = doc.createElement('span'), endDummy = doc.createElement('span'); + range.cloneRange().collapse(false).insertNode(endDummy); + range.cloneRange().collapse(true).insertNode(startDummy); + // select element + var nodeList = [], cmpStart = false; + K(range.commonAncestor()).scan(function(node) { + if (!cmpStart && node == startDummy) { + cmpStart = true; + return; + } + if (node == endDummy) { + return false; + } + if (cmpStart) { + nodeList.push(node); + } + }); + // remove dummy element + K(startDummy).remove(); + K(endDummy).remove(); + // remove empty element + sc = range.startContainer; + so = range.startOffset; + var ec = range.endContainer, eo = range.endOffset; + if (so > 0) { + var startBefore = K(sc.childNodes[so - 1]); + if (startBefore && _isEmptyNode(startBefore)) { + startBefore.remove(); + range.setStart(sc, so - 1); + if (sc == ec) { + range.setEnd(ec, eo - 1); + } + } + // abc[def]ghi,分割后HTML变成 + // abc[def]ghi + var startAfter = K(sc.childNodes[so]); + if (startAfter && _isEmptyNode(startAfter)) { + startAfter.remove(); + if (sc == ec) { + range.setEnd(ec, eo - 1); + } + } + } + var endAfter = K(ec.childNodes[range.endOffset]); + if (endAfter && _isEmptyNode(endAfter)) { + endAfter.remove(); + } + var bookmark = range.createBookmark(true); + // remove attributes or styles + _each(nodeList, function(i, node) { + _removeAttrOrCss(K(node), map); + }); + range.moveToBookmark(bookmark); + return self; + }, + commonNode : function(map) { + var range = this.range; + var ec = range.endContainer, eo = range.endOffset, + node = (ec.nodeType == 3 || eo === 0) ? ec : ec.childNodes[eo - 1]; + function find(node) { + var child = node, parent = node; + while (parent) { + if (_hasAttrOrCss(K(parent), map)) { + return K(parent); + } + parent = parent.parentNode; + } + while (child && (child = child.lastChild)) { + if (_hasAttrOrCss(K(child), map)) { + return K(child); + } + } + return null; + } + var cNode = find(node); + if (cNode) { + return cNode; + } + //123|4567 + //123|
          + if (node.nodeType == 1 || (ec.nodeType == 3 && eo === 0)) { + var prev = K(node).prev(); + if (prev) { + return find(prev); + } + } + return null; + }, + commonAncestor : function(tagName) { + var range = this.range, + sc = range.startContainer, so = range.startOffset, + ec = range.endContainer, eo = range.endOffset, + startNode = (sc.nodeType == 3 || so === 0) ? sc : sc.childNodes[so - 1], + endNode = (ec.nodeType == 3 || eo === 0) ? ec : ec.childNodes[eo - 1]; + function find(node) { + while (node) { + if (node.nodeType == 1) { + if (node.tagName.toLowerCase() === tagName) { + return node; + } + } + node = node.parentNode; + } + return null; + } + var start = find(startNode), end = find(endNode); + if (start && end && start === end) { + return K(start); + } + return null; + }, + // Reference: document.queryCommandState + // TODO + state : function(key) { + var self = this, doc = self.doc, bool = false; + try { + bool = doc.queryCommandState(key); + } catch (e) {} + return bool; + }, + // Reference: document.queryCommandValue + val : function(key) { + var self = this, doc = self.doc, range = self.range; + function lc(val) { + return val.toLowerCase(); + } + key = lc(key); + var val = '', knode; + if (key === 'fontfamily' || key === 'fontname') { + val = _nativeCommandValue(doc, 'fontname'); + val = val.replace(/['"]/g, ''); + return lc(val); + } + if (key === 'formatblock') { + val = _nativeCommandValue(doc, key); + if (val === '') { + knode = self.commonNode({'h1,h2,h3,h4,h5,h6,p,div,pre,address' : '*'}); + if (knode) { + val = knode.name; + } + } + if (val === 'Normal') { + val = 'p'; + } + return lc(val); + } + if (key === 'fontsize') { + knode = self.commonNode({'*' : '.font-size'}); + if (knode) { + val = knode.css('font-size'); + } + return lc(val); + } + if (key === 'forecolor') { + knode = self.commonNode({'*' : '.color'}); + if (knode) { + val = knode.css('color'); + } + val = _toHex(val); + if (val === '') { + val = 'default'; + } + return lc(val); + } + if (key === 'hilitecolor') { + knode = self.commonNode({'*' : '.background-color'}); + if (knode) { + val = knode.css('background-color'); + } + val = _toHex(val); + if (val === '') { + val = 'default'; + } + return lc(val); + } + return val; + }, + toggle : function(wrapper, map) { + var self = this; + if (self.commonNode(map)) { + self.remove(map); + } else { + self.wrap(wrapper); + } + return self.select(); + }, + bold : function() { + return this.toggle('', { + span : '.font-weight=bold', + strong : '*', + b : '*' + }); + }, + italic : function() { + return this.toggle('', { + span : '.font-style=italic', + em : '*', + i : '*' + }); + }, + underline : function() { + return this.toggle('', { + span : '.text-decoration=underline', + u : '*' + }); + }, + strikethrough : function() { + return this.toggle('', { + span : '.text-decoration=line-through', + s : '*' + }); + }, + forecolor : function(val) { + return this.wrap('').select(); + // return this.toggle('', { + // span : '.color=' + val, + // font : 'color' + // }); + }, + hilitecolor : function(val) { + return this.wrap('').select(); + // return this.toggle('', { + // span : '.background-color=' + val + // }); + }, + fontsize : function(val) { + return this.wrap('').select(); + // return this.toggle('', { + // span : '.font-size=' + val, + // font : 'size' + // }); + }, + fontname : function(val) { + return this.fontfamily(val); + }, + fontfamily : function(val) { + return this.wrap('').select(); + // return this.toggle('', { + // span : '.font-family=' + val, + // font : 'face' + // }); + }, + removeformat : function() { + var map = { + '*' : '.font-weight,.font-style,.text-decoration,.color,.background-color,.font-size,.font-family,.text-indent' + }, + tags = _STYLE_TAG_MAP; + _each(tags, function(key, val) { + map[key] = '*'; + }); + this.remove(map); + return this.select(); + }, + inserthtml : function(val, quickMode) { + var self = this, range = self.range; + if (val === '') { + return self; + } + //if (_inPreElement(K(range.startContainer))) { + // return self; + //} + // IE专用,优化性能 + function pasteHtml(range, val) { + val = '' + val; + var rng = range.get(); + if (rng.item) { + rng.item(0).outerHTML = val; + } else { + rng.pasteHTML(val); + } + var temp = range.doc.getElementById('__kindeditor_temp_tag__'); + temp.parentNode.removeChild(temp); + var newRange = _toRange(rng); + range.setEnd(newRange.endContainer, newRange.endOffset); + range.collapse(false); + self.select(false); + } + // 全浏览器兼容,在IE上速度慢 + function insertHtml(range, val) { + var doc = range.doc, + frag = doc.createDocumentFragment(); + K('@' + val, doc).each(function() { + frag.appendChild(this); + }); + range.deleteContents(); + range.insertNode(frag); + range.collapse(false); + self.select(false); + } + if (_IERANGE && quickMode) { + try { + pasteHtml(range, val); + } catch(e) { + insertHtml(range, val); + } + return self; + } + insertHtml(range, val); + return self; + }, + hr : function() { + return this.inserthtml('
          '); + }, + print : function() { + this.win.print(); + return this; + }, + insertimage : function(url, title, width, height, border, align) { + title = _undef(title, ''); + border = _undef(border, 0); + var html = ''; + return self.inserthtml(html); + } + if (range.isControl()) { + var node = K(range.startContainer.childNodes[range.startOffset]); + html += '>'; + node.after(K(html, doc)); + node.next().append(node); + range.selectNode(node[0]); + return self.select(); + } + function setAttr(node, url, type) { + K(node).attr('href', url).attr('data-ke-src', url); + if (type) { + K(node).attr('target', type); + } else { + K(node).removeAttr('target'); + } + } + // Bugfix: https://github.com/kindsoft/kindeditor/issues/117 + // [IE] 当两个A标签并排在一起中间没有别的内容,修改后面的链接地址时,前面的链接地址也被改掉。 + var sc = range.startContainer, so = range.startOffset, + ec = range.endContainer, eo = range.endOffset; + if (sc.nodeType == 1 && sc === ec && so + 1 === eo) { + var child = sc.childNodes[so]; + if (child.nodeName.toLowerCase() == 'a') { + setAttr(child, url, type); + return self; + } + } + _nativeCommand(doc, 'createlink', '__kindeditor_temp_url__'); + K('a[href="__kindeditor_temp_url__"]', doc).each(function() { + setAttr(this, url, type); + }); + return self; + }, + unlink : function() { + var self = this, doc = self.doc, range = self.range; + self.select(); + if (range.collapsed) { + var a = self.commonNode({ a : '*' }); + if (a) { + range.selectNode(a.get()); + self.select(); + } + _nativeCommand(doc, 'unlink', null); + if (_WEBKIT && K(range.startContainer).name === 'img') { + var parent = K(range.startContainer).parent(); + if (parent.name === 'a') { + parent.remove(true); + } + } + } else { + _nativeCommand(doc, 'unlink', null); + } + return self; + } +}); + +_each(('formatblock,selectall,justifyleft,justifycenter,justifyright,justifyfull,insertorderedlist,' + + 'insertunorderedlist,indent,outdent,subscript,superscript').split(','), function(i, name) { + KCmd.prototype[name] = function(val) { + var self = this; + self.select(); + _nativeCommand(self.doc, name, val); + // Bugfix: [IE] 先选中图片后居中,再左对齐,光标跳到顶部 + if (_IERANGE && _inArray(name, 'justifyleft,justifycenter,justifyright,justifyfull'.split(',')) >= 0) { + self.selection(); + } + // 在webkit和firefox上需要重新选取range,否则有时候会报错 + if (!_IERANGE || _inArray(name, 'formatblock,selectall,insertorderedlist,insertunorderedlist'.split(',')) >= 0) { + self.selection(); + } + return self; + }; +}); + +_each('cut,copy,paste'.split(','), function(i, name) { + KCmd.prototype[name] = function() { + var self = this; + if (!self.doc.queryCommandSupported(name)) { + throw 'not supported'; + } + self.select(); + _nativeCommand(self.doc, name, null); + return self; + }; +}); + +function _cmd(mixed) { + // mixed is a node + if (mixed.nodeName) { + var doc = _getDoc(mixed); + mixed = _range(doc).selectNodeContents(doc.body).collapse(false); + } + // mixed is a KRange + return new KCmd(mixed); +} + +K.CmdClass = KCmd; +K.cmd = _cmd; diff --git a/tools/NKeditor/src/colorpicker.js b/tools/NKeditor/src/colorpicker.js new file mode 100644 index 00000000..442042ba --- /dev/null +++ b/tools/NKeditor/src/colorpicker.js @@ -0,0 +1,79 @@ + +// create KColorPicker class +function KColorPicker(options) { + this.init(options); +} +_extend(KColorPicker, KWidget, { + init : function(options) { + var self = this; + options.z = options.z || 811213; + KColorPicker.parent.init.call(self, options); + var colors = options.colors || [ + ['#E53333', '#E56600', '#FF9900', '#64451D', '#DFC5A4', '#FFE500'], + ['#009900', '#006600', '#99BB00', '#B8D100', '#60D978', '#00D5FF'], + ['#337FE5', '#003399', '#4C33E5', '#9933E5', '#CC33E5', '#EE33EE'], + ['#FFFFFF', '#CCCCCC', '#999999', '#666666', '#333333', '#000000'] + ]; + self.selectedColor = (options.selectedColor || '').toLowerCase(); + self._cells = []; + self.div.addClass('ke-colorpicker').bind('click,mousedown', function(e){ + e.stopPropagation(); + }).attr('unselectable', 'on'); + var table = self.doc.createElement('table'); + self.div.append(table); + table.className = 'ke-colorpicker-table'; + table.cellPadding = 0; + table.cellSpacing = 0; + table.border = 0; + var row = table.insertRow(0), cell = row.insertCell(0); + cell.colSpan = colors[0].length; + self._addAttr(cell, '', 'ke-colorpicker-cell-top'); + for (var i = 0; i < colors.length; i++) { + row = table.insertRow(i + 1); + for (var j = 0; j < colors[i].length; j++) { + cell = row.insertCell(j); + self._addAttr(cell, colors[i][j], 'ke-colorpicker-cell'); + } + } + }, + _addAttr : function(cell, color, cls) { + var self = this; + cell = K(cell).addClass(cls); + if (self.selectedColor === color.toLowerCase()) { + cell.addClass('ke-colorpicker-cell-selected'); + } + cell.attr('title', color || self.options.noColor); + cell.mouseover(function(e) { + K(this).addClass('ke-colorpicker-cell-on'); + }); + cell.mouseout(function(e) { + K(this).removeClass('ke-colorpicker-cell-on'); + }); + cell.click(function(e) { + e.stop(); + self.options.click.call(K(this), color); + }); + if (color) { + cell.append(K('
          ').css('background-color', color)); + } else { + cell.html(self.options.noColor); + } + K(cell).attr('unselectable', 'on'); + self._cells.push(cell); + }, + remove : function() { + var self = this; + _each(self._cells, function() { + this.unbind(); + }); + KColorPicker.parent.remove.call(self); + return self; + } +}); + +function _colorpicker(options) { + return new KColorPicker(options); +} + +K.ColorPickerClass = KColorPicker; +K.colorpicker = _colorpicker; diff --git a/tools/NKeditor/src/config.js b/tools/NKeditor/src/config.js new file mode 100644 index 00000000..3305f56a --- /dev/null +++ b/tools/NKeditor/src/config.js @@ -0,0 +1,115 @@ + +function _getBasePath() { + var els = document.getElementsByTagName('script'), src; + for (var i = 0, len = els.length; i < len; i++) { + src = els[i].src || ''; + if (/NKeditor[\w\-\.]*\.js/i.test(src)) { + return src.substring(0, src.lastIndexOf('/') + 1); + } + } + return ''; +} + +K.basePath = _getBasePath(); + +K.options = { + designMode : true, + fullscreenMode : false, + filterMode : true, + wellFormatMode : true, + loadStyleMode : true, + basePath : K.basePath, + themesPath : K.basePath + 'themes/', + langPath : K.basePath + 'lang/', + pluginsPath : K.basePath + 'plugins/', + themeType : 'primary', // default, simple + langType : 'zh-CN', + urlType : '', // "", relative, absolute, domain + newlineTag : 'p', // p, br + resizeType : 2, // 0, 1, 2 + syncType : 'form', // "", form + pasteType : 2, // 0:none, 1:text, 2:HTML + dialogAlignType : 'page', // page, editor + useContextmenu : true, + fullscreenShortcut : false, + bodyClass : 'ke-content', + indentChar : '\t', // \t, " " + //设置默认的css路径 + cssPath : [], //String or Array + jsPath: [], // + showHelpGrid: false, // 是否给 p ul li div 显示轮廓线 + cssData : '', + minWidth : 650, + minHeight : 300, + minChangeSize : 50, + zIndex : 811213, + items : [ + 'source', 'undo', 'redo', 'preview', 'print', 'template', 'code', 'quote', 'cut', 'copy', 'paste', + 'plainpaste', 'wordpaste', 'justifyleft', 'justifycenter', 'justifyright', + 'justifyfull', 'insertorderedlist', 'insertunorderedlist', 'indent', 'outdent', 'subscript', + 'superscript', 'clearhtml', 'quickformat', 'selectall', '/', + 'formatblock', 'fontname', 'fontsize', 'forecolor', 'hilitecolor', 'bold', + 'italic', 'underline', 'strikethrough', 'lineheight', 'removeformat', 'image', 'multiimage','graft', + 'flash', 'media', 'insertfile', 'table', 'hr', 'emoticons', 'baidumap', 'pagebreak', + 'anchor', 'link', 'unlink', 'about','fullscreen' + ], + + noDisableItems : ['source', 'fullscreen'], + colorTable : [ + ['#E53333', '#E56600', '#FF9900', '#64451D', '#DFC5A4', '#FFE500'], + ['#009900', '#006600', '#99BB00', '#B8D100', '#60D978', '#00D5FF'], + ['#337FE5', '#003399', '#4C33E5', '#9933E5', '#CC33E5', '#EE33EE'], + ['#FFFFFF', '#DDDDDD', '#999999', '#666666', '#333333', '#000000'] + ], + fontSizeTable : ['9px', '10px', '12px', '14px', '16px', '18px', '24px', '32px'], + htmlTags : { + font : ['id', 'class', 'color', 'size', 'face', '.background-color'], + span : [ + 'id', 'class', '.color', '.background-color', '.font-size', '.font-family', '.background', + '.font-weight', '.font-style', '.text-decoration', '.vertical-align', '.line-height' + ], + div : [ + 'id', 'class', 'align', '.border', '.margin', '.padding', '.text-align', '.color', + '.background-color', '.font-size', '.font-family', '.font-weight', '.background', + '.font-style', '.text-decoration', '.vertical-align', '.margin-left' + ], + table: [ + 'id', 'class', 'border', 'cellspacing', 'cellpadding', 'width', 'height', 'align', 'bordercolor', + '.padding', '.margin', '.border', 'bgcolor', '.text-align', '.color', '.background-color', + '.font-size', '.font-family', '.font-weight', '.font-style', '.text-decoration', '.background', + '.width', '.height', '.border-collapse' + ], + 'td,th': [ + 'id', 'class', 'align', 'valign', 'width', 'height', 'colspan', 'rowspan', 'bgcolor', + '.text-align', '.color', '.background-color', '.font-size', '.font-family', '.font-weight', + '.font-style', '.text-decoration', '.vertical-align', '.background', '.border' + ], + a : ['id', 'class', 'href', 'target', 'name'], + embed : ['id', 'class', 'src', 'width', 'height', 'type', 'loop', 'autostart', 'quality', '.width', '.height', 'align', 'allowscriptaccess', 'wmode'], + img : ['id', 'class', 'src', 'width', 'height', 'border', 'alt', 'title', 'align', '.width', '.height', '.border'], + 'p,ol,ul,li,blockquote,h1,h2,h3,h4,h5,h6' : [ + 'id', 'class', 'align', '.text-align', '.color', '.background-color', '.font-size', '.font-family', '.background', + '.font-weight', '.font-style', '.text-decoration', '.vertical-align', '.text-indent', '.margin-left' + ], + pre : ['id', 'class'], + hr : ['id', 'class', '.page-break-after'], + 'br,tbody,tr,strong,b,sub,sup,em,i,u,strike,s,del' : ['id', 'class'], + iframe : ['id', 'class', 'src', 'frameborder', 'width', 'height', '.width', '.height'] + }, + layout : '
          ', + //修复 Ajax 提交表单时获取不到 textarea 值的 bug + afterBlur : function () { + this.sync(); + }, + errorMsgHandler : function (message, type) { + console.log(message); + console.log(type); + alert(message); + }, + dialogOffset : 0, //对话框距离页面顶部的位置,默认为0居中, + allowUploadGraft : true, //是否允许保存涂鸦 + resLoadCache : { //静态资源加载缓存 + + }, + tableBorderColor : '#cccccc', //表格默认边框颜色 +}; diff --git a/tools/NKeditor/src/core.js b/tools/NKeditor/src/core.js new file mode 100644 index 00000000..c919e960 --- /dev/null +++ b/tools/NKeditor/src/core.js @@ -0,0 +1,240 @@ + +/**/ var undefined; + +if (!window.console) { + window.console = {}; +} +if (!console.log) { + console.log = function () {}; +} + +var _VERSION = '${VERSION}', + _ua = navigator.userAgent.toLowerCase(), + _IE = _ua.indexOf('msie') > -1 && _ua.indexOf('opera') == -1, + _NEWIE = _ua.indexOf('msie') == -1 && _ua.indexOf('trident') > -1, + _GECKO = _ua.indexOf('gecko') > -1 && _ua.indexOf('khtml') == -1, + _WEBKIT = _ua.indexOf('applewebkit') > -1, + _OPERA = _ua.indexOf('opera') > -1, + _MOBILE = _ua.indexOf('mobile') > -1, + _IOS = /ipad|iphone|ipod/.test(_ua), + _QUIRKS = document.compatMode != 'CSS1Compat', + _IERANGE = !window.getSelection, + _matches = /(?:msie|firefox|webkit|opera)[\/:\s](\d+)/.exec(_ua), + _V = _matches ? _matches[1] : '0', + _TIME = new Date().getTime(); + +function _isArray(val) { + if (!val) { + return false; + } + return Object.prototype.toString.call(val) === '[object Array]'; +} + +function _isFunction(val) { + if (!val) { + return false; + } + return Object.prototype.toString.call(val) === '[object Function]'; +} + +function _inArray(val, arr) { + for (var i = 0, len = arr.length; i < len; i++) { + if (val === arr[i]) { + return i; + } + } + return -1; +} + +function _each(obj, fn) { + if (_isArray(obj)) { + for (var i = 0, len = obj.length; i < len; i++) { + if (fn.call(obj[i], i, obj[i]) === false) { + break; + } + } + } else { + for (var key in obj) { + if (obj.hasOwnProperty(key)) { + if (fn.call(obj[key], key, obj[key]) === false) { + break; + } + } + } + } +} + +function _trim(str) { + // Forgive various special whitespaces, e.g.  (\xa0). + return str.replace(/(?:^[ \t\n\r]+)|(?:[ \t\n\r]+$)/g, ''); +} + +function _inString(val, str, delimiter) { + delimiter = delimiter === undefined ? ',' : delimiter; + return (delimiter + str + delimiter).indexOf(delimiter + val + delimiter) >= 0; +} + +function _addUnit(val, unit) { + unit = unit || 'px'; + return val && /^-?\d+(?:\.\d+)?$/.test(val) ? val + unit : val; +} + +function _removeUnit(val) { + var match; + return val && (match = /(\d+)/.exec(val)) ? parseInt(match[1], 10) : 0; +} + +function _escape(val) { + return val.replace(/&/g, '&').replace(//g, '>').replace(/"/g, '"'); +} + +function _unescape(val) { + return val.replace(/</g, '<').replace(/>/g, '>').replace(/"/g, '"').replace(/&/g, '&'); +} + +function _toCamel(str) { + var arr = str.split('-'); + str = ''; + _each(arr, function(key, val) { + str += (key > 0) ? val.charAt(0).toUpperCase() + val.substr(1) : val; + }); + return str; +} + +function _toHex(val) { + function hex(d) { + var s = parseInt(d, 10).toString(16).toUpperCase(); + return s.length > 1 ? s : '0' + s; + } + return val.replace(/rgb\s*\(\s*(\d+)\s*,\s*(\d+)\s*,\s*(\d+)\s*\)/ig, + function($0, $1, $2, $3) { + return '#' + hex($1) + hex($2) + hex($3); + } + ); +} + +function _toMap(val, delimiter) { + delimiter = delimiter === undefined ? ',' : delimiter; + var map = {}, arr = _isArray(val) ? val : val.split(delimiter), match; + _each(arr, function(key, val) { + if ((match = /^(\d+)\.\.(\d+)$/.exec(val))) { + for (var i = parseInt(match[1], 10); i <= parseInt(match[2], 10); i++) { + map[i.toString()] = true; + } + } else { + map[val] = true; + } + }); + return map; +} + +function _toArray(obj, offset) { + return Array.prototype.slice.call(obj, offset || 0); +} + +function _undef(val, defaultVal) { + return val === undefined ? defaultVal : val; +} + +function _invalidUrl(url) { + return !url || /[<>"]/.test(url); +} + +function _addParam(url, param) { + return url.indexOf('?') >= 0 ? url + '&' + param : url + '?' + param; +} + +function _extend(child, parent, proto) { + if (!proto) { + proto = parent; + parent = null; + } + var childProto; + if (parent) { + var fn = function () {}; + fn.prototype = parent.prototype; + childProto = new fn(); + _each(proto, function(key, val) { + childProto[key] = val; + }); + } else { + childProto = proto; + } + childProto.constructor = child; + child.prototype = childProto; + child.parent = parent ? parent.prototype : null; +} + +//From http://www.json.org/json2.js +function _json(text) { + var match; + if ((match = /\{[\s\S]*\}|\[[\s\S]*\]/.exec(text))) { + text = match[0]; + } + var cx = /[\u0000\u00ad\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff]/g; + cx.lastIndex = 0; + if (cx.test(text)) { + text = text.replace(cx, function (a) { + return '\\u' + ('0000' + a.charCodeAt(0).toString(16)).slice(-4); + }); + } + if (/^[\],:{}\s]*$/. + test(text.replace(/\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g, '@'). + replace(/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g, ']'). + replace(/(?:^|:|,)(?:\s*\[)+/g, ''))) { + return eval('(' + text + ')'); + } + throw 'JSON parse error'; +} + +//合并对象 +function _merge(distObj, obj) { + for (var name in distObj) { + obj[name] = distObj[name]; + } + return obj; +} + +var _round = Math.round; + +var K = { + DEBUG : false, + VERSION : _VERSION, + IE : _IE, + GECKO : _GECKO, + WEBKIT : _WEBKIT, + OPERA : _OPERA, + V : _V, + TIME : _TIME, + each : _each, + isArray : _isArray, + isFunction : _isFunction, + inArray : _inArray, + inString : _inString, + trim : _trim, + addUnit : _addUnit, + removeUnit : _removeUnit, + escape : _escape, + unescape : _unescape, + toCamel : _toCamel, + toHex : _toHex, + toMap : _toMap, + toArray : _toArray, + undef : _undef, + invalidUrl : _invalidUrl, + addParam : _addParam, + extend : _extend, + merge : _merge, + json : _json +}; + +var _INLINE_TAG_MAP = _toMap('a,abbr,acronym,b,basefont,bdo,big,br,button,cite,code,del,dfn,em,font,i,img,input,ins,kbd,label,map,q,s,samp,select,small,span,strike,strong,sub,sup,textarea,tt,u,var'), + _BLOCK_TAG_MAP = _toMap('address,applet,blockquote,body,center,dd,dir,div,dl,dt,fieldset,form,frameset,h1,h2,h3,h4,h5,h6,head,hr,html,iframe,ins,isindex,li,map,menu,meta,noframes,noscript,object,ol,p,pre,script,style,table,tbody,td,tfoot,th,thead,title,tr,ul'), + _SINGLE_TAG_MAP = _toMap('area,base,basefont,br,col,frame,hr,img,input,isindex,link,meta,param,embed'), + _STYLE_TAG_MAP = _toMap('b,basefont,big,del,em,font,i,s,small,span,strike,strong,sub,sup,u'), + _CONTROL_TAG_MAP = _toMap('img,table,input,textarea,button'), + _PRE_TAG_MAP = _toMap('pre,style,script'), + _NOSPLIT_TAG_MAP = _toMap('html,head,body,td,tr,table,ol,ul,li'), + _AUTOCLOSE_TAG_MAP = _toMap('colgroup,dd,dt,li,options,p,td,tfoot,th,thead,tr'), + _FILL_ATTR_MAP = _toMap('checked,compact,declare,defer,disabled,ismap,multiple,nohref,noresize,noshade,nowrap,readonly,selected'), + _VALUE_TAG_MAP = _toMap('input,button,textarea,select'); diff --git a/tools/NKeditor/src/dialog.js b/tools/NKeditor/src/dialog.js new file mode 100644 index 00000000..3d91ef57 --- /dev/null +++ b/tools/NKeditor/src/dialog.js @@ -0,0 +1,134 @@ + +function _createButton(arg) { + arg = arg || {}; + var name = arg.name || '', + btn = K(''+name+''); + if (arg.click) { + btn.click(arg.click); + } + return btn; +} + +// create KToolbar class +function KDialog(options) { + this.init(options); +} +_extend(KDialog, KWidget, { + init : function(options) { + var self = this; + options.z = options.z || 811213; + options.shadowMode = false; + options.autoScroll = _undef(options.autoScroll, true); + KDialog.parent.init.call(self, options); + var title = options.title, + body = K(options.body, self.doc), + previewBtn = options.previewBtn, + yesBtn = options.yesBtn, + noBtn = options.noBtn, + closeBtn = options.closeBtn, + showMask = _undef(options.showMask, true); + + self.div.addClass('ke-dialog ke-animated').bind('click,mousedown', function(e){ + e.stopPropagation(); + }); + var contentDiv = K('
          ').appendTo(self.div); + var headerDiv = K('
          '); + contentDiv.append(headerDiv); + headerDiv.html(title); + self.closeIcon = K('').click(closeBtn.click); + headerDiv.append(self.closeIcon); + self.draggable({ + clickEl : headerDiv, + beforeDrag : options.beforeDrag + }); + var bodyDiv = K('
          '); + contentDiv.append(bodyDiv); + bodyDiv.append(body); + var footerDiv = K(''); + if (previewBtn || yesBtn || noBtn) { + self.div.append(footerDiv); + contentDiv.height(self.div.height() - footerDiv.height()); + } + _each([ + { btn : previewBtn, name : 'preview' }, + { btn : yesBtn, name : 'yes' }, + { btn : noBtn, name : 'no' } + ], function() { + if (this.btn) { + var button = _createButton(this.btn); + button.addClass('ke-dialog-' + this.name); + footerDiv.append(button); + } + }); + if (self.height) { + bodyDiv.height(_removeUnit(self.height) - headerDiv.height() - footerDiv.height()); + } + self.div.width(self.div.width()); + self.div.height(self.div.height()); + self.mask = null; + if (showMask) { + var docEl = _docElement(self.doc), + docWidth = Math.max(docEl.scrollWidth, docEl.clientWidth), + docHeight = Math.max(docEl.scrollHeight, docEl.clientHeight); + self.mask = _widget({ + x : 0, + y : 0, + z : self.z - 1, + cls : 'ke-dialog-mask', + width : docWidth, + height : docHeight + }); + } + self.autoPos(self.div.width(), self.div.height()); + self.footerDiv = footerDiv; + self.bodyDiv = bodyDiv; + self.headerDiv = headerDiv; + self.isLoading = false; + }, + setMaskIndex : function(z) { + var self = this; + self.mask.div.css('z-index', z); + }, + showLoading : function(msg) { + msg = _undef(msg, ''); + var self = this, body = self.bodyDiv; + self.loading = K('
          ' + msg + '
          ') + .width(body.width()).height(body.height()) + .css('top', self.headerDiv.height() + 'px'); + body.css('visibility', 'hidden').after(self.loading); + self.isLoading = true; + return self; + }, + hideLoading : function() { + this.loading && this.loading.remove(); + this.bodyDiv.css('visibility', 'visible'); + this.isLoading = false; + return this; + }, + remove : function() { + var self = this; + if (self.options.beforeRemove) { + self.options.beforeRemove.call(self); + } + self.mask && self.mask.remove(); + self.iframeMask && self.iframeMask.remove(); + self.closeIcon.unbind(); + K('input', self.div).unbind(); + K('button', self.div).unbind(); + self.footerDiv.unbind(); + self.bodyDiv.unbind(); + self.headerDiv.unbind(); + K('iframe', self.div).each(function() { + //this.src = 'javascript:false'; + K(this).remove(); + }); + KDialog.parent.remove.call(self); + return self; + } +}); + +function _dialog(options) { + return new KDialog(options); +} +K.DialogClass = KDialog; +K.dialog = _dialog; diff --git a/tools/NKeditor/src/edit.js b/tools/NKeditor/src/edit.js new file mode 100644 index 00000000..ec966037 --- /dev/null +++ b/tools/NKeditor/src/edit.js @@ -0,0 +1,397 @@ + +function _iframeDoc(iframe) { + iframe = _get(iframe); + return iframe.contentDocument || iframe.contentWindow.document; +} + +var html, _direction = ''; +if ((html = document.getElementsByTagName('html'))) { + _direction = html[0].dir; +} + +function _getInitHtml(options) { + var themesPath = _undef(options.themesPath, ''), + bodyClass = options.bodyClass, + cssPath = options.cssPath, + jsPath = options.jsPath, + cssData = options.cssData; + var arr = [ + (_direction === '' ? '' : ''), + '', + //'', + ''); + if (!_isArray(cssPath)) { + cssPath = [cssPath]; + } + if (_inArray(K.basePath+'themes/app.css', cssPath) < 0) { + cssPath.push(K.basePath+'themes/app.css'); + } + _each(cssPath, function(i, path) { + if (path) { + arr.push(''); + } + }); + if (cssData) { + arr.push(''); + } + arr.push(''); + + if (!_isArray(jsPath)) { + jsPath = [jsPath]; + } + _each(jsPath, function(i, path) { + if (path) { + arr.push(''); + } + }); + arr.push(''); + return arr.join('\n'); +} + +function _elementVal(knode, val) { + if (knode.hasVal()) { + if (val === undefined) { + var html = knode.val(); + // 去除内容为空的p标签 + // https://github.com/kindsoft/kindeditor/pull/52 + html = html.replace(/(<(?:p|p\s[^>]*)>) *(<\/p>)/ig, ''); + return html; + } + return knode.val(val); + } + return knode.html(val); +} + +// create KEdit class +function KEdit(options) { + this.init(options); +} +_extend(KEdit, KWidget, { + init : function(options) { + var self = this; + KEdit.parent.init.call(self, options); + + self.srcElement = K(options.srcElement); + self.div.addClass('ke-edit'); + self.designMode = _undef(options.designMode, true); + self.beforeGetHtml = options.beforeGetHtml; + self.beforeSetHtml = options.beforeSetHtml; + self.afterSetHtml = options.afterSetHtml; + + var isDocumentDomain = location.protocol != 'res:' && location.host.replace(/:\d+/, '') !== document.domain, + srcScript = ('document.open();' + + (isDocumentDomain ? 'document.domain="' + document.domain + '";' : '') + + 'document.close();'), + iframeSrc = _IE ? ' src="javascript:void(function(){' + encodeURIComponent(srcScript) + '}())"' : ''; + self.iframe = K('').css('width', '100%'); + self.textarea = K('').css('width', '100%'); + self.tabIndex = isNaN(parseInt(options.tabIndex, 10)) ? self.srcElement.attr('tabindex') : parseInt(options.tabIndex, 10); + self.iframe.attr('tabindex', self.tabIndex); + self.textarea.attr('tabindex', self.tabIndex); + + if (self.width) { + self.setWidth(self.width); + } + if (self.height) { + self.setHeight(self.height); + } + if (self.designMode) { + self.textarea.hide(); + } else { + self.iframe.hide(); + } + function ready() { + var doc = _iframeDoc(self.iframe); + doc.open(); + if (isDocumentDomain) { + doc.domain = document.domain; + } + doc.write(_getInitHtml(self.options)); + doc.close(); + self.win = self.iframe[0].contentWindow; + self.doc = doc; + var cmd = _cmd(doc); + // add events + self.afterChange(function(e) { + cmd.selection(); + }); + // [WEBKIT] select an image after click the image + if (_WEBKIT) { + K(doc).click(function(e) { + if (K(e.target).name === 'img') { + cmd.selection(true); + cmd.range.selectNode(e.target); + cmd.select(); + } + }); + } + if (_IE) { + // Fix bug: https://github.com/kindsoft/kindeditor/issues/53 + self._mousedownHandler = function() { + var newRange = cmd.range.cloneRange(); + newRange.shrink(); + if (newRange.isControl()) { + self.blur(); + } + }; + K(document).mousedown(self._mousedownHandler); + // [IE] bug: clear iframe when press backspase key + K(doc).keydown(function(e) { + if (e.which == 8) { + cmd.selection(); + var rng = cmd.range; + if (rng.isControl()) { + rng.collapse(true); + K(rng.startContainer.childNodes[rng.startOffset]).remove(); + e.preventDefault(); + } + } + }); + } + self.cmd = cmd; + self.html(_elementVal(self.srcElement)); + if (_IE) { + doc.body.disabled = true; + doc.body.contentEditable = true; + doc.body.removeAttribute('disabled'); + } else { + doc.designMode = 'on'; + } + if (options.afterCreate) { + options.afterCreate.call(self); + } + } + if (isDocumentDomain) { + self.iframe.bind('load', function(e) { + self.iframe.unbind('load'); + if (_IE) { + ready(); + } else { + setTimeout(ready, 0); + } + }); + } + self.div.append(self.iframe); + self.div.append(self.textarea); + self.srcElement.hide(); + !isDocumentDomain && ready(); + }, + setWidth : function(val) { + var self = this; + val = _addUnit(val); + self.width = val; + self.div.css('width', val); + return self; + }, + setHeight : function(val) { + var self = this; + val = _addUnit(val); + self.height = val; + self.div.css('height', val); + self.iframe.css('height', val); + // 校正IE6和IE7的textarea高度 + if ((_IE && _V < 8) || _QUIRKS) { + val = _addUnit(_removeUnit(val) - 2); + } + self.textarea.css('height', val); + return self; + }, + remove : function() { + var self = this, doc = self.doc; + // remove events + K(doc.body).unbind(); + K(doc).unbind(); + K(self.win).unbind(); + if (self._mousedownHandler) { + K(document).unbind('mousedown', self._mousedownHandler); + } + // remove elements + _elementVal(self.srcElement, self.html()); + self.srcElement.show(); + // doc.write(''); + self.iframe.unbind(); + self.textarea.unbind(); + KEdit.parent.remove.call(self); + }, + html : function(val, isFull) { + var self = this, doc = self.doc; + // design mode + if (self.designMode) { + var body = doc.body; + // get + if (val === undefined) { + if (isFull) { + val = '' + body.parentNode.innerHTML + ''; + } else { + val = body.innerHTML; + } + if (self.beforeGetHtml) { + val = self.beforeGetHtml(val); + } + // bugfix: Firefox自动生成一个br标签 + if (_GECKO && val == '
          ') { + val = ''; + } + return val; + } + // set + if (self.beforeSetHtml) { + val = self.beforeSetHtml(val); + } + // IE9 Bugfix: https://github.com/kindsoft/kindeditor/issues/62 + if (_IE && _V >= 9) { + val = val.replace(/(<.*?checked=")checked(".*>)/ig, '$1$2'); + } + K(body).html(val); + if (self.afterSetHtml) { + self.afterSetHtml(); + } + return self; + } + // source mode + if (val === undefined) { + return self.textarea.val(); + } + self.textarea.val(val); + return self; + }, + design : function(bool) { + var self = this, val; + if (bool === undefined ? !self.designMode : bool) { + if (!self.designMode) { + val = self.html(); + + self.designMode = true; + self.textarea.hide(); + + self.html(val); + + // cache + var iframe = self.iframe; + var height = _removeUnit(self.height); + + iframe.height(height - 2); + iframe.show(); + + // safari iframe scrollbar hack + setTimeout(function() { + iframe.height(height); + }, 0); + } + } else { + if (self.designMode) { + val = self.html(); + self.designMode = false; + self.html(val); + self.iframe.hide(); + self.textarea.show(); + } + } + return self.focus(); + }, + focus : function() { + var self = this; + self.designMode ? self.win.focus() : self.textarea[0].focus(); + return self; + }, + blur : function() { + var self = this; + if (_IE) { + var input = K('', self.div); + self.div.append(input); + input[0].focus(); + input.remove(); + } else { + self.designMode ? self.win.blur() : self.textarea[0].blur(); + } + return self; + }, + afterChange : function(fn) { + var self = this, doc = self.doc, body = doc.body; + K(doc).keyup(function(e) { + if (!e.ctrlKey && !e.altKey && _CHANGE_KEY_MAP[e.which]) { + fn(e); + } + }); + K(doc).mouseup(fn).contextmenu(fn); + K(self.win).blur(fn); + function timeoutHandler(e) { + setTimeout(function() { + fn(e); + }, 1); + } + K(body).bind('paste', timeoutHandler); + K(body).bind('cut', timeoutHandler); + return self; + } +}); + +function _edit(options) { + return new KEdit(options); +} + +K.EditClass = KEdit; +K.edit = _edit; +K.iframeDoc = _iframeDoc; diff --git a/tools/NKeditor/src/event.js b/tools/NKeditor/src/event.js new file mode 100644 index 00000000..bf1b3bb1 --- /dev/null +++ b/tools/NKeditor/src/event.js @@ -0,0 +1,389 @@ + +var _useCapture = false; + +/** +DOM_VK_BACK_SPACE : 8 +DOM_VK_TAB : 9 +DOM_VK_RETURN : 13 +DOM_VK_SPACE : 32 +DOM_VK_PAGE_UP : 33 +DOM_VK_PAGE_DOWN : 34 +DOM_VK_END : 35 +DOM_VK_HOME : 36 +DOM_VK_LEFT : 37 +DOM_VK_UP : 38 +DOM_VK_RIGHT : 39 +DOM_VK_DOWN : 40 +DOM_VK_DELETE : 46 +DOM_VK_0 ~ DOM_VK_9 : 48 ~ 57 +DOM_VK_SEMICOLON : 59 (;:) +DOM_VK_EQUALS : 61 (=+) (+) +DOM_VK_A ~ DOM_VK_Z : 65 ~ 90 +DOM_VK_MULTIPLY : 106 (*) +DOM_VK_SUBTRACT : 109 (-_) (-) +DOM_VK_DECIMAL : 110 (.) +DOM_VK_DIVIDE : 111 (/) +DOM_VK_COMMA : 188 (,<) +DOM_VK_PERIOD : 190 (.>) +DOM_VK_SLASH : 191 (/?) +DOM_VK_BACK_QUOTE : 192 (`~) +DOM_VK_OPEN_BRACKET : 219 ([{) +DOM_VK_BACK_SLASH : 220 (\|) +DOM_VK_CLOSE_BRACKET : 221 (]}) +DOM_VK_QUOTE : 222 ('") +*/ +// 输入文字的键值 +var _INPUT_KEY_MAP = _toMap('8,9,13,32,46,48..57,59,61,65..90,106,109..111,188,190..192,219..222'); +// 移动光标的键值 +var _CURSORMOVE_KEY_MAP = _toMap('33..40'); +// 输入文字或移动光标的键值 +var _CHANGE_KEY_MAP = {}; +_each(_INPUT_KEY_MAP, function(key, val) { + _CHANGE_KEY_MAP[key] = val; +}); +_each(_CURSORMOVE_KEY_MAP, function(key, val) { + _CHANGE_KEY_MAP[key] = val; +}); + +// add native event +function _bindEvent(el, type, fn) { + if (el.addEventListener){ + el.addEventListener(type, fn, _useCapture); + } else if (el.attachEvent){ + el.attachEvent('on' + type, fn); + } +} +// remove native event +function _unbindEvent(el, type, fn) { + if (el.removeEventListener){ + el.removeEventListener(type, fn, _useCapture); + } else if (el.detachEvent){ + el.detachEvent('on' + type, fn); + } +} + +var _EVENT_PROPS = ('altKey,attrChange,attrName,bubbles,button,cancelable,charCode,clientX,clientY,ctrlKey,currentTarget,' + + 'data,detail,eventPhase,fromElement,handler,keyCode,metaKey,newValue,offsetX,offsetY,originalTarget,pageX,' + + 'pageY,prevValue,relatedNode,relatedTarget,screenX,screenY,shiftKey,srcElement,target,toElement,view,wheelDelta,which').split(','); + +// create KEvent class +function KEvent(el, event) { + this.init(el, event); +} +_extend(KEvent, { + init : function(el, event) { + var self = this, doc = el.ownerDocument || el.document || el; + self.event = event; + _each(_EVENT_PROPS, function(key, val) { + self[val] = event[val]; + }); + if (!self.target) { + self.target = self.srcElement || doc; + } + if (self.target.nodeType === 3) { + self.target = self.target.parentNode; + } + if (!self.relatedTarget && self.fromElement) { + self.relatedTarget = self.fromElement === self.target ? self.toElement : self.fromElement; + } + if (self.pageX == null && self.clientX != null) { + var d = doc.documentElement, body = doc.body; + self.pageX = self.clientX + (d && d.scrollLeft || body && body.scrollLeft || 0) - (d && d.clientLeft || body && body.clientLeft || 0); + self.pageY = self.clientY + (d && d.scrollTop || body && body.scrollTop || 0) - (d && d.clientTop || body && body.clientTop || 0); + } + if (!self.which && ((self.charCode || self.charCode === 0) ? self.charCode : self.keyCode)) { + self.which = self.charCode || self.keyCode; + } + if (!self.metaKey && self.ctrlKey) { + self.metaKey = self.ctrlKey; + } + if (!self.which && self.button !== undefined) { + self.which = (self.button & 1 ? 1 : (self.button & 2 ? 3 : (self.button & 4 ? 2 : 0))); + } + /** + DOM_VK_SEMICOLON : 59 (;:) + - IE,WEBKIT: 186 + - GECKO,OPERA : 59 + DOM_VK_EQUALS : 61 (=+) + - IE,WEBKIT : 187 + - GECKO : 107 + - OPERA : 61 + DOM_VK_NUMPAD0 ~ DOM_VK_NUMPAD9 : 96 ~ 105 + - IE、WEBKIT,GECKO : 96 ~ 105 + - OPERA : 48 ~ 57 + DOM_VK_MULTIPLY : 106 (*) + - IE、WEBKIT,GECKO : 106 + - OPERA : 42 + DOM_VK_ADD : 107 (+) + - IE、WEBKIT,GECKO : 107 + - OPERA : 43 + DOM_VK_SUBTRACT : 109 (-_) (-) + - IE,WEBKIT : 189, 109 + - GECKO : 109, 109 + - OPERA : 109, 45 + DOM_VK_DECIMAL : 110 (.) + - IE、WEBKIT,GECKO : 110 + - OPERA : 78 + DOM_VK_DIVIDE : 111 (/) + - IE、WEBKIT,GECKO : 111 + - OPERA : 47 + + Reference: + https://developer.mozilla.org/en/DOM/Event/UIEvent/KeyEvent + http://msdn.microsoft.com/en-us/library/ms536940(v=VS.85).aspx + */ + switch (self.which) { + case 186 : + self.which = 59; + break; + case 187 : + case 107 : + case 43 : + self.which = 61; + break; + case 189 : + case 45 : + self.which = 109; + break; + case 42 : + self.which = 106; + break; + case 47 : + self.which = 111; + break; + case 78 : + self.which = 110; + break; + } + if (self.which >= 96 && self.which <= 105) { + self.which -= 48; + } + }, + preventDefault : function() { + var ev = this.event; + if (ev.preventDefault) { + ev.preventDefault(); + } else { + ev.returnValue = false; + } + }, + stopPropagation : function() { + var ev = this.event; + if (ev.stopPropagation) { + ev.stopPropagation(); + } else { + ev.cancelBubble = true; + } + }, + stop : function() { + this.preventDefault(); + this.stopPropagation(); + } +}); + +var _eventExpendo = 'kindeditor_' + _TIME, _eventId = 0, _eventData = {}; + +function _getId(el) { + return el[_eventExpendo] || null; +} + +function _setId(el) { + el[_eventExpendo] = ++_eventId; + return _eventId; +} + +function _removeId(el) { + try { + delete el[_eventExpendo]; + } catch(e) { + if (el.removeAttribute) { + el.removeAttribute(_eventExpendo); + } + } +} + +function _bind(el, type, fn) { + if (type.indexOf(',') >= 0) { + _each(type.split(','), function() { + _bind(el, this, fn); + }); + return; + } + var id = _getId(el); + if (!id) { + id = _setId(el); + } + if (_eventData[id] === undefined) { + _eventData[id] = {}; + } + var events = _eventData[id][type]; + if (events && events.length > 0) { + _unbindEvent(el, type, events[0]); + } else { + _eventData[id][type] = []; + _eventData[id].el = el; + } + events = _eventData[id][type]; + if (events.length === 0) { + events[0] = function(e) { + var kevent = e ? new KEvent(el, e) : undefined; + _each(events, function(i, event) { + if (i > 0 && event) { + event.call(el, kevent); + } + }); + }; + } + if (_inArray(fn, events) < 0) { + events.push(fn); + } + _bindEvent(el, type, events[0]); +} + +function _unbind(el, type, fn) { + if (type && type.indexOf(',') >= 0) { + _each(type.split(','), function() { + _unbind(el, this, fn); + }); + return; + } + var id = _getId(el); + if (!id) { + return; + } + if (type === undefined) { + if (id in _eventData) { + _each(_eventData[id], function(key, events) { + if (key != 'el' && events.length > 0) { + _unbindEvent(el, key, events[0]); + } + }); + delete _eventData[id]; + _removeId(el); + } + return; + } + if (!_eventData[id]) { + return; + } + var events = _eventData[id][type]; + if (events && events.length > 0) { + if (fn === undefined) { + _unbindEvent(el, type, events[0]); + delete _eventData[id][type]; + } else { + _each(events, function(i, event) { + if (i > 0 && event === fn) { + events.splice(i, 1); + } + }); + if (events.length == 1) { + _unbindEvent(el, type, events[0]); + delete _eventData[id][type]; + } + } + var count = 0; + _each(_eventData[id], function() { + count++; + }); + if (count < 2) { + delete _eventData[id]; + _removeId(el); + } + } +} + +function _fire(el, type) { + if (type.indexOf(',') >= 0) { + _each(type.split(','), function() { + _fire(el, this); + }); + return; + } + var id = _getId(el); + if (!id) { + return; + } + var events = _eventData[id][type]; + if (_eventData[id] && events && events.length > 0) { + events[0](); + } +} + +function _ctrl(el, key, fn) { + var self = this; + key = /^\d{2,}$/.test(key) ? key : key.toUpperCase().charCodeAt(0); + _bind(el, 'keydown', function(e) { + if (e.ctrlKey && e.which == key && !e.shiftKey && !e.altKey) { + fn.call(el); + e.stop(); + } + }); +} + +var _readyFinished = false; + +function _ready(fn) { + if (_readyFinished) { + fn(KindEditor); + return; + } + var loaded = false; + function readyFunc() { + if (!loaded) { + loaded = true; + fn(KindEditor); + _readyFinished = true; + } + } + function ieReadyFunc() { + if (!loaded) { + try { + document.documentElement.doScroll('left'); + } catch(e) { + setTimeout(ieReadyFunc, 100); + return; + } + readyFunc(); + } + } + function ieReadyStateFunc() { + if (document.readyState === 'complete') { + readyFunc(); + } + } + if (document.addEventListener) { + _bind(document, 'DOMContentLoaded', readyFunc); + } else if (document.attachEvent) { + _bind(document, 'readystatechange', ieReadyStateFunc); + // 在跨域的frame里调用会报错 + var toplevel = false; + try { + toplevel = window.frameElement == null; + } catch(e) {} + if (document.documentElement.doScroll && toplevel) { + ieReadyFunc(); + } + } + _bind(window, 'load', readyFunc); +} + +/** + Note: + 发现绑定dbclick事件后移除element会有内存泄漏,以下代码也不起作用。 + Reference: + http://isaacschlueter.com/2006/10/msie-memory-leaks/ + http://msdn.microsoft.com/en-us/library/bb250448.aspx +*/ +if (window.attachEvent) { + window.attachEvent('onunload', function() { + _each(_eventData, function(key, events) { + if (events.el) { + _unbind(events.el); + } + }); + }); +} + +K.ctrl = _ctrl; +K.ready = _ready; diff --git a/tools/NKeditor/src/footer.js b/tools/NKeditor/src/footer.js new file mode 100644 index 00000000..f2046e9e --- /dev/null +++ b/tools/NKeditor/src/footer.js @@ -0,0 +1,2 @@ + +})(window); diff --git a/tools/NKeditor/src/header.js b/tools/NKeditor/src/header.js new file mode 100644 index 00000000..9b7fa112 --- /dev/null +++ b/tools/NKeditor/src/header.js @@ -0,0 +1,15 @@ +/******************************************************************************* +* KindEditor - WYSIWYG HTML Editor for Internet +* Copyright (C) 2006-${THISYEAR} kindsoft.net +* +* @author Roddy +* @website http://www.kindsoft.net/ +* @licence http://www.kindsoft.net/license.php +* @version ${VERSION} +*******************************************************************************/ + +(function (window, undefined) { + + if (window.KindEditor) { + return; + } diff --git a/tools/NKeditor/src/html.js b/tools/NKeditor/src/html.js new file mode 100644 index 00000000..dbf437a1 --- /dev/null +++ b/tools/NKeditor/src/html.js @@ -0,0 +1,435 @@ +function _getCssList(css) { + css = css.replace(/"/g, '"'); + + var list = {}, + reg = /\s*([\w\-]+)\s*:([^;]*)(;|$)/g, + match; + while ((match = reg.exec(css))) { + var key = _trim(match[1].toLowerCase()), + val = _trim(_toHex(match[2])); + list[key] = val; + } + return list; +} + +function _getAttrList(tag) { + var list = {}, + reg = /\s+(?:([\w\-:]+)|(?:([\w\-:]+)=([^\s"'<>]+))|(?:([\w\-:"]+)="([^"]*)")|(?:([\w\-:"]+)='([^']*)'))(?=(?:\s|\/|>)+)/g, + match; + while ((match = reg.exec(tag))) { + var key = (match[1] || match[2] || match[4] || match[6]).toLowerCase(), + val = (match[2] ? match[3] : (match[4] ? match[5] : match[7])) || ''; + list[key] = val; + } + return list; +} + +function _addClassToTag(tag, className) { + if (/\s+class\s*=/.test(tag)) { + tag = tag.replace(/(\s+class=["']?)([^"']*)(["']?[\s>])/, function($0, $1, $2, $3) { + if ((' ' + $2 + ' ').indexOf(' ' + className + ' ') < 0) { + return $2 === '' ? $1 + className + $3 : $1 + $2 + ' ' + className + $3; + } else { + return $0; + } + }); + } else { + tag = tag.substr(0, tag.length - 1) + ' class="' + className + '">'; + } + return tag; +} + +function _formatCss(css) { + var str = ''; + _each(_getCssList(css), function(key, val) { + str += key + ':' + val + ';'; + }); + return str; +} + +function _formatUrl(url, mode, host, pathname) { + mode = _undef(mode, '').toLowerCase(); + // 移除连续斜线,比如,http://localhost/upload/file/201205//maincus.swf + // base64 data 除外 + if (url.substr(0, 5) != 'data:') { + url = url.replace(/([^:])\/\//g, '$1/'); + } + if (_inArray(mode, ['absolute', 'relative', 'domain']) < 0) { + return url; + } + host = host || location.protocol + '//' + location.host; + if (pathname === undefined) { + var m = location.pathname.match(/^(\/.*)\//); + pathname = m ? m[1] : ''; + } + var match; + if ((match = /^(\w+:\/\/[^\/]*)/.exec(url))) { + if (match[1] !== host) { + return url; + } + } else if (/^\w+:/.test(url)) { + return url; + } + function getRealPath(path) { + var parts = path.split('/'), paths = []; + for (var i = 0, len = parts.length; i < len; i++) { + var part = parts[i]; + if (part == '..') { + if (paths.length > 0) { + paths.pop(); + } + } else if (part !== '' && part != '.') { + paths.push(part); + } + } + return '/' + paths.join('/'); + } + if (/^\//.test(url)) { + url = host + getRealPath(url.substr(1)); + } else if (!/^\w+:\/\//.test(url)) { + url = host + getRealPath(pathname + '/' + url); + } + function getRelativePath(path, depth) { + if (url.substr(0, path.length) === path) { + var arr = []; + for (var i = 0; i < depth; i++) { + arr.push('..'); + } + var prefix = '.'; + if (arr.length > 0) { + prefix += '/' + arr.join('/'); + } + if (pathname == '/') { + prefix += '/'; + } + return prefix + url.substr(path.length); + } else { + if ((match = /^(.*)\//.exec(path))) { + return getRelativePath(match[1], ++depth); + } + } + } + if (mode === 'relative') { + url = getRelativePath(host + pathname, 0).substr(2); + } else if (mode === 'absolute') { + if (url.substr(0, host.length) === host) { + url = url.substr(host.length); + } + } + return url; +} + +function _formatHtml(html, htmlTags, urlType, wellFormatted, indentChar) { + // null or undefined: object == null + if (html == null) { + html = ''; + } + urlType = urlType || ''; + wellFormatted = _undef(wellFormatted, false); + indentChar = _undef(indentChar, '\t'); + var fontSizeList = 'xx-small,x-small,small,medium,large,x-large,xx-large'.split(','); + // 将pre里的br转换成\n + html = html.replace(/(<(?:pre|pre\s[^>]*)>)([\s\S]*?)(<\/pre>)/ig, function($0, $1, $2, $3) { + return $1 + $2.replace(/<(?:br|br\s[^>]*)>/ig, '\n') + $3; + }); + //

          to

          + html = html.replace(/<(?:br|br\s[^>]*)\s*\/?>\s*<\/p>/ig, '

          '); + //

          to


          + html = html.replace(/(<(?:p|p\s[^>]*)>)\s*(<\/p>)/ig, '$1
          $2'); + // empty char + html = html.replace(/\u200B/g, ''); + // © + html = html.replace(/\u00A9/g, '©'); + // ® + html = html.replace(/\u00AE/g, '®'); + // Bugfix: + // https://github.com/kindsoft/kindeditor/issues/147 + html = html.replace(/\u2003/g, ' '); + html = html.replace(/\u3000/g, ' '); + // Bugfix: + // https://github.com/kindsoft/kindeditor/issues/116 + // https://github.com/kindsoft/kindeditor/issues/145 + html = html.replace(/<[^>]+/g, function($0) { + return $0.replace(/\s+/g, ' '); + }); + + var htmlTagMap = {}; + if (htmlTags) { + // 展开htmlTags里的key + _each(htmlTags, function(key, val) { + var arr = key.split(','); + for (var i = 0, len = arr.length; i < len; i++) { + htmlTagMap[arr[i]] = _toMap(val); + } + }); + // 删除script和style里的内容 + if (!htmlTagMap.script) { + html = html.replace(/(<(?:script|script\s[^>]*)>)([\s\S]*?)(<\/script>)/ig, ''); + } + if (!htmlTagMap.style) { + html = html.replace(/(<(?:style|style\s[^>]*)>)([\s\S]*?)(<\/style>)/ig, ''); + } + } + var re = /(\s*)<(\/)?([\w\-:]+)((?:\s+|(?:\s+[\w\-:]+)|(?:\s+[\w\-:]+=[^\s"'<>]+)|(?:\s+[\w\-:"]+="[^"]*")|(?:\s+[\w\-:"]+='[^']*'))*)(\/)?>(\s*)/g; + var tagStack = []; + html = html.replace(re, function($0, $1, $2, $3, $4, $5, $6) { + var full = $0, + startNewline = $1 || '', + startSlash = $2 || '', + tagName = $3.toLowerCase(), + attr = $4 || '', + endSlash = $5 ? ' ' + $5 : '', + endNewline = $6 || ''; + + // # 这里修复插入代码时,与代码高亮插件 prism 冲突的 bug + if (tagName == 'code') { + return full; + } + // 不在名单里的过滤掉 + if (htmlTags && !htmlTagMap[tagName]) { + return ''; + } + // 无闭合标签的自动添加斜线 + if (endSlash === '' && _SINGLE_TAG_MAP[tagName]) { + endSlash = ' /'; + } + // inline tag时自动将多个空白转换成一个空格 + if (_INLINE_TAG_MAP[tagName]) { + if (startNewline) { + startNewline = ' '; + } + if (endNewline) { + endNewline = ' '; + } + } + // pre,style,script tag的格式化 + if (_PRE_TAG_MAP[tagName]) { + if (startSlash) { + endNewline = '\n'; + } else { + startNewline = '\n'; + } + } + // br tag + if (wellFormatted && tagName == 'br') { + endNewline = '\n'; + } + // block tag的格式化 + if (_BLOCK_TAG_MAP[tagName] && !_PRE_TAG_MAP[tagName]) { + if (wellFormatted) { + if (startSlash && tagStack.length > 0 && tagStack[tagStack.length - 1] === tagName) { + tagStack.pop(); + } else { + tagStack.push(tagName); + } + startNewline = '\n'; + endNewline = '\n'; + for (var i = 0, len = startSlash ? tagStack.length : tagStack.length - 1; i < len; i++) { + startNewline += indentChar; + if (!startSlash) { + endNewline += indentChar; + } + } + if (endSlash) { + tagStack.pop(); + } else if (!startSlash) { + endNewline += indentChar; + } + } else { + startNewline = endNewline = ''; + } + } + if (attr !== '') { + var attrMap = _getAttrList(full); + // 将font tag转换成span tag + if (tagName === 'font') { + var fontStyleMap = {}, fontStyle = ''; + _each(attrMap, function(key, val) { + if (key === 'color') { + fontStyleMap.color = val; + delete attrMap[key]; + } + if (key === 'size') { + fontStyleMap['font-size'] = fontSizeList[parseInt(val, 10) - 1] || ''; + delete attrMap[key]; + } + if (key === 'face') { + fontStyleMap['font-family'] = val; + delete attrMap[key]; + } + if (key === 'style') { + fontStyle = val; + } + }); + if (fontStyle && !/;$/.test(fontStyle)) { + fontStyle += ';'; + } + _each(fontStyleMap, function(key, val) { + if (val === '') { + return; + } + if (/\s/.test(val)) { + val = "'" + val + "'"; + } + fontStyle += key + ':' + val + ';'; + }); + attrMap.style = fontStyle; + } + // 处理attribute和style + _each(attrMap, function(key, val) { + // 补全单独属性 + if (_FILL_ATTR_MAP[key]) { + attrMap[key] = key; + } + // 处理URL + if (_inArray(key, ['src', 'href']) >= 0) { + attrMap[key] = _formatUrl(val, urlType); + } + // 过滤属性 + if (htmlTags && key !== 'style' && !htmlTagMap[tagName]['*'] && !htmlTagMap[tagName][key] || + tagName === 'body' && key === 'contenteditable' || + /^kindeditor_\d+$/.test(key)) { + delete attrMap[key]; + } + if (key === 'style' && val !== '') { + var styleMap = _getCssList(val); + _each(styleMap, function(k, v) { + // 过滤样式 + if (htmlTags && !htmlTagMap[tagName].style && !htmlTagMap[tagName]['.' + k]) { + delete styleMap[k]; + } + }); + var style = ''; + _each(styleMap, function(k, v) { + style += k + ':' + v + ';'; + }); + attrMap.style = style; + } + }); + attr = ''; + _each(attrMap, function(key, val) { + if (key === 'style' && val === '') { + return; + } + val = val.replace(/"/g, '"'); + attr += ' ' + key + '="' + val + '"'; + }); + } + if (tagName === 'font') { + tagName = 'span'; + } + return startNewline + '<' + startSlash + tagName + attr + endSlash + '>' + endNewline; + }); + // 将pre里的\n转换成 临时标签 + \n,防止被替换 + html = html.replace(/(<(?:pre|pre\s[^>]*)>)([\s\S]*?)(<\/pre>)/ig, function($0, $1, $2, $3) { + return $1 + $2.replace(/\n/g, '\n') + $3; + }); + html = html.replace(/\n\s*\n/g, '\n'); + // 删除临时标签 + html = html.replace(/\n/g, '\n'); + return _trim(html); +} +// 清理MS Word专用标签 +function _clearMsWord(html, htmlTags) { + html = html.replace(//ig, '') + .replace(//ig, '') + .replace(/]*>[\s\S]*?<\/style>/ig, '') + .replace(/]*>[\s\S]*?<\/script>/ig, '') + .replace(/]+>[\s\S]*?<\/w:[^>]+>/ig, '') + .replace(/]+>[\s\S]*?<\/o:[^>]+>/ig, '') + .replace(/[\s\S]*?<\/xml>/ig, '') + .replace(/<(?:table|td)[^>]*>/ig, function(full) { + return full.replace(/border-bottom:([#\w\s]+)/ig, 'border:$1'); + }); + return _formatHtml(html, htmlTags); +} +// 根据URL判断 media type +function _mediaType(src) { + if (/\.(rm|rmvb)(\?|$)/i.test(src)) { + return 'audio/x-pn-realaudio-plugin'; + } + if (/\.(swf|flv)(\?|$)/i.test(src)) { + return 'application/x-shockwave-flash'; + } + return 'video/x-ms-asf-plugin'; +} +// 根据 media type取得className +function _mediaClass(type) { + if (/realaudio/i.test(type)) { + return 'ke-rm'; + } + if (/flash/i.test(type)) { + return 'ke-flash'; + } + return 'ke-media'; +} + +function _mediaAttrs(srcTag) { + return _getAttrList(unescape(srcTag)); +} + +function _mediaEmbed(attrs) { + var html = ' 0) { + style += 'width:' + width + 'px;'; + } + if (/\D/.test(height)) { + style += 'height:' + height + ';'; + } else if (height > 0) { + style += 'height:' + height + 'px;'; + } + var html = ''; + return html; +} + +// Simple JavaScript Templating +// John Resig - http://ejohn.org/ - MIT Licensed +// http://ejohn.org/blog/javascript-micro-templating/ +function _tmpl(str, data) { + // Figure out if we're getting a template, or if we need to + // load the template - and be sure to cache the result. + var fn = new Function("obj", + "var p=[],print=function(){p.push.apply(p,arguments);};" + + // Introduce the data as local variables using with(){} + "with(obj){p.push('" + + // Convert the template into pure JavaScript + str.replace(/[\r\t\n]/g, " ") + .split("<%").join("\t") + .replace(/((^|%>)[^\t]*)'/g, "$1\r") + .replace(/\t=(.*?)%>/g, "',$1,'") + .split("\t").join("');") + .split("%>").join("p.push('") + .split("\r").join("\\'") + "');}return p.join('');"); + // Provide some basic currying to the user + return data ? fn(data) : fn; +} + +K.formatUrl = _formatUrl; +K.formatHtml = _formatHtml; +K.getCssList = _getCssList; +K.getAttrList = _getAttrList; +K.mediaType = _mediaType; +K.mediaAttrs = _mediaAttrs; +K.mediaEmbed = _mediaEmbed; +K.mediaImg = _mediaImg; +K.clearMsWord = _clearMsWord; +K.tmpl = _tmpl; diff --git a/tools/NKeditor/src/main.js b/tools/NKeditor/src/main.js new file mode 100644 index 00000000..376d805b --- /dev/null +++ b/tools/NKeditor/src/main.js @@ -0,0 +1,1648 @@ + +var _plugins = {}; + +function _plugin(name, fn) { + if (name === undefined) { + return _plugins; + } + if (!fn) { + return _plugins[name]; + } + _plugins[name] = fn; +} + +var _language = {}; + +function _parseLangKey(key) { + var match, ns = 'core'; + if ((match = /^(\w+)\.(\w+)$/.exec(key))) { + ns = match[1]; + key = match[2]; + } + return { ns : ns, key : key }; +} +/** + @example + K.lang('about'); //get core.about + K.lang('about.version'); // get about.version + K.lang('about.').version; // get about.version + K.lang('about', 'en'); //get English core.about + K.lang({ + core.about : '关于', + about.version : '4.0' + }, 'zh-CN'); //add language +*/ +function _lang(mixed, langType) { + langType = langType === undefined ? K.options.langType : langType; + if (typeof mixed === 'string') { + if (!_language[langType]) { + return 'no language'; + } + var pos = mixed.length - 1; + if (mixed.substr(pos) === '.') { + return _language[langType][mixed.substr(0, pos)]; + } + var obj = _parseLangKey(mixed); + return _language[langType][obj.ns][obj.key]; + } + _each(mixed, function(key, val) { + var obj = _parseLangKey(key); + if (!_language[langType]) { + _language[langType] = {}; + } + if (!_language[langType][obj.ns]) { + _language[langType][obj.ns] = {}; + } + _language[langType][obj.ns][obj.key] = val; + }); +} + +// 当前range为图片时返回KNode,否则返回undefined +function _getImageFromRange(range, fn) { + if (range.collapsed) { + return; + } + range = range.cloneRange().up(); + var sc = range.startContainer, so = range.startOffset; + if (!_WEBKIT && !range.isControl()) { + return; + } + var img = K(sc.childNodes[so]); + if (!img || img.name != 'img') { + return; + } + if (fn(img)) { + return img; + } +} + +function _bindContextmenuEvent() { + var self = this, doc = self.edit.doc; + K(doc).contextmenu(function(e) { + if (self.menu) { + self.hideMenu(); + } + if (!self.useContextmenu) { + e.preventDefault(); + return; + } + if (self._contextmenus.length === 0) { + return; + } + var maxWidth = 0, items = []; + _each(self._contextmenus, function() { + if (this.title == '-') { + items.push(this); + return; + } + if (this.cond && this.cond()) { + items.push(this); + if (this.width && this.width > maxWidth) { + maxWidth = this.width; + } + } + }); + while (items.length > 0 && items[0].title == '-') { + items.shift(); + } + while (items.length > 0 && items[items.length - 1].title == '-') { + items.pop(); + } + var prevItem = null; + _each(items, function(i) { + if (this.title == '-' && prevItem.title == '-') { + delete items[i]; + } + prevItem = this; + }); + if (items.length > 0) { + e.preventDefault(); + var pos = K(self.edit.iframe).pos(), + menu = _menu({ + x : pos.x + e.clientX, + themeType : self.themeType, + y : pos.y + e.clientY, + width : maxWidth, + css : { visibility: 'hidden' }, + shadowMode : self.shadowMode + }); + _each(items, function() { + if (this.title) { + menu.addItem(this); + } + }); + // 下拉菜单超过可视区域时调整菜单位置 + var docEl = _docElement(menu.doc), + menuHeight = menu.div.height(); + if (e.clientY + menuHeight >= docEl.clientHeight - 100) { + menu.pos(menu.x, _removeUnit(menu.y) - menuHeight); + } + menu.div.css('visibility', 'visible'); + self.menu = menu; + } + }); +} + +function _bindNewlineEvent() { + var self = this, doc = self.edit.doc, newlineTag = self.newlineTag; + if (_IE && newlineTag !== 'br') { + return; + } + if (_GECKO && _V < 3 && newlineTag !== 'p') { + return; + } + if (_OPERA && _V < 9) { + return; + } + var brSkipTagMap = _toMap('h1,h2,h3,h4,h5,h6,pre,li'), + pSkipTagMap = _toMap('p,h1,h2,h3,h4,h5,h6,pre,li,blockquote'); + // 取得range的block标签名 + function getAncestorTagName(range) { + var ancestor = K(range.commonAncestor()); + while (ancestor) { + if (ancestor.type == 1 && !ancestor.isStyle()) { + break; + } + ancestor = ancestor.parent(); + } + return ancestor.name; + } + K(doc).keydown(function(e) { + + /** + * 修复 bug: 如果编辑器的最底部的元素是块级元素,如 p, quoteblock, table,则没有办法实现在块级元素后面新增其他元素, + * 只能在元素里面新增子元素, 这里通过在后面追加
          元素来解决 + */ + if (e.which == 39) { + if (self.__startOffset == self.cmd.range.startOffset) { + //console.log("Reaching the bottom"); + var tagName = getAncestorTagName(self.cmd.range); + if (tagName != 'body') { + self.appendHtml('
          ') + } + } else { + self.__startOffset = self.cmd.range.startOffset + } + return; + } + if (e.which != 13 || e.shiftKey || e.ctrlKey || e.altKey) { + return; + } + self.cmd.selection(); + var tagName = getAncestorTagName(self.cmd.range); + if (tagName == 'marquee' || tagName == 'select') { + return; + } + // br + if (newlineTag === 'br' && !brSkipTagMap[tagName]) { + e.preventDefault(); + self.insertHtml('
          ' + (_IE && _V < 9 ? '' : '\u200B')); + return; + } + // p + if (!pSkipTagMap[tagName]) { + _nativeCommand(doc, 'formatblock', '

          '); + } + }); + K(doc).keyup(function(e) { + if (e.which != 13 || e.shiftKey || e.ctrlKey || e.altKey) { + return; + } + if (newlineTag == 'br') { + return; + } + if (_GECKO) { + var root = self.cmd.commonAncestor('p'); + var a = self.cmd.commonAncestor('a'); + if (a && a.text() == '') { + a.remove(true); + self.cmd.range.selectNodeContents(root[0]).collapse(true); + self.cmd.select(); + } + return; + } + self.cmd.selection(); + var tagName = getAncestorTagName(self.cmd.range); + if (tagName == 'marquee' || tagName == 'select') { + return; + } + if (!pSkipTagMap[tagName]) { + _nativeCommand(doc, 'formatblock', '

          '); + } + // [WEBKIT] 将DIV改成P + var div = self.cmd.commonAncestor('div'); + if (div) { + var p = K('

          '), + child = div[0].firstChild; + while (child) { + var next = child.nextSibling; + p.append(child); + child = next; + } + div.before(p); + div.remove(); + self.cmd.range.selectNodeContents(p[0]); + self.cmd.select(); + } + }); +} + +function _bindTabEvent() { + var self = this, doc = self.edit.doc; + K(doc).keydown(function(e) { + if (e.which == 9) { + e.preventDefault(); + if (self.afterTab) { + self.afterTab.call(self, e); + return; + } + var cmd = self.cmd, range = cmd.range; + range.shrink(); + // Bugfix #271: 回车,按下tab键,光标在下一行显示 + if (range.collapsed && range.startContainer.nodeType == 1) { + range.insertNode(K('@ ', doc)[0]); + cmd.select(); + } + self.insertHtml('    '); + } + }); +} + +function _bindFocusEvent() { + var self = this; + K(self.edit.textarea[0], self.edit.win).focus(function(e) { + if (self.afterFocus) { + self.afterFocus.call(self, e); + } + }).blur(function(e) { + if (self.afterBlur) { + self.afterBlur.call(self, e); + } + }); +} + +function _removeBookmarkTag(html) { + return _trim(html.replace(/]*id="?__kindeditor_bookmark_\w+_\d+__"?[^>]*><\/span>/ig, '')); +} + +function _removeTempTag(html) { + return html.replace(/]+class="?__kindeditor_paste__"?[^>]*>[\s\S]*?<\/div>/ig, ''); +} + +function _addBookmarkToStack(stack, bookmark) { + if (stack.length === 0) { + stack.push(bookmark); + return; + } + var prev = stack[stack.length - 1]; + if (_removeBookmarkTag(bookmark.html) !== _removeBookmarkTag(prev.html)) { + stack.push(bookmark); + } +} + +// undo: _undoToRedo.call(this, undoStack, redoStack); +// redo: _undoToRedo.call(this, redoStack, undoStack); +function _undoToRedo(fromStack, toStack) { + var self = this, edit = self.edit, + body = edit.doc.body, + range, bookmark; + if (fromStack.length === 0) { + return self; + } + if (edit.designMode) { + range = self.cmd.range; + bookmark = range.createBookmark(true); + bookmark.html = body.innerHTML; + } else { + bookmark = { + html : body.innerHTML + }; + } + _addBookmarkToStack(toStack, bookmark); + var prev = fromStack.pop(); + if (_removeBookmarkTag(bookmark.html) === _removeBookmarkTag(prev.html) && fromStack.length > 0) { + prev = fromStack.pop(); + } + if (edit.designMode) { + edit.html(prev.html); + if (prev.start) { + range.moveToBookmark(prev); + self.select(); + } + } else { + K(body).html(_removeBookmarkTag(prev.html)); + } + return self; +} + +function KEditor(options) { + var self = this; + // save original options + self.options = {}; + function setOption(key, val) { + if (KEditor.prototype[key] === undefined) { + self[key] = val; + } + self.options[key] = val; + } + // set options from param + _each(options, function(key, val) { + setOption(key, options[key]); + }); + // set options from default setting + _each(K.options, function(key, val) { + if (self[key] === undefined) { + setOption(key, val); + } + }); + var se = K(self.srcElement || ' +
          +
          +
          +
          + + + + + + diff --git a/tools/NKeditor/test/edit.js b/tools/NKeditor/test/edit.js new file mode 100644 index 00000000..da0b52cf --- /dev/null +++ b/tools/NKeditor/test/edit.js @@ -0,0 +1,52 @@ + +var edit = null; + +var cmds = { + bold : '', + italic : '', + underline : '', + strikethrough : '', + forecolor : '#FF0000', + hilitecolor : '#DDDDDD', + fontsize : '32px', + fontfamily : 'Arial Black', + removeformat : '', + selectall : '' +}; + +K.each(cmds, function(key, val) { + var a = K('' + key + '').bind('click', (function(key, val) { + return function(e) { + edit.cmd[key](val); + e.stop(); + }; + })(key, val)); + K('#cmdArea').append(a); + K('#cmdArea').append(document.createTextNode(' ')); +}); + +edit = K.edit({ + src : 'div#edit', + srcElement : 'body textarea', + width : '700px', + height : '200px', + designMode : true, + bodyClass : 'ke-content', + cssData : 'body {font-size:12px;margin:0;}' +}); + +K('#design').bind('click', function(e) { + if (edit) { + edit.design(true); + } +}); +K('#source').bind('click', function(e) { + if (edit) { + edit.design(false); + } +}); +K('#toggle').bind('click', function(e) { + if (edit) { + edit.design(); + } +}); \ No newline at end of file diff --git a/tools/NKeditor/test/editor.html b/tools/NKeditor/test/editor.html new file mode 100644 index 00000000..83d36725 --- /dev/null +++ b/tools/NKeditor/test/editor.html @@ -0,0 +1,59 @@ + + + + + KindEditor Unittest + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

          KindEditor Unittest

          +

          KindEditor Unittest

          +

          +
            +
            +
            + +
            + +
            + + + + diff --git a/tools/NKeditor/test/editor.js b/tools/NKeditor/test/editor.js new file mode 100644 index 00000000..8773f92f --- /dev/null +++ b/tools/NKeditor/test/editor.js @@ -0,0 +1,140 @@ +module("editor"); + +KindEditor.ready(function (K) { + + var editor = K.create('#content1', { + basePath : '../', + filterMode : false, + wellFormatMode : false + }); + + var editor2 = K.create('#content2', { + basePath : '../', + filterMode : false, + wellFormatMode : false + }); + + test("K.instances", function() { + ok(editor == K.instances[0]); + ok(editor2 == K.instances[1]); + }); + + test("editor.html", function() { + editor.html(undefined); + equals(editor.html(), ''); + + editor.html(null); + equals(editor.html(), ''); + + editor.html('

            abc

            '); + equals(editor.html(), '

            abc

            '); + + editor.html('
            abc
            '); + equals(editor.html(), '
            abc
            '); + + editor.html(''); + equals(editor.html(), ''); + + editor.html('
            abc
            '); + equals(editor.html(), '
            abc
            '); + + editor.html('

            abc

            '); + equals(editor.html(), '

            abc

            '); + + editor.html('
            '); + equals(editor.html(), '
            '); + + editor.html('test'); + equals(editor.html(), 'test'); + + editor.html('test'); + equals(editor.html(), 'test'); + + editor.html(''); + equals(editor.html(), ''); + + editor.html(''); + equals(editor.html(), ''); + + editor.html('test'); + equals(editor.html(), 'test'); + + editor.html(''); + equals(editor.html(), ''); + + editor.html(''); + equals(editor.html(), ''); + + editor.html(''); + equals(editor.html(), ''); + + editor.html(''); + equals(editor.html(), ''); + + }); + + test("editor.text", function() { + editor.html('

            abc

            '); + equals(editor.text(), 'abc'); + editor.html('
            abc
            '); + equals(editor.text(), 'abc'); + editor.text('

            '); + equals(editor.text(), '<p class="a"></p>'); + editor.text(''); + equals(editor.text(), ''); + }); + + test("editor.insertHtml", function() { + editor.html('

            abc

            '); + var h3 = K('#test-h3', editor.edit.doc); + editor.cmd.range.selectNodeContents(h3[0]); + editor.cmd.select(); + editor.insertHtml('abc'); + equals(editor.html(), '

            abc

            '); + editor.html(''); + }); + + test("editor.selectedHtml", function() { + editor.html('abc'); + var span = K('#test', editor.edit.doc); + editor.cmd.range.setStart(span.first()[0], 0).setEnd(span.first()[0], 2); + editor.cmd.select(); + equals(editor.selectedHtml().replace(/<.+?>/g, ''), 'ab'); + editor.html(''); + }); + + test("editor.appendHtml", function() { + editor.html(''); + editor.appendHtml('

            abc

            '); + equals(editor.html(), '

            abc

            '); + editor.appendHtml('
            abc
            '); + equals(editor.html(), '

            abc

            abc
            '); + editor.html(''); + editor.appendHtml('abc'); + equals(editor.html(), 'abc'); + }); + + test("editor.isEmpty", function() { + editor.html('

            abc

            '); + ok(editor.isEmpty() === false); + editor.html('

            '); + ok(editor.isEmpty() === true); + editor.html(''); + ok(editor.isEmpty() === false); + editor.html(''); + }); + + test("editor.count", function() { + editor.html('

            abc

            '); + ok(editor.count('html') === 12); + ok(editor.count('text') === 3); + editor.html('

            '); + ok(editor.count('html') === 9); + ok(editor.count('text') === 0); + editor.html(''); + ok(editor.count('html') === 14); + ok(editor.count('text') === 1); + editor.html(''); + }); + +}); diff --git a/tools/NKeditor/test/event.html b/tools/NKeditor/test/event.html new file mode 100644 index 00000000..4e39d282 --- /dev/null +++ b/tools/NKeditor/test/event.html @@ -0,0 +1,61 @@ + + + + + KindEditor Event Test + + + + + + + + + + + + + +

            KindEditor Event Test

            +

            +
              +
              + outer event: + inner event: + event method: +
              + +
              + + + + diff --git a/tools/NKeditor/test/event.js b/tools/NKeditor/test/event.js new file mode 100644 index 00000000..6e21d6f2 --- /dev/null +++ b/tools/NKeditor/test/event.js @@ -0,0 +1,153 @@ +module('event'); + +test('bind/unbind/fire', function() { + var result = ''; + function click1(e) { + result += 'click1'; + } + //bind + K(document).click(click1); + result = ''; + K(document).click(); + equals(result, 'click1'); + //unbind + K(document).unbind('click', click1); + result = ''; + K(document).click(); + equals(result, ''); + function click2(e) { + K(this).html('click2'); + } + K('#test-data-01').click(click2); + K('#test-data-01').click(); + equals(K('#test-data-01').html(), 'click2'); +}); + +test('unbind(el, type, fn)', function() { + var result = ''; + function click1(e) { + result += 'click1'; + } + function click2(e) { + result += 'click2'; + } + function mousedown1(e) { + result += 'mousedown1'; + } + K(document).click(click1); + K(document).click(click2); + K(document).mousedown(mousedown1); + result = ''; + K(document).click(); + equals(result, 'click1click2'); + result = ''; + K(document).mousedown(); + equals(result, 'mousedown1'); + K(document).unbind('click', click1); + result = ''; + K(document).click(); + equals(result, 'click2'); + K(document).unbind('click', click2); + result = ''; + K(document).click(); + equals(result, ''); + K(document).unbind('mousedown', mousedown1); + result = ''; + K(document).mousedown(); + equals(result, ''); +}); + +test('unbind(el, type)', function() { + var result = ''; + function click1(e) { + result += 'click1'; + } + function click2(e) { + result += 'click2'; + } + function mousedown1(e) { + result += 'mousedown1'; + } + K(document).click(click1); + K(document).click(click2); + K(document).mousedown(mousedown1); + //unbind click + K(document).unbind('click'); + result = ''; + K(document).click(); + equals(result, ''); + //unbind mousedown + K(document).unbind('mousedown'); + result = ''; + K(document).mousedown(); + equals(result, ''); +}); + +test('unbind(el)', function() { + var result = ''; + function click1(e) { + result += 'click1'; + console.log('check'); + } + function click2(e) { + result += 'click2'; + console.log('check'); + } + function mousedown1(e) { + result += 'mousedown1'; + console.log('check'); + } + K(document).click(click1); + K(document).click(click2); + K(document).mousedown(mousedown1); + //unbind + K(document).unbind(); + result = ''; + K(document).click(); + equals(result, ''); + result = ''; + K(document).mousedown(); + equals(result, ''); +}); + +(function () { + var outerEvent = K('#outerEvent'), + innerEvent = K('#innerEvent'), + eventMethod = K('#eventMethod'), + outerDiv = K('#outerDiv'), + innerDiv = K('#innerDiv'); + outerEvent.change(function(e) { + outerDiv.unbind(); + if (outerEvent.val() === 'none') return; + outerDiv.bind(outerEvent.val(), function(e) { + console.log('outer: ' + outerEvent.val()); + if (eventMethod.val() === 'none') return; + e[eventMethod.val()](); + }); + }); + innerEvent.change(function(e) { + innerDiv.unbind(); + if (innerEvent.val() === 'none') return; + innerDiv.bind(innerEvent.val(), function(e) { + console.log('inner: ' + innerEvent.val()); + if (eventMethod.val() === 'none') return; + e[eventMethod.val()](); + }); + }); +})(); + +K.ready(function() { + console.log('ready1'); +}); +K.ready(function() { + console.log('ready2'); +}); +K.ready(function() { + console.log('ready3'); +}); +K.ready(function() { + console.log('ready4'); +}); +K.ready(function() { + console.log('ready5'); +}); \ No newline at end of file diff --git a/tools/NKeditor/test/frame.html b/tools/NKeditor/test/frame.html new file mode 100644 index 00000000..f0c2f317 --- /dev/null +++ b/tools/NKeditor/test/frame.html @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/tools/NKeditor/test/hidden.html b/tools/NKeditor/test/hidden.html new file mode 100644 index 00000000..1632b9c8 --- /dev/null +++ b/tools/NKeditor/test/hidden.html @@ -0,0 +1,48 @@ + + + + + + KindEditor Test + + +

              KindEditor Test

              + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tools/NKeditor/test/html.html b/tools/NKeditor/test/html.html new file mode 100644 index 00000000..cbb957a2 --- /dev/null +++ b/tools/NKeditor/test/html.html @@ -0,0 +1,48 @@ + + + + + KindEditor Unittest + + + + + + + + + + + +

              KindEditor Unittest

              +

              +
                + +
                + + + + + + + + + +
                test
                +
                123
                test
                123
                +
                +
                test
                +
                test
                +
                test
                +
                test
                +
                ddd
                +
                ddd
                +
                ddd
                +
                ddd
                +
                ©
                +
                + + + + + diff --git a/tools/NKeditor/test/html.js b/tools/NKeditor/test/html.js new file mode 100644 index 00000000..205ec5b4 --- /dev/null +++ b/tools/NKeditor/test/html.js @@ -0,0 +1,91 @@ +module('html'); + +test("formatUrl", function() { + equals(K.formatUrl(K.query("#test01").value, "absolute", 'http://localhost', '/ke/test'), '/ke/images/xxx.gif'); + equals(K.formatUrl(K.query("#test01").value, "relative", 'http://localhost', '/ke/test'), '../images/xxx.gif'); + equals(K.formatUrl(K.query("#test01").value, "domain", 'http://localhost', '/ke/test'), 'http://localhost/ke/images/xxx.gif'); + equals(K.formatUrl(K.query("#test01").value), '../images/xxx.gif'); + + equals(K.formatUrl(K.query("#test02").value, "absolute", 'http://localhost:8080', '/ke/test'), '/images/xxx.gif'); + equals(K.formatUrl(K.query("#test02").value, "relative", 'http://localhost:8080', '/ke/test'), '../../images/xxx.gif'); + equals(K.formatUrl(K.query("#test02").value, "domain", 'http://localhost:8080', '/ke/test'), 'http://localhost:8080/images/xxx.gif'); + equals(K.formatUrl(K.query("#test02").value), './../../images/xxx.gif'); + + equals(K.formatUrl(K.query("#test03").value, "absolute", 'http://localhost', '/ke/test'), '/ke/images/xxx.gif'); + equals(K.formatUrl(K.query("#test03").value, "relative", 'http://localhost', '/ke/test'), '../images/xxx.gif'); + equals(K.formatUrl(K.query("#test03").value, "domain", 'http://localhost', '/ke/test'), 'http://localhost/ke/images/xxx.gif'); + equals(K.formatUrl(K.query("#test03").value), '/ke/images/xxx.gif'); + + equals(K.formatUrl(K.query("#test04").value, "absolute", 'http://localhost', '/ke/test'), '/ke/images/xxx.gif'); + equals(K.formatUrl(K.query("#test04").value, "relative", 'http://localhost', '/ke/images'), 'xxx.gif'); + equals(K.formatUrl(K.query("#test04").value, "domain", 'http://localhost', '/ke'), 'http://localhost/ke/images/xxx.gif'); + equals(K.formatUrl(K.query("#test04").value), 'http://localhost/ke/images/xxx.gif'); + + equals(K.formatUrl(K.query("#test05").value, "absolute", 'http://localhost', '/ke'), 'http://www.163.com/images/xxx.gif'); + equals(K.formatUrl(K.query("#test05").value, "relative", 'http://localhost', '/ke'), 'http://www.163.com/images/xxx.gif'); + equals(K.formatUrl(K.query("#test05").value, "domain", 'http://localhost', '/ke'), 'http://www.163.com/images/xxx.gif'); + equals(K.formatUrl(K.query("#test05").value), 'http://www.163.com/images/xxx.gif'); + + equals(K.formatUrl(K.query("#test06").value, "absolute", 'http://kindsoft.net', '/'), '/kindeditor/plugins/emoticons/etc_01.gif'); + equals(K.formatUrl(K.query("#test06").value, "relative", 'http://kindsoft.net', '/'), 'kindeditor/plugins/emoticons/etc_01.gif'); + equals(K.formatUrl(K.query("#test06").value, "domain", 'http://kindsoft.net', '/'), 'http://kindsoft.net/kindeditor/plugins/emoticons/etc_01.gif'); + equals(K.formatUrl(K.query("#test06").value), 'http://kindsoft.net/kindeditor/plugins/emoticons/etc_01.gif'); + + equals(K.formatUrl(K.query("#test07").value, "absolute", 'http://kindsoft.net', '/'), 'mailto:test@test.com'); + equals(K.formatUrl(K.query("#test07").value, "relative", 'http://kindsoft.net', '/'), 'mailto:test@test.com'); + equals(K.formatUrl(K.query("#test07").value, "domain", 'http://kindsoft.net', '/'), 'mailto:test@test.com'); + equals(K.formatUrl(K.query("#test07").value), 'mailto:test@test.com'); + + equals(K.formatUrl('http://static.domain.com/img//123.png'), 'http://static.domain.com/img/123.png'); + + equals(K.formatUrl('data:image/gif;base64,R0lGODlhAQABAIAAAP///wAAACH5BAEAAAAALAAAAAABAAEAAAICRAEAOw=='), 'data:image/gif;base64,R0lGODlhAQABAIAAAP///wAAACH5BAEAAAAALAAAAAABAAEAAAICRAEAOw=='); +}); + +test("formatHtml", function() { + equals(K.formatHtml(K.query("#test11").innerHTML).toLowerCase(), 'test'); + equals(K.formatHtml(K.query("#test11").innerHTML, {span:[".color"]}).toLowerCase(), 'test'); + equals(K.formatHtml(K.query("#test11").innerHTML, {span:[".font-size", "class"]}), 'test'); + equals(K.formatHtml(K.query("#test11").innerHTML, {div:[".font-size", "class"]}), 'test'); + equals(K.formatHtml(K.query("#test11").innerHTML, {span:["style"]}).toLowerCase(), 'test'); + equals(K.formatHtml(K.query("#test11").innerHTML, {span:[]}), 'test'); + + equals(K.formatHtml(K.query("#test12").innerHTML).toLowerCase(), '123
                test
                123'); + equals(K.formatHtml(K.query("#test12").innerHTML, {span:[".color"]}), '123test123'); + equals(K.formatHtml(K.query("#test12").innerHTML, {div:[".font-size", "class"]}), '123
                test
                123'); + equals(K.formatHtml(K.query("#test12").innerHTML, {div:[".color"]}).toLowerCase(), '123
                test
                123'); + equals(K.formatHtml(K.query("#test12").innerHTML, {div:[".color", ".font-weight"]}).toLowerCase(), '123
                test
                123'); + + equals(K.formatHtml(K.query("#test13").innerHTML), ' '); + equals(K.formatHtml(K.query("#test13").innerHTML, {input:["type", "value"]}), ' checkbox'); + equals(K.formatHtml(K.query("#test13").innerHTML, {input:["checked"],label:[]}), ' '); + equals(K.formatHtml(K.query("#test13").innerHTML, {}), 'checkbox'); + + equals(K.formatHtml(K.query("#test14").innerHTML, null, "relative"), ' test'); + + equals(K.formatHtml(K.query("#test16").innerHTML), 'test'); + equals(K.formatHtml(K.query("#test17").innerHTML), 'test'); + + equals(K.formatHtml(K.query("#test18").innerHTML), 'ddd'); + equals(K.formatHtml(K.query("#test19").innerHTML), 'ddd'); + equals(K.formatHtml(K.query("#test20").innerHTML).toLowerCase(), 'ddd'); + equals(K.formatHtml(K.query("#test21").innerHTML), 'ddd'); + + equals(K.formatHtml(K.query("#test22").innerHTML, {}), '©'); + + equals(K.formatHtml('123', {a:['href']}), '123'); + equals(K.formatHtml('123', {a:['*']}), '123'); + + equals(K.formatHtml('

                '), '


                '); + equals(K.formatHtml('

                \t\n
                \n

                '), '


                '); + +}); + + +test("getAttrList/getCssList", function() { + var tag = ''; + var attrList = K.getAttrList(tag); + equals(attrList.href, '#'); + equals(attrList.onclick, 'javascript:if(1<2)alert(1);'); + var cssList = K.getCssList(attrList.style); + equals(cssList['font-family'], '\'Arial Black\''); +}); \ No newline at end of file diff --git a/tools/NKeditor/test/index.html b/tools/NKeditor/test/index.html new file mode 100644 index 00000000..e8cb8ac3 --- /dev/null +++ b/tools/NKeditor/test/index.html @@ -0,0 +1,11 @@ + + + + + KindEditor Test + + + + + + \ No newline at end of file diff --git a/tools/NKeditor/test/leak.html b/tools/NKeditor/test/leak.html new file mode 100644 index 00000000..c95f3ba6 --- /dev/null +++ b/tools/NKeditor/test/leak.html @@ -0,0 +1,39 @@ + + + + + KindEditor Memory Leak Test + + + + + + + + + + + + + 刷新 + 返回上一步 + + + diff --git a/tools/NKeditor/test/main.html b/tools/NKeditor/test/main.html new file mode 100644 index 00000000..6df91b43 --- /dev/null +++ b/tools/NKeditor/test/main.html @@ -0,0 +1,369 @@ + + + + + KindEditor Main Test + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

                KindEditor Main Test

                + + + + + +
                + + diff --git a/tools/NKeditor/test/menu.html b/tools/NKeditor/test/menu.html new file mode 100644 index 00000000..14a68db0 --- /dev/null +++ b/tools/NKeditor/test/menu.html @@ -0,0 +1,33 @@ + + + + + KindEditor Menu Test + + + + + + + + + + + + + + + + + + + + + +

                KindEditor Menu Test

                + + + + + + diff --git a/tools/NKeditor/test/menu.js b/tools/NKeditor/test/menu.js new file mode 100644 index 00000000..e200d8fe --- /dev/null +++ b/tools/NKeditor/test/menu.js @@ -0,0 +1,72 @@ + +var menu = null; +K('#menu').bind('click', function(e) { + if (menu) { + menu.remove(); + menu = null; + } else { + var menuPos = K('#menu').pos(); + menu = K.menu({ + width : 200, + x : menuPos.x, + y : menuPos.y + K('#menu').height(), + z : 19811212, + centerLineMode : false + }); + K.each('9px,10px,12px,14px,16px,18px,24px,32px'.split(','), function(i, val) { + menu.addItem({ + title : '' + val + '', + click : function() { + alert(val); + }, + height : parseInt(val, 10) + 12, + checked : val === '12px' + }); + }); + } +}); + +var contextmenu = null; +K('#contextmenu').bind('click', function(e) { + if (contextmenu) { + contextmenu.remove(); + contextmenu = null; + } else { + var contextmenuPos = K('#contextmenu').pos(); + contextmenu = K.menu({ + width : 200, + x : contextmenuPos.x, + y : contextmenuPos.y + K('#contextmenu').height(), + z : 19811213 + }); + K.each('image,flash,media,-,bold,cut,copy,paste,-,selectall'.split(','), function(i, val) { + contextmenu.addItem({ + title : val, + click : function() { + alert(val); + }, + iconClass : 'ke-icon-' + val + }); + }); + } +}); + +var colorpicker = null; +K('#colorpicker').bind('click', function(e) { + if (colorpicker) { + colorpicker.remove(); + colorpicker = null; + } else { + var colorpickerPos = K('#colorpicker').pos(); + colorpicker = K.colorpicker({ + x : colorpickerPos.x, + y : colorpickerPos.y + K('#colorpicker').height(), + z : 19811214, + selectedColor : 'default', + noColor : '无颜色', + click : function(color) { + alert(color); + } + }); + } +}); \ No newline at end of file diff --git a/tools/NKeditor/test/navi.html b/tools/NKeditor/test/navi.html new file mode 100644 index 00000000..c2e24cbc --- /dev/null +++ b/tools/NKeditor/test/navi.html @@ -0,0 +1,36 @@ + + + + + KindEditor Test + + + + + + + \ No newline at end of file diff --git a/tools/NKeditor/test/node.html b/tools/NKeditor/test/node.html new file mode 100644 index 00000000..9a77f1d5 --- /dev/null +++ b/tools/NKeditor/test/node.html @@ -0,0 +1,62 @@ + + + + + KindEditor Unittest + + + + + + + + + + + + + + + + +

                KindEditor Unittest

                +

                +
                  + + +
                  +

                  +abcdefghijkxyz
                  +0123456789
                  +

                  +
                  div area
                  +
                  div area 2
                  + +
                  + + + + + + + + + + diff --git a/tools/NKeditor/test/node.js b/tools/NKeditor/test/node.js new file mode 100644 index 00000000..6033d040 --- /dev/null +++ b/tools/NKeditor/test/node.js @@ -0,0 +1,206 @@ +module('node'); + +test('K(html)', function(){ + var node = K('
                  abc

                  '); + equals(node.name, 'div'); + equals(node.length, 3); + equals(node.attr('class'), 'abc'); + equals(node.css('font-size'), '12px'); + equals(K('@p > strong').get().nodeValue, 'p > strong'); + equals(K('@1 2 ').get().nodeValue, '1 2 '); +}); + +test('K(selector)', function(){ + var node = K('p > strong'); + equals(node.name, 'strong'); + equals(node.get(1).nodeName.toLowerCase(), 'strong'); + equals(node.get(2).nodeName.toLowerCase(), 'strong'); + equals(node.length, 3); +}); + +test('K(node)', function(){ + var node = K(document.createTextNode('abc'), document.createElement('div')); + equals(node.name, '#text'); + equals(node.get(1).nodeName.toLowerCase(), 'div'); + equals(node.length, 2); +}); + +test('get', function() { + var div = K('div'); + ok(div.get(0) === div[0]); +}); + +test('eq', function() { + var div = K('div'); + ok(div.eq(0)[0] === div[0]); +}); + +test('attr/removeAttr', function() { + equals(K('#test-data-01').attr('src', 'aaa').attr('src'), 'aaa'); + equals(K('#test-data-02').attr('src', 'aaa').removeAttr('src').attr('src'), ''); + equals(K('#test-data-01').attr('id'), 'test-data-01'); + equals(K('#test-data-01').attr('class'), 'test-class'); + equals(K('#test-data-01 p img').attr('src'), './data/logo_180_30.gif'); + equals(K('#test-data-03 p span').attr('style'), 'color:red;'); + equals(K('#test-data-01 p img').attr('border'), '0'); + equals(K('#test-data-01').attr('class'), 'test-class'); + equals(K('
                  ').attr('class', 'aaa').attr('class'), 'aaa'); + equals(K('
                  ').removeAttr('class').attr('class'), ''); + equals(K('
                  ').attr('style'), 'color:red;'); +}); + +test("hasClass/addClass/removeClass", function() { + var knode = K('
                  '); + var div = knode.get(); + knode.addClass('aaa'); + ok(knode.hasClass('aaa')); + equals(div.className, 'aaa'); + knode.addClass('aaa'); + equals(div.className, 'aaa'); + knode.addClass('bbb'); + ok(knode.hasClass('bbb')); + equals(div.className, 'aaa bbb'); + knode.addClass('ccc'); + ok(knode.hasClass('ccc')); + equals(div.className, 'aaa bbb ccc'); + knode.removeClass('aaa'); + ok(!knode.hasClass('aaa')); + equals(div.className, 'bbb ccc'); + knode.removeClass('bbb'); + ok(!knode.hasClass('bbb')); + equals(div.className, 'ccc'); + knode.removeClass('ccc'); + ok(!knode.hasClass('ccc')); + equals(div.className, ''); + equals(K('
                  ').addClass('aaa').removeClass('aaa').addClass('bbb').get().className, 'bbb'); +}); + +test("contains",function(){ + ok(K('#test-data-01 p').contains(K('#test-data-01 p')) === false); + ok(K('#test-data-01').contains(K('#test-data-01 p')) === true); + ok(K('#test-data-01 strong').contains(K('#test-data-01 strong').first()) === true); + ok(K(document).contains(K('#test-data-01 strong')) === true); + ok(K(document).contains(document) === false); + ok(K(document).contains(document.body)); + ok(K('#test-data-01 strong').first().contains(K('#test-data-01 strong')) === false); +}); + +test("val",function(){ + equals(K('').val(), "aa"); + equals(K('
                  ').val(), "aa"); + equals(K('').val("bb").val(), "bb"); + equals(K('
                  ').val("").val(), ""); + equals(K('').val('abc').val(), 'abc'); +}); + +test("css",function(){ + var node = K('
                  '); + equals(node.css('width','300px').css('width'), '300px'); + equals(node.css('border','1px solid #ccc').css('border'),node.css('border')); + node = K('#test-data-01'); + equals(node.css('width'), '300px'); +}); + +test("width/height",function(){ + equals(K('#test-data-01').width(), 300); + ok(K('#test-data-01').height() > 110); +}); + +test("append",function(){ + var node = K('

                  ').append('@abc'); + equals(node.html(), 'abc'); + equals(K(node[1]).html(), 'abc'); +}); + +test("before",function(){ + var parent = K('

                  '); + K(document.body).append(parent); + K('.abc', parent).before('def'); + var children = parent.children(); + equals(children.length, 4); + equals(K(children[0]).name, 'span'); + equals(K(children[1]).name, 'div'); + equals(K(children[2]).name, 'span'); + equals(K(children[3]).name, 'p'); + parent.remove(); +}); + +test("after",function(){ + var parent = K('

                  '); + K(document.body).append(parent); + K('.abc', parent).after('def'); + var children = parent.children(); + equals(children.length, 4); + equals(K(children[0]).name, 'div'); + equals(K(children[1]).name, 'span'); + equals(K(children[2]).name, 'p'); + equals(K(children[3]).name, 'span'); + parent.remove(); +}); + +test("replaceWith",function(){ + var node = K('
                  ').replaceWith('

                  '); + equals(node.length, 1); + equals(node.name, 'p'); +}); + +test("remove",function(){ + var node = K('

                  123

                  ').addClass('abc').html('test'); + node.remove(); + equals(node.length, 0); + // Test preserve child nodes. + var node = K('

                  123456789

                  '); + K('p', node).remove(true); + equals(node.html(), '123456789'); +}); + +test("html",function(){ + var node = K('
                  xxx
                  '); + K(document.body).append(node); + equals(node.html(), 'xxx'); + equals(node.html('bbb').html(), 'bbb'); + equals(K('').html('abc').html(), 'abc'); + equals(node.html('


                  ').html(), '


                  '); + equals(node.html('').html(), ''); + node.remove(); +}); + +test("outer",function(){ + var node = K('
                  xxx
                  '); + equals(node.outer(), '
                  xxx
                  '); + equals(node.addClass('aaa').outer(), '
                  xxx
                  '); +}); + +test("chidren",function(){ + var node = K('
                  abc123
                  '); + equals(node.children().length, 2); + equals(node.children().name, 'span'); + equals(K('
                  ').children().length, 0); +}); + +test('show/hide',function(){ + var node = K('
                  '); + equals(node.show().outer(), '
                  '); + equals(node.hide().outer(), '
                  '); + equals(node.show().outer(), '
                  '); + + node = K('
                  '); + equals(node.show().outer(), '
                  '); + equals(node.hide().outer(), '
                  '); + equals(node.show().outer(), '
                  '); + + node = K('
                  '); + equals(node.show().outer(), '
                  '); + equals(node.hide().outer(), '
                  '); + equals(node.show().outer(), '
                  '); +}); + +test("data", function(){ + K(document).data('abc', '123'); + K('body').data('abc', '1234'); + K('body div').data('abc', '12345'); + + equals(K(document).data('abc'), '123'); + equals(K('body').data('abc'), '1234'); + equals(K('body div').data('abc'), '12345'); +}); diff --git a/tools/NKeditor/test/quirkmode.html b/tools/NKeditor/test/quirkmode.html new file mode 100644 index 00000000..3d7bc82d --- /dev/null +++ b/tools/NKeditor/test/quirkmode.html @@ -0,0 +1,25 @@ + + + + + KindEditor Test + + +

                  KindEditor Test

                  +
                  + +
                  + + + + +
                  + + diff --git a/tools/NKeditor/test/range.html b/tools/NKeditor/test/range.html new file mode 100644 index 00000000..abbef04b --- /dev/null +++ b/tools/NKeditor/test/range.html @@ -0,0 +1,52 @@ + + + + + KindEditor Unittest + + + + + + + + + + + + + +

                  KindEditor Unittest

                  +

                  +
                    + + + + + + + + + + + diff --git a/tools/NKeditor/test/range.js b/tools/NKeditor/test/range.js new file mode 100644 index 00000000..60dff43e --- /dev/null +++ b/tools/NKeditor/test/range.js @@ -0,0 +1,812 @@ +module('range'); + +test('range', function() { + var p = K.query('#test-data-01 p'); + var strong = K.query('#test-data-01 strong'); + + var range, nativeRange; + range = K.range(document); + ok(range.startContainer === document); + ok(range.startOffset === 0); + ok(range.endContainer === document); + ok(range.endOffset === 0); + ok(range.collapsed === true); + ok(range.commonAncestor() === document); + + range = K.range(document); + range.selectNodeContents(strong); + nativeRange = range.get(); + var newRange = K.range(nativeRange); + same(range.toString(), newRange.toString()); +}); + +test('range.setStart', function() { + expect(6); + + var p = K.query('#test-data-01 p'); + var strong = K.query('#test-data-01 strong'); + + var range = K.range(document); + range.setStart(strong.previousSibling, 3); + + ok(range.startContainer === strong.previousSibling); + ok(range.startOffset === 3); + ok(range.endContainer === strong.previousSibling); + ok(range.endOffset === 3); + ok(range.collapsed === true); + ok(range.commonAncestor() === strong.previousSibling); +}); + +test('range.setEnd', function() { + expect(6); + + var p = K.query('#test-data-01 p'); + var strong = K.query('#test-data-01 strong'); + + var range = K.range(document); + range.setStart(strong.previousSibling, 3); + range.setEnd(p, 4); + + ok(range.startContainer === strong.previousSibling); + ok(range.startOffset === 3); + ok(range.endContainer === p); + ok(range.endOffset === 4); + ok(range.collapsed === false); + ok(range.commonAncestor() === p); +}); + +test('range.setStartBefore', function() { + expect(6); + + var p = K.query('#test-data-01 p'); + var strong = K.query('#test-data-01 strong'); + + var range = K.range(document); + range.setStartBefore(strong); + + ok(range.startContainer === p); + ok(range.startOffset === 1); + ok(range.endContainer === p); + ok(range.endOffset === 1); + ok(range.collapsed === true); + ok(range.commonAncestor() === p); +}); + +test('range.setStartAfter', function() { + expect(6); + + var p = K.query('#test-data-01 p'); + var strong = K.query('#test-data-01 strong'); + + var range = K.range(document); + range.setStartAfter(strong); + + ok(range.startContainer === p); + ok(range.startOffset === 2); + ok(range.endContainer === p); + ok(range.endOffset === 2); + ok(range.collapsed === true); + ok(range.commonAncestor() === p); +}); + +test('range.setEndBefore', function() { + expect(6); + + var p = K.query('#test-data-01 p'); + var strong = K.query('#test-data-01 strong'); + + var range = K.range(document); + range.setEndBefore(strong); + ok(range.startContainer === p); + ok(range.startOffset === 1); + ok(range.endContainer === p); + ok(range.endOffset === 1); + ok(range.collapsed === true); + ok(range.commonAncestor() === p); +}); + +test('range.setEndAfter', function() { + expect(6); + + var p = K.query('#test-data-01 p'); + var strong = K.query('#test-data-01 strong'); + + var range = K.range(document); + range.setStartAfter(strong); + range.setEndAfter(strong); + + ok(range.startContainer === p); + ok(range.startOffset === 2); + ok(range.endContainer === p); + ok(range.endOffset === 2); + ok(range.collapsed === true); + ok(range.commonAncestor() === p); +}); + +test('range.selectNode', function() { + expect(6); + + var p = K.query('#test-data-01 p'); + var strong = K.query('#test-data-01 strong'); + + var range = K.range(document); + range.selectNode(strong); + ok(range.startContainer === p); + ok(range.startOffset === 1); + ok(range.endContainer === p); + ok(range.endOffset === 2); + ok(range.collapsed === false); + ok(range.commonAncestor() === p); +}); + +test('range.selectNodeContents', function() { + var range, strong, img, p; + //1 + strong = K.query('#test-data-01 strong'); + range = K.range(document); + range.selectNodeContents(strong); + ok(range.startContainer === strong); + ok(range.startOffset === 0); + ok(range.endContainer === strong); + ok(range.endOffset === 1); + ok(range.collapsed === false); + ok(range.commonAncestor() === strong); + //2 + img = K.query('#test-data-01 img'); + range = K.range(document); + range.selectNodeContents(img); + ok(range.startContainer === img.parentNode); + ok(range.startOffset === 3); + ok(range.endContainer === img.parentNode); + ok(range.endOffset === 4); + ok(range.collapsed === false); + ok(range.commonAncestor() === img.parentNode); + //3 + strong = K.query('#test-data-02 strong'); + range = K.range(document); + range.selectNodeContents(strong); + ok(range.startContainer === strong); + ok(range.startOffset === 0); + ok(range.endContainer === strong); + ok(range.endOffset === 0); + ok(range.collapsed === true); + ok(range.commonAncestor() === strong); + //4 + p = K.query('#test-data-02 p'); + range = K.range(document); + range.selectNodeContents(p); + ok(range.startContainer === p); + ok(range.endContainer === p); + ok(range.startOffset === 0); + ok(range.endOffset === 7); + ok(range.collapsed === false); + ok(range.commonAncestor() === p); +}); + +test('range.collapse', function() { + var p = K.query('#test-data-01 p'); + var strong = K.query('#test-data-01 strong'); + var range; + range = K.range(document); + range.setStart(p.childNodes[2], 0); + range.setEnd(p.childNodes[4], 2); + range.collapse(true); + ok(range.startContainer === range.endContainer); + ok(range.startOffset === range.endOffset); + ok(range.collapsed === true); + range = K.range(document); + range.setStart(p.childNodes[2], 0); + range.setEnd(p.childNodes[4], 2); + range.collapse(false); + ok(range.startContainer === range.endContainer); + ok(range.startOffset === range.endOffset); + ok(range.collapsed === true); +}); + +test('range.compareBoundaryPoints', function() { + var p = K.query('#test-data-01 p'); + var strong = K.query('#test-data-01 strong'); + var cmp, rangeA, rangeB; + //1 + rangeA = K.range(document); + rangeB = K.range(document); + rangeA.setStart(p.childNodes[0], 0); + rangeA.setEnd(p.childNodes[0], 2); + rangeB.setStart(p.childNodes[4], 0); + rangeB.setEnd(p.childNodes[4], 2); + cmp = rangeA.compareBoundaryPoints(K.START_TO_START, rangeB); + ok(cmp === -1); + cmp = rangeA.compareBoundaryPoints(K.START_TO_END, rangeB); + ok(cmp === -1); + cmp = rangeA.compareBoundaryPoints(K.END_TO_END, rangeB); + ok(cmp === -1); + cmp = rangeA.compareBoundaryPoints(K.END_TO_START, rangeB); + ok(cmp === -1); + //2 + rangeA = K.range(document); + rangeB = K.range(document); + rangeA.setStart(p.childNodes[0], 0); + rangeA.setEnd(p.childNodes[4], 3); + rangeB.setStart(p.childNodes[4], 0); + rangeB.setEnd(p.childNodes[4], 2); + cmp = rangeA.compareBoundaryPoints(K.START_TO_START, rangeB); + ok(cmp === -1); + cmp = rangeA.compareBoundaryPoints(K.START_TO_END, rangeB); + ok(cmp === 1); + cmp = rangeA.compareBoundaryPoints(K.END_TO_END, rangeB); + ok(cmp === 1); + cmp = rangeA.compareBoundaryPoints(K.END_TO_START, rangeB); + ok(cmp === -1); + //3 + rangeA = K.range(document); + rangeB = K.range(document); + rangeA.setStart(p.childNodes[0], 0); + rangeA.setEnd(p.childNodes[2], 3); + rangeB.setStart(p.childNodes[2], 0); + rangeB.setEnd(p.childNodes[4], 2); + cmp = rangeA.compareBoundaryPoints(K.START_TO_START, rangeB); + ok(cmp === -1); + cmp = rangeA.compareBoundaryPoints(K.START_TO_END, rangeB); + ok(cmp === 1); + cmp = rangeA.compareBoundaryPoints(K.END_TO_END, rangeB); + ok(cmp === -1); + cmp = rangeA.compareBoundaryPoints(K.END_TO_START, rangeB); + ok(cmp === -1); + //4 + rangeA = K.range(document); + rangeB = K.range(document); + rangeA.selectNode(strong); + rangeB.selectNode(p); + cmp = rangeA.compareBoundaryPoints(K.START_TO_START, rangeB); + ok(cmp === 1); + cmp = rangeA.compareBoundaryPoints(K.START_TO_END, rangeB); + ok(cmp === 1); + cmp = rangeA.compareBoundaryPoints(K.END_TO_END, rangeB); + ok(cmp === -1); + cmp = rangeA.compareBoundaryPoints(K.END_TO_START, rangeB); + ok(cmp === -1); + //5 + rangeA = K.range(document); + rangeB = K.range(document); + rangeA.setStart(p.childNodes[0], 0); + rangeA.setEnd(p.childNodes[0], 2); + rangeB.setStart(p.childNodes[0], 0); + rangeB.setEnd(p.childNodes[0], 2); + cmp = rangeA.compareBoundaryPoints(K.START_TO_START, rangeB); + ok(cmp === 0); + cmp = rangeA.compareBoundaryPoints(K.START_TO_END, rangeB); + ok(cmp === 1); + cmp = rangeA.compareBoundaryPoints(K.END_TO_END, rangeB); + ok(cmp === 0); + cmp = rangeA.compareBoundaryPoints(K.END_TO_START, rangeB); + ok(cmp === -1); + //6 + rangeA = K.range(document); + rangeB = K.range(document); + rangeA.selectNode(strong); + rangeB.selectNode(strong.firstChild); + cmp = rangeA.compareBoundaryPoints(K.START_TO_START, rangeB); + ok(cmp === -1); + cmp = rangeA.compareBoundaryPoints(K.START_TO_END, rangeB); + ok(cmp === 1); + cmp = rangeA.compareBoundaryPoints(K.END_TO_END, rangeB); + ok(cmp === 1); + cmp = rangeA.compareBoundaryPoints(K.END_TO_START, rangeB); + ok(cmp === -1); + //7 + rangeA = K.range(document); + rangeB = K.range(document); + rangeA.selectNode(strong.firstChild); + rangeB.setStart(strong.firstChild, 0); + rangeB.setEnd(strong.firstChild, 2); + cmp = rangeA.compareBoundaryPoints(K.START_TO_START, rangeB); + ok(cmp === -1); + cmp = rangeA.compareBoundaryPoints(K.START_TO_END, rangeB); + ok(cmp === 1); + cmp = rangeA.compareBoundaryPoints(K.END_TO_END, rangeB); + ok(cmp === 1); + cmp = rangeA.compareBoundaryPoints(K.END_TO_START, rangeB); + ok(cmp === -1); + //8 + rangeA = K.range(document); + rangeB = K.range(document); + rangeA.selectNode(p.childNodes[3]); + rangeB.selectNode(strong.firstChild); + rangeB.setEnd(strong.nextSibling, 4); + cmp = rangeA.compareBoundaryPoints(K.START_TO_START, rangeB); + ok(cmp === 1); + cmp = rangeA.compareBoundaryPoints(K.START_TO_END, rangeB); + ok(cmp === 1); + cmp = rangeA.compareBoundaryPoints(K.END_TO_END, rangeB); + ok(cmp === 1); + cmp = rangeA.compareBoundaryPoints(K.END_TO_START, rangeB); + ok(cmp === 1); + //9 + rangeA = K.range(document); + rangeB = K.range(document); + rangeA.selectNode(strong.previousSibling); + rangeB.setStart(p, 1); + rangeB.setEnd(strong.firstChild, 3); + cmp = rangeA.compareBoundaryPoints(K.START_TO_START, rangeB); + ok(cmp === -1); + cmp = rangeA.compareBoundaryPoints(K.START_TO_END, rangeB); + ok(cmp === 0); + cmp = rangeA.compareBoundaryPoints(K.END_TO_END, rangeB); + ok(cmp === -1); + cmp = rangeA.compareBoundaryPoints(K.END_TO_START, rangeB); + ok(cmp === -1); + //10 + rangeA = K.range(document); + rangeB = K.range(document); + rangeA.selectNode(strong.previousSibling); + rangeB.selectNode(strong.firstChild); + rangeB.setEnd(strong.nextSibling, 4); + cmp = rangeA.compareBoundaryPoints(K.START_TO_START, rangeB); + ok(cmp === -1); + cmp = rangeA.compareBoundaryPoints(K.START_TO_END, rangeB); + ok(cmp === -1); + cmp = rangeA.compareBoundaryPoints(K.END_TO_END, rangeB); + ok(cmp === -1); + cmp = rangeA.compareBoundaryPoints(K.END_TO_START, rangeB); + ok(cmp === -1); + //10 + rangeA = K.range(document); + rangeB = K.range(document); + rangeA.setStart(strong.previousSibling, 4); + rangeB.setStart(strong.firstChild, 0); + cmp = rangeA.compareBoundaryPoints(K.START_TO_END, rangeB); + ok(cmp === -1); +}); + +test('range.cloneRange', function() { + expect(6); + var p = K.query('#test-data-01 p'); + var strong = K.query('#test-data-01 strong'); + + var range = K.range(document); + range.setStart(p.childNodes[2], 0); + range.setEnd(p.childNodes[4], 2); + var cloneRange = range.cloneRange(); + ok(range.startContainer === cloneRange.startContainer); + ok(range.startOffset === cloneRange.startOffset); + ok(range.endContainer === cloneRange.endContainer); + ok(range.endOffset === cloneRange.endOffset); + ok(range.collapsed === cloneRange.collapsed); + ok(range.commonAncestor() === cloneRange.commonAncestor()); +}); + +test('range.toString', function() { + var p = K.query('#test-data-01 p'); + var strong = K.query('#test-data-01 strong'); + var range; + //1 + range = K.range(document); + range.selectNode(strong); + same(range.toString(), 'efg'); + //2 + range = K.range(document); + range.selectNode(strong); + range.setStart(strong.firstChild, 1); + same(range.toString(), 'fg'); + //3 + range = K.range(document); + range.setStart(strong.firstChild, 1); + range.setEnd(strong.firstChild, 2); + same(range.toString(), 'f'); + //4 + range = K.range(document); + range.setStart(p.childNodes[0], 0); + range.setEnd(p.childNodes[4], 2); + same(range.toString(), 'abcdefghijkxy'); + //5 + range = K.range(document); + range.setStart(p.childNodes[4], 1); + range.setEnd(p.childNodes[4], 2); + same(range.toString(), 'y'); + //6 + range = K.range(document); + range.selectNode(p); + same(range.toString(), 'abcdefghijkxyz0123456789'); + //7 + range = K.range(document); + range.selectNode(strong.firstChild); + same(range.toString(), 'efg'); + //8 + range = K.range(document); + range.selectNode(strong); + same(range.toString(), 'efg'); + //9 + range = K.range(document); + same(range.toString(), ''); + //10 + range = K.range(document); + range.selectNode(document.body); + ok(range.toString().length > 100); +}); + +test('range.cloneContents', function() { + var p = K.query('#test-data-01 p'); + var strong = K.query('#test-data-01 strong'); + var range, frag; + //1 + range = K.range(document); + range.selectNode(strong); + frag = range.cloneContents(); + same(K(frag).outer().toLowerCase(), 'efg'); + ok(!range.collapsed); + //2 + range = K.range(document); + range.setStart(strong.firstChild, 1); + range.setEnd(strong.firstChild, 2); + frag = range.cloneContents(); + same(K(frag).outer().toLowerCase(), 'f'); + //3 + range = K.range(document); + range.setStart(strong.firstChild, 0); + range.setEnd(strong.firstChild, 3); + frag = range.cloneContents(); + same(K(frag).outer().toLowerCase(), 'efg'); + //4 + range = K.range(document); + range.setStart(strong.firstChild, 1); + range.setEnd(strong.nextSibling, 1); + frag = range.cloneContents(); + same(K(frag).outer().toLowerCase(), 'fgh'); + //5 + range = K.range(document); + range.setStart(strong.firstChild, 1); + range.setEnd(strong.nextSibling, 0); + frag = range.cloneContents(); + same(K(frag).outer().toLowerCase(), 'fg'); + //6 + range = K.range(document); + range.setStart(p, 0); + range.setEnd(p, 4); + frag = range.cloneContents(); + ok(K(frag).children().length === 4); + //7 + range = K.range(document); + range.selectNode(strong.firstChild); + range.setEnd(strong.nextSibling, 4); + frag = range.cloneContents(); + same(K(frag).outer().toLowerCase(), 'efghijk'); + //8 + range = K.range(document); + range.setStart(strong.nextSibling, 4); + range.setEnd(p, 4); + frag = range.cloneContents(); + ok(K(frag).children().length === 1); + same(K(frag).first().name, 'img'); +}); + +test('range.extractContents', function() { + var p = K.query('#test-data-01 p'), + cloneP, strong, range, frag, div; + //1 + cloneP = p.cloneNode(true); + document.body.appendChild(cloneP); + strong = K.query('strong', cloneP); + range = K.range(document); + range.selectNode(strong); + frag = range.extractContents(); + same(K(frag).outer().toLowerCase(), 'efg'); + ok(range.collapsed); + document.body.removeChild(cloneP); + //2 + cloneP = p.cloneNode(true); + document.body.appendChild(cloneP); + strong = K.query('strong', cloneP); + range = K.range(document); + range.setStart(strong.firstChild, 1); + range.setEnd(strong.firstChild, 2); + frag = range.extractContents(); + same(K(frag).outer().toLowerCase(), 'f'); + document.body.removeChild(cloneP); + //3 + cloneP = p.cloneNode(true); + document.body.appendChild(cloneP); + strong = K.query('strong', cloneP); + range = K.range(document); + range.setStart(strong.firstChild, 0); + range.setEnd(strong.firstChild, 3); + frag = range.extractContents(); + same(K(frag).outer().toLowerCase(), 'efg'); + document.body.removeChild(cloneP); + //4 + cloneP = p.cloneNode(true); + document.body.appendChild(cloneP); + strong = K.query('strong', cloneP); + range = K.range(document); + range.setStart(strong.firstChild, 1); + range.setEnd(strong.nextSibling, 1); + frag = range.extractContents(); + same(K(frag).outer().toLowerCase(), 'fgh'); + document.body.removeChild(cloneP); + //5 + cloneP = p.cloneNode(true); + document.body.appendChild(cloneP); + strong = K.query('strong', cloneP); + range = K.range(document); + range.setStart(strong.firstChild, 1); + range.setEnd(strong.nextSibling, 0); + frag = range.extractContents(); + same(K(frag).outer().toLowerCase(), 'fg'); + document.body.removeChild(cloneP); + //6 + cloneP = p.cloneNode(true); + document.body.appendChild(cloneP); + strong = K.query('strong', cloneP); + range = K.range(document); + range.setStart(cloneP, 0); + range.setEnd(cloneP, 4); + frag = range.extractContents(); + ok(K(frag).children().length === 4); + document.body.removeChild(cloneP); + //7 + cloneP = p.cloneNode(true); + document.body.appendChild(cloneP); + strong = K.query('strong', cloneP); + range = K.range(document); + range.selectNode(strong.firstChild); + range.setEnd(strong.nextSibling, 4); + frag = range.extractContents(); + same(K(frag).outer().toLowerCase(), 'efghijk'); + document.body.removeChild(cloneP); + //8 + cloneP = p.cloneNode(true); + document.body.appendChild(cloneP); + strong = K.query('strong', cloneP); + range = K.range(document); + range.setStart(cloneP, 3); + range.setEnd(cloneP, 4); + frag = range.extractContents(); + ok(K(frag).children().length === 1); + same(K(frag).first().name, 'img'); + document.body.removeChild(cloneP); + //9 + cloneP = p.cloneNode(true); + document.body.appendChild(cloneP); + strong = K.query('strong', cloneP); + range = K.range(document); + range.setStart(cloneP, 1); + range.setEnd(strong.firstChild, 3); + frag = range.extractContents(); + same(K(frag).outer().toLowerCase(), 'efg'); + document.body.removeChild(cloneP); + //10 + cloneP = p.cloneNode(true); + document.body.appendChild(cloneP); + strong = K.query('strong', cloneP); + range = K.range(document); + range.setStart(cloneP, 0); + range.setEnd(strong.firstChild, 1); + frag = range.extractContents(); + same(K(frag).outer(), 'abcde'); + document.body.removeChild(cloneP); + //11 + div = K('
                    efg
                    '); + document.body.appendChild(div[0]); + range = K.range(document); + range.setStart(div[0], 1); + range.setEnd(div.last().first()[0], 1); + frag = range.extractContents(); + same(div.outer().toLowerCase(), '
                    eg
                    '); + same(K(frag).outer().toLowerCase(), 'f'); + document.body.removeChild(div[0]); + //12 + div = K('
                    abcdefghijk
                    '); + document.body.appendChild(div[0]); + range = K.range(document); + range.setStart(div[0], 2); + range.setEnd(div.children()[2], 1); + frag = range.extractContents(); + same(div.outer().toLowerCase(), '
                    abcdhijk
                    '); + same(K(frag).outer().toLowerCase(), 'efg'); + document.body.removeChild(div[0]); + //13 + div = K('
                    abcdefghijk
                    '); + document.body.appendChild(div[0]); + range = K.range(document); + range.setStart(div.children().eq(2).first()[0], 1); + range.setEnd(div[0], 4); + frag = range.extractContents(); + same(div.outer().toLowerCase(), '
                    abcdefg
                    '); + same(K(frag).outer().toLowerCase(), 'hijk'); + document.body.removeChild(div[0]); + //14 + div = K('
                    \nabcd\n
                    '); + document.body.appendChild(div[0]); + range = K.range(document); + range.setStart(div.first().next()[0], 1); + range.setEnd(div[0], 3); + frag = range.extractContents(); + same(div.html().toLowerCase(), 'abcd'); + same(K(frag).outer().toLowerCase(), ''); + document.body.removeChild(div[0]); +}); + +test('range.deleteContents', function() { + var p = K.query('#test-data-01 p'), + cloneP, strong, range, frag; + //1 + cloneP = p.cloneNode(true); + document.body.appendChild(cloneP); + strong = K.query('strong', cloneP); + range = K.range(document); + range.selectNode(strong); + frag = range.deleteContents(); + ok(range.collapsed); + ok(frag === range); + document.body.removeChild(cloneP); +}); + +test('range.insertNode', function() { + var p = K.query('#test-data-01 p'), + cloneP, strong, range, frag; + //1 + cloneP = p.cloneNode(true); + document.body.appendChild(cloneP); + strong = K.query('strong', cloneP); + range = K.range(document); + range.selectNode(strong); + range.insertNode(K('abc').get()); + same(range.toString(), 'abcefg'); + document.body.removeChild(cloneP); + //2 + cloneP = p.cloneNode(true); + document.body.appendChild(cloneP); + strong = K.query('strong', cloneP); + range = K.range(document); + range.selectNode(strong.firstChild); + range.insertNode(K('123').get()); + same(range.toString(), '123efg'); + document.body.removeChild(cloneP); + //3 + cloneP = p.cloneNode(true); + document.body.appendChild(cloneP); + strong = K.query('strong', cloneP); + range = K.range(document); + range.setStart(strong.firstChild, 0); + range.setEnd(strong.firstChild, 3); + range.insertNode(K('123').get()); + same(range.toString(), '123efg'); + document.body.removeChild(cloneP); + //4 + cloneP = p.cloneNode(true); + document.body.appendChild(cloneP); + strong = K.query('strong', cloneP); + range = K.range(document); + range.setStart(strong.firstChild, 1); + range.setEnd(strong.firstChild, 2); + range.insertNode(K('123').get()); + same(range.toString(), '123f'); + document.body.removeChild(cloneP); + //5 + cloneP = p.cloneNode(true); + document.body.appendChild(cloneP); + strong = K.query('strong', cloneP); + var frag = document.createDocumentFragment(); + frag.appendChild(K('1').get()); + frag.appendChild(K('2').get()); + range = K.range(document); + range.selectNode(strong); + range.insertNode(frag); + same(range.toString(), '12efg'); + document.body.removeChild(cloneP); +}); + +test('range.surroundContents', function() { + var p = K.query('#test-data-01 p'), + cloneP, strong, range; + //1 + cloneP = p.cloneNode(true); + document.body.appendChild(cloneP); + strong = K.query('strong', cloneP); + range = K.range(document); + range.selectNode(strong); + range.surroundContents(K('').get()); + same(range.html(), 'efg'); + document.body.removeChild(cloneP); + //2 + cloneP = p.cloneNode(true); + document.body.appendChild(cloneP); + strong = K.query('strong', cloneP); + range = K.range(document); + range.selectNode(strong.firstChild); + range.surroundContents(K('').get()); + same(range.html(), 'efg'); + document.body.removeChild(cloneP); + //3 + cloneP = p.cloneNode(true); + document.body.appendChild(cloneP); + strong = K.query('strong', cloneP); + range = K.range(document); + range.setStart(strong.firstChild, 1); + range.setEnd(strong.firstChild, 2); + range.surroundContents(K('').get()); + same(range.html(), 'f'); + document.body.removeChild(cloneP); + //4 + cloneP = p.cloneNode(true); + document.body.appendChild(cloneP); + strong = K.query('strong', cloneP); + range = K.range(document); + range.setStart(strong.firstChild, 0); + range.setEnd(strong.firstChild, 3); + range.surroundContents(K('').get()); + same(range.html(), 'efg'); + document.body.removeChild(cloneP); + //5 + cloneP = p.cloneNode(true); + document.body.appendChild(cloneP); + strong = K.query('strong', cloneP); + range = K.range(document); + range.setStart(strong.firstChild, 1); + range.setEnd(cloneP, 3); + range.surroundContents(K('').get()); + same(range.html(), 'fghijk'); + document.body.removeChild(cloneP); +}); + +test('range.enlarge', function() { + var div = K('
                    '); + K(document.body.firstChild).before(div); + //1 + div.html('123abcdef'); + range = K.range(document); + range.setStart(div.first().first().first()[0], 0); + range.setEnd(div.first().first().next()[0], 3); + range.enlarge(); + same(range.html(), '123abc'); + div.html(''); +}); + +test('range.shrink', function() { + var div = K('
                    '); + K(document.body.firstChild).before(div); + //1 + div.html('

                    123abc

                    '); + range = K.range(document); + range.setStart(div[0], 0); + range.setEnd(div[0], 1); + range.shrink(); + same(range.html(), '123abc'); + div.html(''); +}); + +test('range.moveToBookmark', function() { + var div = K('
                    '); + K(document.body.firstChild).before(div); + //1 + div.html('

                    123456789

                    '); + range = K.range(document); + range.setStart(div.first().first()[0], 3); + range.setEnd(div.first().first().next()[0], 1); + var bookmark = range.createBookmark(); + range.moveToBookmark(bookmark); + same(range.html(), '45678'); + div.html(''); + //2 + div.html('

                    123456789

                    '); + range = K.range(document); + range.setStart(div.first()[0], 1); + range.setEnd(div.first().last()[0], 0); + var bookmark = range.createBookmark(true); + range.moveToBookmark(bookmark); + same(range.html(), '5678'); + div.html(''); +}); + +test('range.get', function() { + var div = K('
                    '); + K(document.body.firstChild).before(div); + //1 + div.html('0123456789
                    123
                    '); + range = K.range(document); + range.setStart(div.first()[0], 7); + range.setEnd(div.first()[0], 8); // "7" + var nativeRange = range.get(); + newRange = K.range(nativeRange); + equals(range.html(), newRange.html()); + div.html(''); +}); \ No newline at end of file diff --git a/tools/NKeditor/test/remote.html b/tools/NKeditor/test/remote.html new file mode 100644 index 00000000..d0c16383 --- /dev/null +++ b/tools/NKeditor/test/remote.html @@ -0,0 +1,19 @@ + + + + + KindEditor Test + + + + +

                    KindEditor Test

                    + + + diff --git a/tools/NKeditor/test/selector.html b/tools/NKeditor/test/selector.html new file mode 100644 index 00000000..3815de9f --- /dev/null +++ b/tools/NKeditor/test/selector.html @@ -0,0 +1,56 @@ + + + + + KindEditor Unittest + + + + + + + + + + + + +

                    KindEditor Unittest

                    +

                    +
                      + + + + + + + + + + + diff --git a/tools/NKeditor/test/selector.js b/tools/NKeditor/test/selector.js new file mode 100644 index 00000000..1a83dc0c --- /dev/null +++ b/tools/NKeditor/test/selector.js @@ -0,0 +1,55 @@ +module('selector'); + +test('query', function() { + var div = K.query('#test-data-01'); + var strong = K.query('#test-data-01 strong'); + + ok(K.query('p', div) === jQuery('p', div).get(0)); + ok(K.query('strong', strong) === null); + ok(K.query('strong', div) === jQuery('strong', div).get(0)); + ok(K.query('img[border]', div) === jQuery('img[border]', div).get(0)); + ok(K.query('img[alt]', div) === null); + ok(K.query('img[border="0"]', div) === jQuery('img[border="0"]', div).get(0)); + ok(K.query('img[border="1"]', div) === null); + ok(typeof K.query('img[src="\\.\\/data\\/logo_180_30\\.gif"]') === 'object'); // note: jquery has a bug + ok(K.query('.test-class') === jQuery('.test-class').get(0)); + ok(K.query('.test-class', document.body) === jQuery('.test-class').get(0)); + ok(K.query('[class="test-class"]') === jQuery('[class="test-class"]').get(0)); + ok(K.query('[id="test-data-01"]') === jQuery('[id="test-data-01"]').get(0)); + ok(K.query('img.test-class') === null); + ok(K.query('img#test-data-01') === null); + ok(K.query('div#escaped-id\\:\\.') === jQuery('div#escaped-id\\:\\.').get(0)); + ok(K.query('input[name="escaped-name\\:\\."]') === jQuery('input[name="escaped-name\\:\\."]').get(0)); + ok(K.query('input[name="escaped-name\\:\\."]', div) === jQuery('input[name="escaped-name\\:\\."]').get(0)); + ok(K.query('img[border="0"]', div) === jQuery('img[border="0"]', div).get(0)); + ok(K.query('img[border]', div) === jQuery('img[border]', div).get(0)); + ok(K.query('.test-class') === jQuery('.test-class').get(0)); + ok(K.query('img #test-data-01') === null); + ok(K.query('body #test-data-01') === jQuery('body #test-data-01').get(0)); + + ok(K.query('div#test-data-01 strong') === jQuery('div#test-data-01 strong').get(0)); + ok(K.query('div#test-data-01 p strong') === jQuery('div#test-data-01 p strong').get(0)); + ok(K.query('div#test-data-01 > p > strong') === jQuery('div#test-data-01 > p > strong').get(0)); + ok(K.query('div#test-data-01>p>strong') === jQuery('div#test-data-01>p>strong').get(0)); + ok(K.query('div#test-data-01 > p > img[border="0"]') === jQuery('div#test-data-01 > p > img[border="0"]').get(0)); + ok(K.query('div#test-data-01 > strong', document, false) === null); +}); + +test('queryAll', function() { + var div = K.query('#test-data-01'); + var strong = K.query('#test-data-01 strong'); + + ok(K.queryAll('*').length === jQuery('*').length); + ok(K.queryAll('div').length === jQuery('div').length); + ok(K.queryAll('.test-class').length === jQuery('.test-class').length); + ok(K.queryAll('*', div).length === jQuery('*', div).length); + ok(K.queryAll('[border]', div).length === jQuery('[border]', div).length); + ok(K.queryAll('[border="0"]', div).length === jQuery('[border="0"]', div).length); + ok(K.queryAll('[border="1"]', div).length === jQuery('[border="1"]', div).length); + ok(K.queryAll('div', div).length === jQuery('div', div).length); + ok(K.queryAll('p *', div).length === jQuery('p *', div).length); + ok(K.queryAll('strong', div).length === jQuery('strong', div).length); + ok(K.queryAll('strong', strong).length === jQuery('strong', strong).length); + ok(K.queryAll('div p').length === jQuery('div p').length); + ok(K.queryAll('div,.test-class').length === jQuery('div,test-class').length); +}); diff --git a/tools/NKeditor/test/tabs.html b/tools/NKeditor/test/tabs.html new file mode 100644 index 00000000..812eeb64 --- /dev/null +++ b/tools/NKeditor/test/tabs.html @@ -0,0 +1,49 @@ + + + + + KindEditor Tabs Test + + + + + + + + + + + + + + + + +

                      KindEditor Tabs Test

                      +
                      +
                      内容1
                      +
                      内容2
                      +
                      内容3
                      + + + diff --git a/tools/NKeditor/test/toolbar.html b/tools/NKeditor/test/toolbar.html new file mode 100644 index 00000000..36e32467 --- /dev/null +++ b/tools/NKeditor/test/toolbar.html @@ -0,0 +1,34 @@ + + + + + KindEditor Toolbar Test + + + + + + + + + + + + + + + + + +

                      KindEditor Toolbar Test

                      +
                      +
                      +
                      + + + + + + + + diff --git a/tools/NKeditor/test/toolbar.js b/tools/NKeditor/test/toolbar.js new file mode 100644 index 00000000..06d4d7c0 --- /dev/null +++ b/tools/NKeditor/test/toolbar.js @@ -0,0 +1,60 @@ + +var items = [ + 'source', '|', 'fullscreen', 'undo', 'redo', 'print', 'cut', 'copy', 'paste', + 'plainpaste', 'wordpaste', '|', 'justifyleft', 'justifycenter', 'justifyright', + 'justifyfull', 'insertorderedlist', 'insertunorderedlist', 'indent', 'outdent', 'subscript', + 'superscript', '|', 'selectall', '/', + 'formatblock', 'fontname', 'fontsize', '|', 'forecolor', 'hilitecolor', 'bold', + 'italic', 'underline', 'strikethrough', 'removeformat', '|', 'image', + 'flash', 'media', 'table', 'hr', 'emoticons', 'link', 'unlink', '|', 'about' +]; +var list = []; +K.each(items, function(i, name) { + if (name == '|') { + list.push(''); + } else if (name == '/') { + list.push('
                      '); + } else { + list.push(''); + list.push(''); + } +}); + +var toolbar = K.toolbar({ + src : 'div#toolbar', + width : '100%', + html : list.join(''), + click : function(e, name) { + alert(name); + } +}); + +K('#enable').bind('click', function(e) { + if (toolbar) { + toolbar.disableAll(false); + } +}); + +K('#disable').bind('click', function(e) { + if (toolbar) { + toolbar.disableAll(true); + } +}); + +K('#toggle').bind('click', function(e) { + if (toolbar) { + toolbar.disableAll(); + } +}); + +K('#select').bind('click', function(e) { + if (toolbar) { + toolbar.select('bold'); + } +}); + +K('#unselect').bind('click', function(e) { + if (toolbar) { + toolbar.unselect('bold'); + } +}); diff --git a/tools/NKeditor/test/total.html b/tools/NKeditor/test/total.html new file mode 100644 index 00000000..b79daeb7 --- /dev/null +++ b/tools/NKeditor/test/total.html @@ -0,0 +1,58 @@ + + + + + + KindEditor Test + + +

                      KindEditor Test

                      +
                      + +
                      + +
                      + +
                      + +
                      + +
                      + + + + + + + + + + +
                      + + diff --git a/tools/NKeditor/test/webdriver/KindEditorDriver.php b/tools/NKeditor/test/webdriver/KindEditorDriver.php new file mode 100644 index 00000000..557d84cd --- /dev/null +++ b/tools/NKeditor/test/webdriver/KindEditorDriver.php @@ -0,0 +1,151 @@ +webDriver = new WebDriver($serverUrl); + $this->session = $this->webDriver->session($browser); + if ($url !== '') { + $this->open($url); + } + } + + public function open($url) { + if (strpos($url, 'http://') !== 0) { + $url = $this->baseUrl . $url; + } + $this->session->open($url); + return $this; + } + + public function selector($selector, $index = 0) { + $endTime = time() + $this->timeout; + while (true) { + try { + if ($index > 0) { + $elements = $this->session->elements('css selector', $selector); + $this->element = $elements[$index]; + } else { + $this->element = $this->session->element('css selector', $selector); + } + return $this; + } catch (NoSuchElementWebDriverError $e) { + } + sleep(1); + if (time() > $endTime) { + break; + } + } + throw new TimeOutWebDriverError('The element could not be found', ''); + } + + public function value($val) { + $this->element->value(array('value' => strSplitUnicode($val))); + return $this; + } + + public function keys($val) { + $this->session->keys(array('value' => strSplitUnicode($val))); + return $this; + } + + public function click() { + $this->element->click(''); + return $this; + } + + public function mouseover() { + $this->session->moveto(array('element' => $this->element->getID())); + return $this; + } + + public function script($script) { + return $this->session->execute(array( + 'script' => $script, + 'args' => array(), + )); + } + + public function clickToolbar($name) { + $this->session->frame(array('id' => null)); + return $this->selector('.ke-icon-' . $name)->click(); + } + + // get or set editor content + public function html($val = null) { + $this->session->frame(array('id' => null)); + if ($val === null) { + return preg_replace('/[\r\n\t]/', '', $this->script("return editor.html();")); + } + $this->script("editor.html('$val');"); + return $this; + } + + // input editor content + public function input($val) { + $id = 'ke-edit-iframe'; + $this->script("KindEditor('.ke-edit-iframe').eq(0).attr('id', '$id');"); + $this->selector("#$id"); + $this->session->frame(array('id' => $id)); + $this->keys($val); + return $this; + } + + // drag element + public function drag($x, $y) { + //$id = 'document-body'; + //$this->script("KindEditor('body').attr('id', '$id');"); + + $this->mouseover(); + $this->session->buttondown(""); + $this->session->moveto(array( + //'element' => $id, + 'xoffset' => $x, + 'yoffset' => $y, + )); + $this->session->buttonup(""); + return $this; + } + + public function close() { + $this->session->close(); + return $this; + } + +} + +function strSplitUnicode($str, $l = 1) { + if ($l > 0) { + $ret = array(); + $len = mb_strlen($str, "UTF-8"); + for ($i = 0; $i < $len; $i += $l) { + $ret[] = mb_substr($str, $i, $l, "UTF-8"); + } + return $ret; + } + return preg_split("//u", $str, -1, PREG_SPLIT_NO_EMPTY); +} + +function equals($a, $b) { + if ($a === $b) { + echo "[OK] \"$a\"\n"; + } else { + echo "[FAILED]\n"; + echo "Expected: \"$b\"\n"; + echo "Result: \"$a\"\n"; + } +} diff --git a/tools/NKeditor/test/webdriver/all-chrome.bat b/tools/NKeditor/test/webdriver/all-chrome.bat new file mode 100644 index 00000000..81febc43 --- /dev/null +++ b/tools/NKeditor/test/webdriver/all-chrome.bat @@ -0,0 +1,2 @@ +php all.php --browser=chrome +pause \ No newline at end of file diff --git a/tools/NKeditor/test/webdriver/all-firefox.bat b/tools/NKeditor/test/webdriver/all-firefox.bat new file mode 100644 index 00000000..12e4e22b --- /dev/null +++ b/tools/NKeditor/test/webdriver/all-firefox.bat @@ -0,0 +1,2 @@ +php all.php --browser=firefox +pause \ No newline at end of file diff --git a/tools/NKeditor/test/webdriver/all-ie.bat b/tools/NKeditor/test/webdriver/all-ie.bat new file mode 100644 index 00000000..ada464bd --- /dev/null +++ b/tools/NKeditor/test/webdriver/all-ie.bat @@ -0,0 +1,2 @@ +php all.php --browser="internet explorer" +pause \ No newline at end of file diff --git a/tools/NKeditor/test/webdriver/all.php b/tools/NKeditor/test/webdriver/all.php new file mode 100644 index 00000000..c702a180 --- /dev/null +++ b/tools/NKeditor/test/webdriver/all.php @@ -0,0 +1,27 @@ +session('firefox'); + +* See also [wiki page for launching different browsers](https://github.com/facebook/php-webdriver/wiki/Launching-Browsers). + +## SIMPLE EXAMPLES + +### Note that all of these match the Protocol exactly +* Move to a specific spot on the screen + + // POST /session/:sessionId/moveto + $session->moveto(array('xoffset' => 3, 'yoffset' => 300)); + +* Get the current url + + // GET /session/:sessionId/url + $session->url(); + +* Change focus to another frame + + // POST /session/:sessionId/frame + $session->frame(array('id' => 'some_frame_id')); + +* Get a list of window handles for all open windows + + // GET /session/:sessionId/window_handles + $session->window_handles(); + +* Accept the currently displayed alert dialog + + // POST /session/:sessionId/accept_alert + $session->accept_alert(); + +* Change asynchronous script timeout + + // POST /session/:sessionId/timeouts/async_script + $session->timeouts()->async_script(array('ms' => 2000)); + +* Doubleclick an element on a touch screen + + // POST session/:sessionId/touch/doubleclick + $session->touch()->doubleclick(array('element' => $element->getID()) + +* Check if two elements are equal + + // GET /session/:sessionId/element/:id/equals/:other + $element->equals($other_element->getID())) + +* Get value of a css property on element + + // GET /session/:sessionId/element/:id/css/:propertyName + $element->css($property_name) + +## 'GET', 'POST', or 'DELETE' to the same command examples + +### When you can do multiple http methods for the same command, call the command directly for the 'GET', and prepend the http method for the 'POST' or 'DELETE'. + +* Set landscape orientation with 'POST' + + // POST /session/:sessionId/orientation + $session->postOrientation(array('orientation' => 'LANDSCAPE')); + +* Get landscape orientation with normal 'GET' + + // GET /session/:sessionId/orientation + $session->orientation(); + +* Set size of window that has $window_handle with 'POST' + + // If excluded, $window_handle defaults to 'current' + // POST /session/:sessionId/window/:windowHandle/size + $session + ->window($window_handle) + ->postSize(array('width' => 10, 'height' => 10)); + +* Get current window size with 'GET' + + // GET /session/:sessionId/window/:windowHandle/size + $session->window()->size(); + +## Some unavoidable exceptions to direct protocol translation. + +* Opening pages + + // POST /session/:sessionId/url + $session->open('http://www.facebook.com'); + +* Dealing with the session + + // DELETE /session/:sessionId + $session->close(); + + // GET /session/:sessionId + $session->capabilities(); + +* To find elements + + // POST /session/:sessionId/element + $element = $session->element($using, $value); + + // POST /session/:sessionId/elements + $session->elements($using, $value); + + // POST /session/:sessionId/element/:id/element + $element->element($using, $value); + + // POST /session/:sessionId/element/:id/elements + $element->elements($using, $value); + +* To get the active element + + // POST /session/:sessionId/element/active + $session->activeElement(); + +* To manipulate cookies + + // GET /session/:sessionId/cookie + $session->getAllCookies(); + + // POST /session/:sessionId/cookie + $session->setCookie($cookie_json); + + // DELETE /session/:sessionId/cookie + $session->deleteAllCookies() + + // DELETE /session/:sessionId/cookie/:name + $session->deleteCookie($name) + +* To manipulate windows + + // POST /session/:sessionId/window + $session->focusWindow($window_handle); + + // DELETE /session/:sessionId/window + $session->deleteWindow(); + +### See also [wiki page of examples](https://github.com/facebook/php-webdriver/wiki/Example-command-reference). \ No newline at end of file diff --git a/tools/NKeditor/test/webdriver/php-webdriver/WebDriver.php b/tools/NKeditor/test/webdriver/php-webdriver/WebDriver.php new file mode 100644 index 00000000..a2dbbc28 --- /dev/null +++ b/tools/NKeditor/test/webdriver/php-webdriver/WebDriver.php @@ -0,0 +1,49 @@ + 'GET', + ); + } + + public function session( + $browser = 'firefox', + $additional_capabilities = array()) { + + $desired_capabilities = array_merge( + $additional_capabilities, + array('browserName' => $browser)); + + $results = $this->curl( + 'POST', + '/session', + array('desiredCapabilities' => $desired_capabilities), + array(CURLOPT_FOLLOWLOCATION => true)); + + return new WebDriverSession($results['info']['url']); + } + + public function sessions() { + $result = $this->curl('GET', '/sessions'); + $sessions = array(); + foreach ($result['value'] as $session) { + $sessions[] = new WebDriverSession( + $this->url . '/session/' . $session['id']); + } + return $sessions; + } +} diff --git a/tools/NKeditor/test/webdriver/php-webdriver/WebDriverBase.php b/tools/NKeditor/test/webdriver/php-webdriver/WebDriverBase.php new file mode 100644 index 00000000..6d17fc56 --- /dev/null +++ b/tools/NKeditor/test/webdriver/php-webdriver/WebDriverBase.php @@ -0,0 +1,236 @@ +url = $url; + } + public function __toString() { + return $this->url; + } + + public function getURL() { + return $this->url; + } + + /** + * Curl request to webdriver server. + * + * $http_method 'GET', 'POST', or 'DELETE' + * $command If not defined in methods() this function will throw. + * $params If an array(), they will be posted as JSON parameters + * If a number or string, "/$params" is appended to url + * $extra_opts key=>value pairs of curl options to pass to curl_setopt() + */ + protected function curl( + $http_method, + $command, + $params = null, + $extra_opts = array()) { + + if ($params && is_array($params) && $http_method !== 'POST') { + throw new Exception(sprintf( + 'The http method called for %s is %s but it has to be POST' . + ' if you want to pass the JSON params %s', + $command, + $http_method, + json_encode($params))); + } + + $url = sprintf('%s%s', $this->url, $command); + if ($params && (is_int($params) || is_string($params))) { + $url .= '/' . $params; + } + + $curl = curl_init($url); + curl_setopt($curl, CURLOPT_RETURNTRANSFER, true); + curl_setopt( + $curl, + CURLOPT_HTTPHEADER, + array( + 'Content-Type: application/json;charset=UTF-8', + 'Accept: application/json')); + + if ($http_method === 'POST') { + curl_setopt($curl, CURLOPT_POST, true); + if ($params && is_array($params)) { + curl_setopt($curl, CURLOPT_POSTFIELDS, json_encode($params)); + } + } else if ($http_method == 'DELETE') { + curl_setopt($curl, CURLOPT_CUSTOMREQUEST, 'DELETE'); + } + + foreach ($extra_opts as $option => $value) { + curl_setopt($curl, $option, $value); + } + + $raw_results = trim(WebDriverEnvironment::CurlExec($curl)); + $info = curl_getinfo($curl); + + if ($error = curl_error($curl)) { + $msg = sprintf( + 'Curl error thrown for http %s to %s', + $http_method, + $url); + if ($params && is_array($params)) { + $msg .= sprintf(' with params: %s', json_encode($params)); + } + throw new WebDriverCurlException($msg . "\n\n" . $error); + } + curl_close($curl); + + $results = json_decode($raw_results, true); + + $value = null; + if (is_array($results) && array_key_exists('value', $results)) { + $value = $results['value']; + } + + $message = null; + if (is_array($value) && array_key_exists('message', $value)) { + $message = $value['message']; + } + + self::throwException($results['status'], $message, $results); + + return array('value' => $value, 'info' => $info); + } + + public function __call($name, $arguments) { + if (count($arguments) > 1) { + throw new Exception( + 'Commands should have at most only one parameter,' . + ' which should be the JSON Parameter object'); + } + + if (preg_match('/^(get|post|delete)/', $name, $matches)) { + $http_method = strtoupper($matches[0]); + $webdriver_command = strtolower(substr($name, strlen($http_method))); + $default_http_method = $this->getHTTPMethod($webdriver_command); + if ($http_method === $default_http_method) { + throw new Exception(sprintf( + '%s is the default http method for %s. Please just call %s().', + $http_method, + $webdriver_command, + $webdriver_command)); + } + $methods = $this->methods(); + if (!in_array($http_method, $methods[$webdriver_command])) { + throw new Exception(sprintf( + '%s is not an available http method for the command %s.', + $http_method, + $webdriver_command)); + } + } else { + $webdriver_command = $name; + $http_method = $this->getHTTPMethod($webdriver_command); + } + + $results = $this->curl( + $http_method, + '/' . $webdriver_command, + array_shift($arguments)); + + return $results['value']; + } + + private function getHTTPMethod($webdriver_command) { + if (!array_key_exists($webdriver_command, $this->methods())) { + throw new Exception(sprintf( + '%s is not a valid webdriver command.', + $webdriver_command)); + } + + $methods = $this->methods(); + $http_methods = (array) $methods[$webdriver_command]; + return array_shift($http_methods); + } +} diff --git a/tools/NKeditor/test/webdriver/php-webdriver/WebDriverContainer.php b/tools/NKeditor/test/webdriver/php-webdriver/WebDriverContainer.php new file mode 100644 index 00000000..9787ae79 --- /dev/null +++ b/tools/NKeditor/test/webdriver/php-webdriver/WebDriverContainer.php @@ -0,0 +1,60 @@ +curl( + 'POST', + '/element', + array( + 'using' => $using, + 'value' => $value)); + } catch (NoSuchElementWebDriverError $e) { + throw new NoSuchElementWebDriverError( + sprintf( + 'Element not found with %s, %s', + $using, + $value) . "\n\n" . $e->getMessage(), + $e->getResults()); + } + + return $this->webDriverElement($results['value']); + } + + public function elements($using, $value) { + $results = $this->curl( + 'POST', + '/elements', + array( + 'using' => $using, + 'value' => $value + )); + + return array_filter(array_map( + array($this, 'webDriverElement'), $results['value'])); + } + + protected function webDriverElement($value) { + return array_key_exists('ELEMENT', (array) $value) ? + new WebDriverElement( + $this->getElementPath($value['ELEMENT']), // url + $value['ELEMENT']) : // id + null; + } + + + abstract protected function getElementPath($element_id); +} diff --git a/tools/NKeditor/test/webdriver/php-webdriver/WebDriverElement.php b/tools/NKeditor/test/webdriver/php-webdriver/WebDriverElement.php new file mode 100644 index 00000000..2b806e4e --- /dev/null +++ b/tools/NKeditor/test/webdriver/php-webdriver/WebDriverElement.php @@ -0,0 +1,50 @@ + 'POST', + 'submit' => 'POST', + 'text' => 'GET', + 'value' => 'POST', + 'name' => 'GET', + 'clear' => 'POST', + 'selected' => 'GET', + 'enabled' => 'GET', + 'attribute' => 'GET', + 'equals' => 'GET', + 'displayed' => 'GET', + 'location' => 'GET', + 'location_in_view' => 'GET', + 'size' => 'GET', + 'css' => 'GET', + ); + } + + private $id; + public function __construct($url, $id) { + $this->id = $id; + parent::__construct($url); + } + + public function getID() { + return $this->id; + } + + protected function getElementPath($element_id) { + return preg_replace(sprintf('/%s$/', $this->id), $element_id, $this->url); + } +} diff --git a/tools/NKeditor/test/webdriver/php-webdriver/WebDriverEnvironment.php b/tools/NKeditor/test/webdriver/php-webdriver/WebDriverEnvironment.php new file mode 100644 index 00000000..71d393be --- /dev/null +++ b/tools/NKeditor/test/webdriver/php-webdriver/WebDriverEnvironment.php @@ -0,0 +1,25 @@ +results = $results; + } + + public function getResults() { + return $this->results; + } +} + +class IndexOutOfBoundsWebDriverError extends WebDriverException {} // 1 +class NoCollectionWebDriverError extends WebDriverException {} // 2 +class NoStringWebDriverError extends WebDriverException {} // 3 +class NoStringLengthWebDriverError extends WebDriverException {} // 4 +class NoStringWrapperWebDriverError extends WebDriverException {} // 5 +class NoSuchDriverWebDriverError extends WebDriverException {} // 6 +class NoSuchElementWebDriverError extends WebDriverException {} // 7 +class NoSuchFrameWebDriverError extends WebDriverException {} // 8 +class UnknownCommandWebDriverError extends WebDriverException {} // 9 +class ObsoleteElementWebDriverError extends WebDriverException {} // 10 +class ElementNotDisplayedWebDriverError extends WebDriverException {} // 11 +class InvalidElementStateWebDriverError extends WebDriverException {} // 12 +class UnhandledWebDriverError extends WebDriverException {} // 13 +class ExpectedWebDriverError extends WebDriverException {} // 14 +class ElementNotSelectableWebDriverError extends WebDriverException {} // 15 +class NoSuchDocumentWebDriverError extends WebDriverException {} // 16 +class UnexpectedJavascriptWebDriverError extends WebDriverException {} // 17 +class NoScriptResultWebDriverError extends WebDriverException {} // 18 +class XPathLookupWebDriverError extends WebDriverException {} // 19 +class NoSuchCollectionWebDriverError extends WebDriverException {} // 20 +class TimeOutWebDriverError extends WebDriverException {} // 21 +class NullPointerWebDriverError extends WebDriverException {} // 22 +class NoSuchWindowWebDriverError extends WebDriverException {} // 23 +class InvalidCookieDomainWebDriverError extends WebDriverException {} // 24 +class UnableToSetCookieWebDriverError extends WebDriverException {} // 25 +class UnexpectedAlertOpenWebDriverError extends WebDriverException {} // 26 +class NoAlertOpenWebDriverError extends WebDriverException {} // 27 +class ScriptTimeoutWebDriverError extends WebDriverException {} // 28 +class InvalidElementCoordinatesWebDriverError extends WebDriverException {}// 29 +class IMENotAvailableWebDriverError extends WebDriverException {} // 30 +class IMEEngineActivationFailedWebDriverError extends WebDriverException {}// 31 +class InvalidSelectorWebDriverError extends WebDriverException {} // 32 diff --git a/tools/NKeditor/test/webdriver/php-webdriver/WebDriverSession.php b/tools/NKeditor/test/webdriver/php-webdriver/WebDriverSession.php new file mode 100644 index 00000000..5679b78b --- /dev/null +++ b/tools/NKeditor/test/webdriver/php-webdriver/WebDriverSession.php @@ -0,0 +1,148 @@ + 'GET', // for POST, use open($url) + 'forward' => 'POST', + 'back' => 'POST', + 'refresh' => 'POST', + 'execute' => 'POST', + 'execute_async' => 'POST', + 'screenshot' => 'GET', + 'window_handle' => 'GET', + 'window_handles' => 'GET', + 'frame' => 'POST', + 'source' => 'GET', + 'title' => 'GET', + 'keys' => 'POST', + 'orientation' => array('GET', 'POST'), + 'alert_text' => array('GET', 'POST'), + 'accept_alert' => 'POST', + 'dismiss_alert' => 'POST', + 'moveto' => 'POST', + 'click' => 'POST', + 'buttondown' => 'POST', + 'buttonup' => 'POST', + 'doubleclick' => 'POST', + ); + } + + // /session/:sessionId/url (POST) + public function open($url) { + $this->curl('POST', '/url', array('url' => $url)); + return $this; + } + + // /session/:sessionId (GET) + public function capabilities() { + $result = $this->curl('GET', ''); + return $result['value']; + } + + // /session/:sessionId (DELETE) + public function close() { + $result = $this->curl('DELETE', ''); + return $result['value']; + } + + // /session/:sessionId/cookie (GET) + public function getAllCookies() { + $result = $this->curl('GET', '/cookie'); + return $result['value']; + } + + // /session/:sessionId/cookie (POST) + public function setCookie($cookie_json) { + $this->curl('POST', '/cookie', array('cookie' => $cookie_json)); + return $this; + } + + // /session/:sessionId/cookie (DELETE) + public function deleteAllCookies() { + $this->curl('DELETE', '/cookie'); + return $this; + } + + // /session/:sessionId/cookie/:name (DELETE) + public function deleteCookie($cookie_name) { + $this->curl('DELETE', '/cookie/' . $cookie_name); + return $this; + } + + public function timeouts() { + $item = new WebDriverSimpleItem($this->url . '/timeouts'); + return $item->setMethods(array( + 'async_script' => 'POST', + 'implicit_wait' => 'POST', + )); + } + + public function ime() { + $item = new WebDriverSimpleItem($this->url . '/ime'); + return $item->setMethods(array( + 'available_engines' => 'GET', + 'active_engine' => 'GET', + 'activated' => 'GET', + 'deactivate' => 'POST', + 'activate' => 'POST', + )); + } + + // /session/:sessionId/window (DELETE) + public function deleteWindow() { + $this->curl('DELETE', '/window'); + return $this; + } + + // /session/:sessionId/window (POST) + public function focusWindow($name) { + $this->curl('POST', '/window', array('name' => $name)); + return $this; + } + + public function window($window_handle = 'current') { + $item = new WebDriverSimpleItem($this->url . '/window/' . $window_handle); + return $item->setMethods(array( + 'size' => array('GET', 'POST'), + 'position' => array('GET', 'POST'), + )); + } + + // /session/:sessionId/element/active (POST) + public function activeElement() { + $results = $this->curl('POST', '/element/active'); + return $this->webDriverElement($results['value']); + } + + public function touch() { + $item = new WebDriverSimpleItem($this->url . '/touch'); + return $item->setMethods(array( + 'click' => 'POST', + 'down' => 'POST', + 'up' => 'POST', + 'move' => 'POST', + 'scroll' => 'POST', + 'doubleclick' => 'POST', + 'longclick' => 'POST', + 'flick' => 'POST', + )); + } + + protected function getElementPath($element_id) { + return sprintf('%s/element/%s', $this->url, $element_id); + } +} diff --git a/tools/NKeditor/test/webdriver/php-webdriver/WebDriverSimpleItem.php b/tools/NKeditor/test/webdriver/php-webdriver/WebDriverSimpleItem.php new file mode 100644 index 00000000..f675c454 --- /dev/null +++ b/tools/NKeditor/test/webdriver/php-webdriver/WebDriverSimpleItem.php @@ -0,0 +1,26 @@ +_methods; + } + + public function setMethods($methods) { + $this->_methods = $methods; + return $this; + } +} diff --git a/tools/NKeditor/test/webdriver/php-webdriver/__init__.php b/tools/NKeditor/test/webdriver/php-webdriver/__init__.php new file mode 100644 index 00000000..d2d4aa90 --- /dev/null +++ b/tools/NKeditor/test/webdriver/php-webdriver/__init__.php @@ -0,0 +1,23 @@ +html(''); +// bold +$driver->clickToolbar('bold'); +$driver->input('abc'); +equals($driver->html(), 'abc'); +// fontsize +$driver->clickToolbar('fontsize'); +$driver->selector('.ke-menu-item', 6)->mouseover()->click(); +$driver->input('abc'); +equals($driver->html(), 'abcabc'); +// removeformat +$driver->clickToolbar('removeformat'); +$driver->input('123'); +equals($driver->html(), 'abcabc123'); + +$driver->close(); diff --git a/tools/NKeditor/test/webdriver/test-dialog.php b/tools/NKeditor/test/webdriver/test-dialog.php new file mode 100644 index 00000000..5912d148 --- /dev/null +++ b/tools/NKeditor/test/webdriver/test-dialog.php @@ -0,0 +1,17 @@ +script("return KindEditor('.ke-dialog').css('top')")); +$prevLeft = intval($driver->script("return KindEditor('.ke-dialog').css('left')")); +$driver->selector('.ke-dialog-header')->drag(100, 200); +equals(intval($driver->script("return KindEditor('.ke-dialog').css('top')")), $prevTop + 200); +equals(intval($driver->script("return KindEditor('.ke-dialog').css('left')")), $prevLeft + 100); + +// close dialog +$driver->selector('.ke-dialog-icon-close')->click(); + +$driver->close(); diff --git a/tools/NKeditor/test/webdriver/test-unittest.php b/tools/NKeditor/test/webdriver/test-unittest.php new file mode 100644 index 00000000..08982bf2 --- /dev/null +++ b/tools/NKeditor/test/webdriver/test-unittest.php @@ -0,0 +1,23 @@ +open($file); + equals($driver->selector('.failed')->element->text(), '0'); +} + +$driver->close(); diff --git a/tools/NKeditor/test/widget.html b/tools/NKeditor/test/widget.html new file mode 100644 index 00000000..28850902 --- /dev/null +++ b/tools/NKeditor/test/widget.html @@ -0,0 +1,64 @@ + + + + + KindEditor Widget Test + + + + + + + + + + + + + + + + + +

                      KindEditor Widget Test

                      + + +
                      +
                      + + + + diff --git a/tools/NKeditor/themes/app.css b/tools/NKeditor/themes/app.css new file mode 100644 index 00000000..c461f423 --- /dev/null +++ b/tools/NKeditor/themes/app.css @@ -0,0 +1,79 @@ +/* 引用样式 */ +blockquote { + padding: 20px; + margin: 20px 0; + border: 1px solid #eee; + border-left-width: 5px; + border-left-color: #ce4844; + border-radius: 3px; +} +blockquote, q { + quotes: none; +} + +/* 表格样式 */ +table { + border-spacing: 0; + border-collapse: collapse; +} +td, +th { + padding: 0; +} +.table { + border-collapse: collapse !important; +} +.table td, +.table th { + background-color: #fff !important; + border: 1px solid #ddd; +} +.table-bordered th, +.table-bordered td { + border: 1px solid #ddd !important; +} +.table { + width: 100%; + max-width: 100%; + margin-bottom: 20px; +} +.table > thead > tr > th, +.table > tbody > tr > th, +.table > tfoot > tr > th, +.table > thead > tr > td, +.table > tbody > tr > td, +.table > tfoot > tr > td { + padding: 8px; + line-height: 1.42857143; + vertical-align: top; + border-top: 1px solid #ddd; +} +.table > thead > tr > th { + vertical-align: bottom; + border-bottom: 2px solid #ddd; +} +.table > caption + thead > tr:first-child > th, +.table > colgroup + thead > tr:first-child > th, +.table > thead:first-child > tr:first-child > th, +.table > caption + thead > tr:first-child > td, +.table > colgroup + thead > tr:first-child > td, +.table > thead:first-child > tr:first-child > td { + border-top: 0; +} +.table > tbody + tbody { + border-top: 2px solid #ddd; +} +.table .table { + background-color: #fff; +} +table col[class*="col-"] { + position: static; + display: table-column; + float: none; +} +table td[class*="col-"], +table th[class*="col-"] { + position: static; + display: table-cell; + float: none; +} diff --git a/tools/NKeditor/themes/black/editor.css b/tools/NKeditor/themes/black/editor.css new file mode 100644 index 00000000..a84525cf --- /dev/null +++ b/tools/NKeditor/themes/black/editor.css @@ -0,0 +1,822 @@ +@charset "UTF-8"; +/** +公共样式 +*/ +.ke-clearfix { + zoom: 1; + clear: both; } + +.ke-clearfix:after { + content: "."; + display: block; + clear: both; + font-size: 0; + height: 0; + line-height: 0; + visibility: hidden; } + +.ke-animated { + animation: zoomIn; + animation-duration: 0.3s; + animation-fill-mode: both; } + +@keyframes zoomIn { + from { + opacity: 0; + transform: scale3d(0.3, 0.3, 0.3); } + 50% { + opacity: 1; } } +.ke-dialog-mask { + background-color: #FFF; + filter: alpha(opacity=50); + opacity: 0.5; } + +.ke-dialog-lock { + background-color: #FFF; + filter: alpha(opacity=50); + opacity: 0.5; + z-index: 811213; + left: 0; + top: 0; + position: absolute; } + +/** +编辑器样式开始 + */ +.ke-container { + display: block; + background-color: #FFF; + overflow: hidden; + margin: 0; + padding: 0; + box-shadow: 0 1px 3px rgba(0, 0, 0, 0.12), 0 1px 1px 1px rgba(0, 0, 0, 0.16); + /** + 通用样式 + */ + /** + toolbar 样式 + */ + /** + ke-edit + */ + /** + statusbar start + */ } + .ke-container .ke-shadow { + box-shadow: 1px 1px 3px #A0A0A0; + -moz-box-shadow: 1px 1px 3px #A0A0A0; + -webkit-box-shadow: 1px 1px 3px #A0A0A0; + filter: progid:DXImageTransform.Microsoft.Shadow(color='#A0A0A0', Direction=135, Strength=3); + background-color: #F0F0EE; } + .ke-container .ke-menu a, + .ke-container .ke-menu a:hover, + .ke-container .ke-dialog a, + .ke-container .ke-dialog a:hover { + color: #337FE5; + text-decoration: none; } + .ke-container .ke-toolbar { + text-align: left; + overflow: hidden; + zoom: 1; + padding: 0px 5px; } + .ke-container .ke-toolbar .ke-outline { + padding: 10px 5px; + font-size: 0; + line-height: 0; + cursor: pointer; + display: block; + float: left; + /** + * 按钮通用样式 + */ } + .ke-container .ke-toolbar .ke-outline .ke-toolbar-icon { + font-size: 0; + line-height: 0; + overflow: hidden; + display: block; + width: 16px; + height: 16px; + margin: 0px 2px; } + .ke-container .ke-toolbar .ke-on { + background: #ebebeb; } + .ke-container .ke-toolbar .ke-selected { + background-color: #ebebeb; } + .ke-container .ke-toolbar .ke-disabled { + cursor: default; } + .ke-container .ke-toolbar .ke-separator { + height: 16px; + margin: 2px 3px; + border-left: 1px solid #A0A0A0; + border-right: 1px solid #FFFFFF; + border-top: 0; + border-bottom: 0; + width: 0; + font-size: 0; + line-height: 0; + overflow: hidden; + display: block; + float: left; } + .ke-container .ke-toolbar .ke-hr { + clear: both; + height: 1px; + width: calc(100% - (2 * 2px)); + background: #ebebeb; } + .ke-container .ke-edit { + padding: 0; } + .ke-container .ke-edit .ke-edit-iframe, + .ke-container .ke-edit .ke-edit-textarea { + border: 0; + margin: 0; + padding: 0; + overflow: auto; } + .ke-container .ke-edit .ke-edit-textarea { + font: 12px/1.5 "Consolas", "Monaco", "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; + color: #000; + overflow: auto; + resize: none; } + .ke-container .ke-edit .ke-edit-textarea:focus { + outline: none; } + .ke-container .ke-statusbar { + position: relative; + background-color: #f5f5f5; + border-top: 1px solid #e1e1e1; + font-size: 0; + line-height: 0; + *height: 12px; + overflow: hidden; + text-align: center; + cursor: s-resize; + display: none; } + .ke-container .ke-statusbar .ke-statusbar-center-icon { + background-position: -0px -754px; + width: 15px; + height: 11px; } + .ke-container .ke-statusbar .ke-statusbar-right-icon { + position: absolute; + right: 0; + bottom: 0; + cursor: se-resize; + width: 11px; + height: 11px; } + +/** + menu 右键菜单 + */ +.ke-menu { + border: 1px solid #cccccc; + background-color: #f5f5f5; + color: #222222; + padding: 2px; + font-family: "sans serif", tahoma, verdana, helvetica; + font-size: 12px; + text-align: left; + overflow: hidden; + /** + 表情插件 + */ } + .ke-menu .ke-menu-item { + border: 1px solid #F1F1F1; + background-color: #F1F1F1; + color: #222222; + height: 24px; + overflow: hidden; + cursor: pointer; } + .ke-menu .ke-menu-item .ke-inline-block { + display: -moz-inline-stack; + display: inline-block; + vertical-align: middle; + zoom: 1; + *display: inline; } + .ke-menu .ke-menu-item .ke-inline-block .ke-inline-block { + display: -moz-inline-stack; + display: inline-block; + vertical-align: middle; + zoom: 1; + *display: inline; } + .ke-menu .ke-menu-item .ke-menu-item-left { + width: 27px; + text-align: center; + overflow: hidden; } + .ke-menu .ke-menu-item .ke-menu-item-center { + width: 0; + height: 24px; + border-left: 1px solid #E3E3E3; + border-right: 1px solid #FFFFFF; + border-top: 0; + border-bottom: 0; } + .ke-menu .ke-menu-item .ke-menu-item-center-on { + border-left: 1px solid #E9EFF6; + border-right: 1px solid #E9EFF6; } + .ke-menu .ke-menu-item .ke-menu-item-right { + border: 0; + padding: 0 0 0 5px; + line-height: 24px; + text-align: left; + overflow: hidden; } + .ke-menu .ke-menu-item .ke-menu-separator { + margin: 2px 0; + height: 0; + overflow: hidden; + border-top: 1px solid #e1e1e1; + border-bottom: 1px solid #FFFFFF; + border-left: 0; + border-right: 0; } + .ke-menu .ke-menu-item-on { + border: 1px solid #5690D2; + background-color: #E9EFF6; } + .ke-menu .ke-plugin-emoticons { + position: relative; } + .ke-menu .ke-plugin-emoticons .ke-preview { + position: absolute; + text-align: center; + margin: 2px; + padding: 10px; + top: 0; + border: 1px solid #A0A0A0; + background-color: #FFFFFF; + display: none; } + .ke-menu .ke-plugin-emoticons .ke-preview .ke-preview-img { + border: 0; + margin: 0; + padding: 0; } + .ke-menu .ke-plugin-emoticons .ke-table { + border: 0; + margin: 0; + padding: 0; + border-collapse: separate; } + .ke-menu .ke-plugin-emoticons .ke-table .ke-cell { + margin: 0; + padding: 1px; + border: 1px solid #f5f5f5; + cursor: pointer; } + .ke-menu .ke-plugin-emoticons .ke-table .ke-cell .ke-img { + display: block; + background-repeat: no-repeat; + overflow: hidden; + margin: 2px; + width: 24px; + height: 24px; + margin: 0; + padding: 0; + border: 0; } + .ke-menu .ke-plugin-emoticons .ke-table .ke-on { + border: 1px solid #5690D2; + background-color: #E9EFF6; } + .ke-menu .ke-plugin-emoticons .ke-page { + text-align: right; + margin: 5px; + padding: 0; + border: 0; + font: 12px/1 "sans serif", tahoma, verdana, helvetica; + color: #333; + text-decoration: none; } + +/** + colorpicker + */ +.ke-colorpicker { + border: 1px solid #A0A0A0; + background-color: #F1F1F1; + color: #222222; + padding: 2px; } + .ke-colorpicker .ke-colorpicker-table { + border: 0; + margin: 0; + padding: 0; + border-collapse: separate; } + .ke-colorpicker .ke-colorpicker-table .ke-colorpicker-cell { + font-size: 0; + line-height: 0; + border: 1px solid #F0F0EE; + cursor: pointer; + margin: 3px; + padding: 0; } + .ke-colorpicker .ke-colorpicker-table .ke-colorpicker-cell .ke-colorpicker-cell-color { + width: 14px; + height: 14px; + margin: 3px; + padding: 0; + border: 0; } + .ke-colorpicker .ke-colorpicker-table .ke-colorpicker-cell-top { + font-family: "sans serif", tahoma, verdana, helvetica; + font-size: 12px; + line-height: 24px; + border: 1px solid #F1F1F1; + cursor: pointer; + margin: 0; + padding: 0; + text-align: center; } + .ke-colorpicker .ke-colorpicker-table .ke-colorpicker-cell-on { + border: 1px solid #5690D2; } + .ke-colorpicker .ke-colorpicker-table .ke-colorpicker-cell-selected { + border: 1px solid #2446AB; } + +/** + dialog + */ +.ke-dialog { + margin: 0; + padding: 0; + border: 1px solid #cccccc; + zoom: 1; + box-shadow: 1px 1px 3px #A0A0A0; + -moz-box-shadow: 1px 1px 3px #A0A0A0; + -webkit-box-shadow: 1px 1px 3px #A0A0A0; + filter: progid:DXImageTransform.Microsoft.Shadow(color='#A0A0A0', Direction=135, Strength=3); + border-radius: 5px; + -moz-border-radius: 5px; + -webkit-border-radius: 5px; + overflow: hidden; } + .ke-dialog .ke-dialog-header { + border: 0; + margin: 0; + font-weight: bold; + font-size: 14px; + height: 30px; + line-height: 30px; + padding: 0px 10px; + text-align: left; + color: #222; + cursor: move; + border-top-left-radius: 6px; + border-top-right-radius: 6px; + border-bottom: 1px solid #c6c6c6; + background: transparent url(../common/dialog-title-bg.png) repeat-x scroll 0 0; + position: relative; + cursor: move; } + .ke-dialog .ke-dialog-header .ke-dialog-icon-close { + height: 20px; + width: 20px; + cursor: pointer; + background: url("../common/icons-all.gif") 0 -59px; + position: absolute; + right: 5px; + top: 4px; } + .ke-dialog .ke-dialog-header .ke-dialog-icon-close:hover { + background-position: 0px -89px; } + .ke-dialog .ke-dialog-content { + background-color: #FFF; + width: 100%; + height: 100%; + color: #333; + outline: 0; + zoom: 1; } + .ke-dialog .ke-dialog-content .ke-dialog-body { + font: 12px/1.5 "sans serif", tahoma, verdana, helvetica; + text-align: left; + overflow: hidden; + width: 100%; } + .ke-dialog .ke-dialog-content .ke-dialog-body .ke-textarea { + display: block; + width: 408px; + height: 260px; + font-family: "sans serif", tahoma, verdana, helvetica; + font-size: 12px; + border: 1px solid #cccccc; } + .ke-dialog .ke-dialog-content .ke-dialog-body .ke-textarea:focus { + border-color: #66afe9; + outline: none; } + .ke-dialog .ke-dialog-content .ke-dialog-body .ke-select { + display: -moz-inline-stack; + display: inline-block; + vertical-align: middle; + zoom: 1; + *display: inline; + width: auto; + border: 1px solid #cccccc; + height: 30px; } + .ke-dialog .ke-dialog-content .ke-dialog-body .ke-form { + margin: 0; + padding: 0; } + .ke-dialog .ke-dialog-content .ke-dialog-body .ke-input-number { + width: 50px; } + .ke-dialog .ke-dialog-content .ke-dialog-body .ke-input-checkbox { + position: relative; + top: 6px; } + .ke-dialog .ke-dialog-content .ke-dialog-body textarea { + display: block; + overflow: auto; + padding: 0; + resize: none; } + .ke-dialog .ke-dialog-content .ke-dialog-body textarea:focus { + outline: none; } + .ke-dialog .ke-dialog-content .ke-dialog-body .ke-input-text { + display: inline-block !important; + max-width: 400px; + height: 30px; + line-height: 30px; + border: 1px solid #cccccc; + font-size: 14px; + margin: 0; + outline: 0; + padding: 0px 10px; + *display: inline; } + .ke-dialog .ke-dialog-content .ke-dialog-body .ke-input-text:focus { + border-color: #66afe9; } + .ke-dialog .ke-dialog-content .ke-dialog-body .ke-input-color { + border: 1px solid #e1e1e1; + background-color: #FFFFFF; + font-size: 12px; + width: 60px; + height: 30px; + line-height: 30px; + padding-left: 5px; + overflow: hidden; + cursor: pointer; + display: -moz-inline-stack; + display: inline-block; + vertical-align: middle; + zoom: 1; + *display: inline; } + .ke-dialog .ke-dialog-content .ke-dialog-body .ke-upload-area { + position: relative; + overflow: hidden; + margin: 0; + padding: 0; + top: -1px; + position: relative; + *height: 25px; } + .ke-dialog .ke-dialog-content .ke-dialog-body .ke-upload-area .ke-upload-file { + position: absolute; + font-size: 60px; + top: 0; + right: 0; + padding: 0; + margin: 0; + z-index: 811212; + border: 0 none; + opacity: 0; + cursor: pointer; + width: 62px; + height: 30px; + filter: alpha(opacity=0); } + .ke-dialog .ke-dialog-content .ke-dialog-body .ke-upload-area .ke-button-common { + top: -1px; } + .ke-dialog .ke-dialog-content .ke-dialog-body .ke-upload-area .ke-button { + padding: 8px 15px; } + .ke-dialog .ke-dialog-content .ke-dialog-body .ke-dialog-content-inner { + padding: 10px 20px 0px 20px; + /** + tabs + */ } + .ke-dialog .ke-dialog-content .ke-dialog-body .ke-dialog-content-inner .ke-dialog-row { + border: 1px solid #FFFFFF; + margin-bottom: 10px; + overflow: hidden; } + .ke-dialog .ke-dialog-content .ke-dialog-body .ke-dialog-content-inner .ke-dialog-row .row-left { + float: left; + height: 30px; + line-height: 30px; + width: 60px; + text-align: right; } + .ke-dialog .ke-dialog-content .ke-dialog-body .ke-dialog-content-inner .ke-dialog-row .row-right { + float: left; + text-align: left; } + .ke-dialog .ke-dialog-content .ke-dialog-body .ke-dialog-content-inner .ke-dialog-row .row-right .ke-inline-block { + display: -moz-inline-stack; + display: inline-block; + vertical-align: middle; + zoom: 1; + *display: inline; } + .ke-dialog .ke-dialog-content .ke-dialog-body .ke-dialog-content-inner .ke-dialog-row .row-right .ke-inline-block .ke-upload-button { + position: relative; + top: -1px; } + .ke-dialog .ke-dialog-content .ke-dialog-body .ke-dialog-content-inner .ke-dialog-row .row-right label { + cursor: pointer; + display: -moz-inline-stack; + display: inline-block; + vertical-align: middle; + text-align: right; + zoom: 1; + *display: inline; } + .ke-dialog .ke-dialog-content .ke-dialog-body .ke-dialog-content-inner .ke-dialog-row .row-right label img { + display: -moz-inline-stack; + display: inline-block; + vertical-align: middle; + zoom: 1; + *display: inline; } + .ke-dialog .ke-dialog-content .ke-dialog-body .ke-dialog-content-inner .ke-header { + height: 30px; + line-height: 30px; } + .ke-dialog .ke-dialog-content .ke-dialog-body .ke-dialog-content-inner .ke-header .ke-input-text { + height: 22px; + line-height: 22px; } + .ke-dialog .ke-dialog-content .ke-dialog-body .ke-dialog-content-inner .ke-header .ke-button { + padding: 3px 10px; } + .ke-dialog .ke-dialog-content .ke-dialog-body .ke-dialog-content-inner .ke-header .checkbox { + margin-left: 10px; } + .ke-dialog .ke-dialog-content .ke-dialog-body .ke-dialog-content-inner .ke-tabs { + font: 12px/1 "sans serif", tahoma, verdana, helvetica; + border-bottom: 1px solid #e1e1e1; + margin-bottom: 20px; } + .ke-dialog .ke-dialog-content .ke-dialog-body .ke-dialog-content-inner .ke-tabs .ke-tabs-ul { + list-style: none outside none; + margin: 0; + padding: 0; } + .ke-dialog .ke-dialog-content .ke-dialog-body .ke-dialog-content-inner .ke-tabs .ke-tabs-ul .ke-tabs-li { + position: relative; + margin: 0 2px -1px 0; + padding: 0 20px; + float: left; + line-height: 25px; + text-align: center; + color: #337ab7; + cursor: pointer; } + .ke-dialog .ke-dialog-content .ke-dialog-body .ke-dialog-content-inner .ke-tabs .ke-tabs-ul .ke-tabs-li-selected { + background-color: #FFF; + border: 1px solid #e1e1e1; + border-bottom: 1px solid #FFF; + color: #555555; + cursor: default; + border-top-left-radius: 3px; + border-top-right-radius: 3px; } + .ke-dialog .ke-dialog-content .ke-dialog-body .ke-dialog-content-inner .ke-tabs .ke-tabs-ul .ke-tabs-li-on { + background-color: #FFF; + color: #000; } + .ke-dialog .ke-dialog-content .ke-dialog-loading { + position: absolute; + top: 0; + left: 1px; + z-index: 1; + text-align: center; } + .ke-dialog .ke-dialog-content .ke-dialog-loading .ke-dialog-loading-content { + background: url("../common/loading.gif") no-repeat center; + color: #666; + font-size: 14px; + font-weight: bold; + height: 31px; + line-height: 31px; + padding-left: 36px; } + .ke-dialog .ke-dialog-footer { + font: 12px/1 "sans serif", tahoma, verdana, helvetica; + text-align: right; + padding: 0 15px 5px 0; + background-color: #FFF; + height: 40px; } + .ke-dialog .ke-dialog-footer .ke-dialog-yes { + margin: 5px; } + .ke-dialog .ke-dialog-footer .ke-dialog-no { + margin: 5px 10px 5px 5px; } + .ke-dialog .ke-button-common { + display: inline-block; + text-align: center; + background: none; + border: none; + padding: 0; + cursor: pointer; } + .ke-dialog .ke-button-outer { + background-position: 0 -25px; + padding: 0; + display: -moz-inline-stack; + display: inline-block; + vertical-align: middle; + zoom: 1; + *display: inline; } + .ke-dialog .ke-button { + color: #333; + font-size: 12px; + border: 1px solid #e6e6e6; + background-color: #e6e6e6; + padding: 7px 10px; + margin-top: -4px; + color: #444; + text-decoration: none; + transition: background-color .3s ease-out, border-color .3s ease-out; } + .ke-dialog .ke-button:hover { + border: 1px solid #e1e1e1; + background-color: #e1e1e1; } + .ke-dialog .ke-dialog-btn { + font-size: 12px; + margin: 5px; + background: #2e8ded; + color: #fff !important; + padding: 8px 12px; + display: inline-block; + border-radius: 2px; + cursor: pointer; + text-decoration: none; + transition: .3s ease-out; } + .ke-dialog .ke-dialog-btn:hover { + filter: alpha(opacity=80); + box-shadow: none; + box-shadow: none; + opacity: .8; } + +.ke-container-black .ke-toolbar { + border-top: 5px solid #222222; + box-shadow: 0 1px 3px rgba(0, 0, 0, 0.12), 0 1px 1px 1px rgba(0, 0, 0, 0.16); + background-clip: padding-box; + text-rendering: optimizelegibility; } + .ke-container-black .ke-toolbar .ke-toolbar-icon { + *background-image: url(images/nkeditor.png); + background: url(images/nkeditor.svg) no-repeat; } + .ke-container-black .ke-toolbar .ke-icon-source { + background-position: 0 0px; } + .ke-container-black .ke-toolbar .ke-icon-preview { + background-position: 0 -63px; } + .ke-container-black .ke-toolbar .ke-icon-print { + background-position: 0 -84px; } + .ke-container-black .ke-toolbar .ke-icon-undo { + background-position: 0 -21px; } + .ke-container-black .ke-toolbar .ke-icon-redo { + background-position: 0 -42px; } + .ke-container-black .ke-toolbar .ke-icon-template { + background-position: 0 -105px; } + .ke-container-black .ke-toolbar .ke-icon-cut { + background-position: 0 -147px; } + .ke-container-black .ke-toolbar .ke-icon-copy { + background-position: 0 -168px; } + .ke-container-black .ke-toolbar .ke-icon-paste { + background-position: 0 -189px; } + .ke-container-black .ke-toolbar .ke-icon-selectall { + background-position: 0 -483px; } + .ke-container-black .ke-toolbar .ke-icon-justifyleft { + background-position: 0 -252px; } + .ke-container-black .ke-toolbar .ke-icon-justifycenter { + background-position: 0 -273px; } + .ke-container-black .ke-toolbar .ke-icon-justifyright { + background-position: 0 -294px; } + .ke-container-black .ke-toolbar .ke-icon-justifyfull { + background-position: 0 -315px; } + .ke-container-black .ke-toolbar .ke-icon-insertorderedlist { + background-position: 0 -336px; } + .ke-container-black .ke-toolbar .ke-icon-insertunorderedlist { + background-position: 0 -357px; } + .ke-container-black .ke-toolbar .ke-icon-indent { + background-position: 0 -378px; } + .ke-container-black .ke-toolbar .ke-icon-outdent { + background-position: 0 -399px; } + .ke-container-black .ke-toolbar .ke-icon-subscript { + background-position: 0 -420px; } + .ke-container-black .ke-toolbar .ke-icon-superscript { + background-position: 0 -441px; } + .ke-container-black .ke-toolbar .ke-icon-date { + background-position: 0px -304px; + width: 25px; + height: 16px; } + .ke-container-black .ke-toolbar .ke-icon-time { + background-position: 0px -320px; + width: 25px; + height: 16px; } + .ke-container-black .ke-toolbar .ke-icon-formatblock { + background-position: 0 -546px; } + .ke-container-black .ke-toolbar .ke-icon-fontname { + background-position: 0 -567px; } + .ke-container-black .ke-toolbar .ke-icon-fontsize { + background-position: 0 -588px; } + .ke-container-black .ke-toolbar .ke-icon-forecolor { + background-position: 0 -609px; } + .ke-container-black .ke-toolbar .ke-icon-hilitecolor { + background-position: 0 -630px; } + .ke-container-black .ke-toolbar .ke-icon-bold { + background-position: 0 -651px; } + .ke-container-black .ke-toolbar .ke-icon-italic { + background-position: 0 -672px; } + .ke-container-black .ke-toolbar .ke-icon-underline { + background-position: 0 -693px; } + .ke-container-black .ke-toolbar .ke-icon-strikethrough { + background-position: 0 -714px; } + .ke-container-black .ke-toolbar .ke-icon-removeformat { + background-position: 0 -756px; } + .ke-container-black .ke-toolbar .ke-icon-image { + background-position: 0 -777px; } + .ke-container-black .ke-toolbar .ke-icon-flash { + background-position: 0 -840px; } + .ke-container-black .ke-toolbar .ke-icon-media { + background-position: 0 -861px; } + .ke-container-black .ke-toolbar .ke-icon-div { + background-position: 0px -544px; + width: 16px; + height: 16px; } + .ke-container-black .ke-toolbar .ke-icon-formula { + background-position: 0px -576px; + width: 16px; + height: 16px; } + .ke-container-black .ke-toolbar .ke-icon-hr { + background-position: 0 -924px; } + .ke-container-black .ke-toolbar .ke-icon-emoticons { + background-position: 0 -945px; } + .ke-container-black .ke-toolbar .ke-icon-link { + background-position: 0 -1008px; } + .ke-container-black .ke-toolbar .ke-icon-unlink { + background-position: 0 -1029px; } + .ke-container-black .ke-toolbar .ke-icon-fullscreen { + background-position: 0 -525px; } + .ke-container-black .ke-toolbar .ke-icon-about { + background-position: 0 -1092px; } + .ke-container-black .ke-toolbar .ke-icon-quote { + background-position: 0 -1114px; } + .ke-container-black .ke-toolbar .ke-icon-plainpaste { + background-position: 0 -210px; } + .ke-container-black .ke-toolbar .ke-icon-wordpaste { + background-position: 0 -231px; } + .ke-container-black .ke-toolbar .ke-icon-table { + background-position: 0px -903px; + width: 18px !important; } + .ke-container-black .ke-toolbar .ke-icon-tablemenu { + background-position: 0px -768px; + width: 16px; + height: 16px; } + .ke-container-black .ke-toolbar .ke-icon-code { + background-position: 0 -126px; } + .ke-container-black .ke-toolbar .ke-icon-map { + background-position: 0px -976px; + width: 16px; + height: 16px; } + .ke-container-black .ke-toolbar .ke-icon-baidumap { + background-position: 0 -1050px; } + .ke-container-black .ke-toolbar .ke-icon-lineheight { + background-position: 0 -735px; } + .ke-container-black .ke-toolbar .ke-icon-clearhtml { + background-position: 0 -462px; } + .ke-container-black .ke-toolbar .ke-icon-pagebreak { + background-position: 0 -966px; } + .ke-container-black .ke-toolbar .ke-icon-insertfile { + background-position: 0 -882px; } + .ke-container-black .ke-toolbar .ke-icon-quickformat { + background-position: 0 -504px; } + .ke-container-black .ke-toolbar .ke-icon-anchor { + background-position: 0 -987px; } + .ke-container-black .ke-toolbar .ke-icon-search { + background-position: 0px -1184px; + width: 16px; + height: 16px; } + .ke-container-black .ke-toolbar .ke-icon-new { + background-position: 0px -1200px; + width: 16px; + height: 16px; } + .ke-container-black .ke-toolbar .ke-icon-specialchar { + background-position: 0px -1216px; + width: 16px; + height: 16px; } + .ke-container-black .ke-toolbar .ke-icon-multiimage { + background-position: 0 -798px; } + .ke-container-black .ke-toolbar .ke-icon-graft { + background-position: 0 -819px; } + +/** + menu 右键菜单 + */ +.ke-menu-black .ke-menu-item .ke-menu-item-left { + width: 27px; + text-align: center; + overflow: hidden; } + .ke-menu-black .ke-menu-item .ke-menu-item-left .ke-toolbar-icon { + font-size: 0; + line-height: 0; + overflow: hidden; + display: block; + width: 16px; + height: 16px; + margin: 0px 2px; + *background-image: url(images/nkeditor.png); + background: url(images/nkeditor.svg) no-repeat; } + .ke-menu-black .ke-menu-item .ke-menu-item-left .ke-icon-tableinsert { + background-position: 0 -903px; + width: 18px !important; } + .ke-menu-black .ke-menu-item .ke-menu-item-left .ke-icon-tabledelete { + background-position: 0 -1428px; } + .ke-menu-black .ke-menu-item .ke-menu-item-left .ke-icon-tablecolinsertleft { + background-position: 0 -1176px; + width: 18px !important; } + .ke-menu-black .ke-menu-item .ke-menu-item-left .ke-icon-tablecolinsertright { + background-position: 0 -1323px; + width: 18px !important; } + .ke-menu-black .ke-menu-item .ke-menu-item-left .ke-icon-tablerowinsertabove { + background-position: 0 -1302px; + width: 22px !important; } + .ke-menu-black .ke-menu-item .ke-menu-item-left .ke-icon-tablerowinsertbelow { + background-position: 0 -1155px; + width: 22px !important; } + .ke-menu-black .ke-menu-item .ke-menu-item-left .ke-icon-tablecoldelete { + background-position: 0 -1239px; } + .ke-menu-black .ke-menu-item .ke-menu-item-left .ke-icon-tablerowdelete { + background-position: 0 -1260px; } + .ke-menu-black .ke-menu-item .ke-menu-item-left .ke-icon-tablecellprop { + background-position: 0 -1218px; } + .ke-menu-black .ke-menu-item .ke-menu-item-left .ke-icon-tableprop { + background-position: 0 -1134px; } + .ke-menu-black .ke-menu-item .ke-menu-item-left .ke-icon-tablecellsplit { + background-position: 0px -1088px; + width: 16px; + height: 16px; } + .ke-menu-black .ke-menu-item .ke-menu-item-left .ke-icon-tablerowmerge { + background-position: -1px -1197px; } + .ke-menu-black .ke-menu-item .ke-menu-item-left .ke-icon-tablerowsplit { + background-position: 0 -1344px; } + .ke-menu-black .ke-menu-item .ke-menu-item-left .ke-icon-tablecolmerge { + background-position: -4px -1365px; } + .ke-menu-black .ke-menu-item .ke-menu-item-left .ke-icon-tablecolsplit { + background-position: 0 -1344px; } + .ke-menu-black .ke-menu-item .ke-menu-item-left .ke-icon-image { + background-position: 0 -777px; } + .ke-menu-black .ke-menu-item .ke-menu-item-left .ke-icon-flash { + background-position: 0 -840px; } + .ke-menu-black .ke-menu-item .ke-menu-item-left .ke-icon-media { + background-position: 0 -861px; } + .ke-menu-black .ke-menu-item .ke-menu-item-left .ke-icon-link { + background-position: 0 -1008px; } + .ke-menu-black .ke-menu-item .ke-menu-item-left .ke-icon-checked { + background-position: 0 -1407px; } + +/*# sourceMappingURL=editor.css.map */ diff --git a/tools/NKeditor/themes/black/editor.css.map b/tools/NKeditor/themes/black/editor.css.map new file mode 100644 index 00000000..6d1b06d2 --- /dev/null +++ b/tools/NKeditor/themes/black/editor.css.map @@ -0,0 +1,7 @@ +{ +"version": 3, +"mappings": "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", +"sources": ["../common/common.scss","editor.scss"], +"names": [], +"file": "editor.css" +} \ No newline at end of file diff --git a/tools/NKeditor/themes/black/editor.min.css b/tools/NKeditor/themes/black/editor.min.css new file mode 100644 index 00000000..f5d26e02 --- /dev/null +++ b/tools/NKeditor/themes/black/editor.min.css @@ -0,0 +1 @@ +@charset "UTF-8";.ke-clearfix{zoom:1;clear:both}.ke-clearfix:after{content:".";display:block;clear:both;font-size:0;height:0;line-height:0;visibility:hidden}.ke-animated{animation:zoomIn;animation-duration:.3s;animation-fill-mode:both}@keyframes zoomIn{from{opacity:0;transform:scale3d(.3,.3,.3)}50%{opacity:1}}.ke-dialog-mask{background-color:#fff;opacity:.5}.ke-dialog-lock{background-color:#fff;opacity:.5;z-index:811213;left:0;top:0;position:absolute}.ke-container{display:block;background-color:#fff;overflow:hidden;margin:0;padding:0;box-shadow:0 1px 3px rgba(0,0,0,.12),0 1px 1px 1px rgba(0,0,0,.16)}.ke-container .ke-shadow{box-shadow:1px 1px 3px #a0a0a0;-moz-box-shadow:1px 1px 3px #a0a0a0;-webkit-box-shadow:1px 1px 3px #a0a0a0;background-color:#f0f0ee}.ke-container .ke-dialog a,.ke-container .ke-dialog a:hover,.ke-container .ke-menu a,.ke-container .ke-menu a:hover{color:#337fe5;text-decoration:none}.ke-container .ke-toolbar{text-align:left;overflow:hidden;zoom:1;padding:0 5px}.ke-container .ke-toolbar .ke-outline{padding:10px 5px;font-size:0;line-height:0;cursor:pointer;display:block;float:left}.ke-container .ke-toolbar .ke-outline .ke-toolbar-icon{font-size:0;line-height:0;overflow:hidden;display:block;width:16px;height:16px;margin:0 2px}.ke-container .ke-toolbar .ke-on{background:#ebebeb}.ke-container .ke-toolbar .ke-selected{background-color:#ebebeb}.ke-container .ke-toolbar .ke-disabled{cursor:default}.ke-container .ke-toolbar .ke-separator{height:16px;margin:2px 3px;border-left:1px solid #a0a0a0;border-right:1px solid #fff;border-top:0;border-bottom:0;width:0;font-size:0;line-height:0;overflow:hidden;display:block;float:left}.ke-container .ke-toolbar .ke-hr{clear:both;height:1px;width:calc(100% - (2 * 2px));background:#ebebeb}.ke-container .ke-edit{padding:0}.ke-container .ke-edit .ke-edit-iframe,.ke-container .ke-edit .ke-edit-textarea{border:0;margin:0;padding:0;overflow:auto}.ke-container .ke-edit .ke-edit-textarea{font:12px/1.5 Consolas,Monaco,"Bitstream Vera Sans Mono","Courier New",Courier,monospace;color:#000;overflow:auto;resize:none}.ke-container .ke-edit .ke-edit-textarea:focus{outline:0}.ke-container .ke-statusbar{position:relative;background-color:#f5f5f5;border-top:1px solid #e1e1e1;font-size:0;line-height:0;overflow:hidden;text-align:center;cursor:s-resize;display:none}.ke-container .ke-statusbar .ke-statusbar-center-icon{background-position:0 -754px;width:15px;height:11px}.ke-container .ke-statusbar .ke-statusbar-right-icon{position:absolute;right:0;bottom:0;cursor:se-resize;width:11px;height:11px}.ke-menu{border:1px solid #ccc;background-color:#f5f5f5;color:#222;padding:2px;font-family:"sans serif",tahoma,verdana,helvetica;font-size:12px;text-align:left;overflow:hidden}.ke-menu .ke-menu-item{border:1px solid #f1f1f1;background-color:#f1f1f1;color:#222;height:24px;overflow:hidden;cursor:pointer}.ke-menu .ke-menu-item .ke-inline-block{display:-moz-inline-stack;display:inline-block;vertical-align:middle;zoom:1}.ke-menu .ke-menu-item .ke-inline-block .ke-inline-block{display:-moz-inline-stack;display:inline-block;vertical-align:middle;zoom:1}.ke-menu .ke-menu-item .ke-menu-item-left{width:27px;text-align:center;overflow:hidden}.ke-menu .ke-menu-item .ke-menu-item-center{width:0;height:24px;border-left:1px solid #e3e3e3;border-right:1px solid #fff;border-top:0;border-bottom:0}.ke-menu .ke-menu-item .ke-menu-item-center-on{border-left:1px solid #e9eff6;border-right:1px solid #e9eff6}.ke-menu .ke-menu-item .ke-menu-item-right{border:0;padding:0 0 0 5px;line-height:24px;text-align:left;overflow:hidden}.ke-menu .ke-menu-item .ke-menu-separator{margin:2px 0;height:0;overflow:hidden;border-top:1px solid #e1e1e1;border-bottom:1px solid #fff;border-left:0;border-right:0}.ke-menu .ke-menu-item-on{border:1px solid #5690d2;background-color:#e9eff6}.ke-menu .ke-plugin-emoticons{position:relative}.ke-menu .ke-plugin-emoticons .ke-preview{position:absolute;text-align:center;margin:2px;padding:10px;top:0;border:1px solid #a0a0a0;background-color:#fff;display:none}.ke-menu .ke-plugin-emoticons .ke-preview .ke-preview-img{border:0;margin:0;padding:0}.ke-menu .ke-plugin-emoticons .ke-table{border:0;margin:0;padding:0;border-collapse:separate}.ke-menu .ke-plugin-emoticons .ke-table .ke-cell{margin:0;padding:1px;border:1px solid #f5f5f5;cursor:pointer}.ke-menu .ke-plugin-emoticons .ke-table .ke-cell .ke-img{display:block;background-repeat:no-repeat;overflow:hidden;margin:2px;width:24px;height:24px;margin:0;padding:0;border:0}.ke-menu .ke-plugin-emoticons .ke-table .ke-on{border:1px solid #5690d2;background-color:#e9eff6}.ke-menu .ke-plugin-emoticons .ke-page{text-align:right;margin:5px;padding:0;border:0;font:12px/1 "sans serif",tahoma,verdana,helvetica;color:#333;text-decoration:none}.ke-colorpicker{border:1px solid #a0a0a0;background-color:#f1f1f1;color:#222;padding:2px}.ke-colorpicker .ke-colorpicker-table{border:0;margin:0;padding:0;border-collapse:separate}.ke-colorpicker .ke-colorpicker-table .ke-colorpicker-cell{font-size:0;line-height:0;border:1px solid #f0f0ee;cursor:pointer;margin:3px;padding:0}.ke-colorpicker .ke-colorpicker-table .ke-colorpicker-cell .ke-colorpicker-cell-color{width:14px;height:14px;margin:3px;padding:0;border:0}.ke-colorpicker .ke-colorpicker-table .ke-colorpicker-cell-top{font-family:"sans serif",tahoma,verdana,helvetica;font-size:12px;line-height:24px;border:1px solid #f1f1f1;cursor:pointer;margin:0;padding:0;text-align:center}.ke-colorpicker .ke-colorpicker-table .ke-colorpicker-cell-on{border:1px solid #5690d2}.ke-colorpicker .ke-colorpicker-table .ke-colorpicker-cell-selected{border:1px solid #2446ab}.ke-dialog{margin:0;padding:0;border:1px solid #ccc;zoom:1;box-shadow:1px 1px 3px #a0a0a0;-moz-box-shadow:1px 1px 3px #a0a0a0;-webkit-box-shadow:1px 1px 3px #a0a0a0;border-radius:5px;-moz-border-radius:5px;-webkit-border-radius:5px;overflow:hidden}.ke-dialog .ke-dialog-header{border:0;margin:0;font-weight:700;font-size:14px;height:30px;line-height:30px;padding:0 10px;text-align:left;color:#222;cursor:move;border-top-left-radius:6px;border-top-right-radius:6px;border-bottom:1px solid #c6c6c6;background:transparent url(../common/dialog-title-bg.png) repeat-x scroll 0 0;position:relative;cursor:move}.ke-dialog .ke-dialog-header .ke-dialog-icon-close{height:20px;width:20px;cursor:pointer;background:url(../common/icons-all.gif) 0 -59px;position:absolute;right:5px;top:4px}.ke-dialog .ke-dialog-header .ke-dialog-icon-close:hover{background-position:0 -89px}.ke-dialog .ke-dialog-content{background-color:#fff;width:100%;height:100%;color:#333;outline:0;zoom:1}.ke-dialog .ke-dialog-content .ke-dialog-body{font:12px/1.5 "sans serif",tahoma,verdana,helvetica;text-align:left;overflow:hidden;width:100%}.ke-dialog .ke-dialog-content .ke-dialog-body .ke-textarea{display:block;width:408px;height:260px;font-family:"sans serif",tahoma,verdana,helvetica;font-size:12px;border:1px solid #ccc}.ke-dialog .ke-dialog-content .ke-dialog-body .ke-textarea:focus{border-color:#66afe9;outline:0}.ke-dialog .ke-dialog-content .ke-dialog-body .ke-select{display:-moz-inline-stack;display:inline-block;vertical-align:middle;zoom:1;width:auto;border:1px solid #ccc;height:30px}.ke-dialog .ke-dialog-content .ke-dialog-body .ke-form{margin:0;padding:0}.ke-dialog .ke-dialog-content .ke-dialog-body .ke-input-number{width:50px}.ke-dialog .ke-dialog-content .ke-dialog-body .ke-input-checkbox{position:relative;top:6px}.ke-dialog .ke-dialog-content .ke-dialog-body textarea{display:block;overflow:auto;padding:0;resize:none}.ke-dialog .ke-dialog-content .ke-dialog-body textarea:focus{outline:0}.ke-dialog .ke-dialog-content .ke-dialog-body .ke-input-text{display:inline-block!important;max-width:400px;height:30px;line-height:30px;border:1px solid #ccc;font-size:14px;margin:0;outline:0;padding:0 10px}.ke-dialog .ke-dialog-content .ke-dialog-body .ke-input-text:focus{border-color:#66afe9}.ke-dialog .ke-dialog-content .ke-dialog-body .ke-input-color{border:1px solid #e1e1e1;background-color:#fff;font-size:12px;width:60px;height:30px;line-height:30px;padding-left:5px;overflow:hidden;cursor:pointer;display:-moz-inline-stack;display:inline-block;vertical-align:middle;zoom:1}.ke-dialog .ke-dialog-content .ke-dialog-body .ke-upload-area{position:relative;overflow:hidden;margin:0;padding:0;top:-1px;position:relative}.ke-dialog .ke-dialog-content .ke-dialog-body .ke-upload-area .ke-upload-file{position:absolute;font-size:60px;top:0;right:0;padding:0;margin:0;z-index:811212;border:0 none;opacity:0;cursor:pointer;width:62px;height:30px}.ke-dialog .ke-dialog-content .ke-dialog-body .ke-upload-area .ke-button-common{top:-1px}.ke-dialog .ke-dialog-content .ke-dialog-body .ke-upload-area .ke-button{padding:8px 15px}.ke-dialog .ke-dialog-content .ke-dialog-body .ke-dialog-content-inner{padding:10px 20px 0 20px}.ke-dialog .ke-dialog-content .ke-dialog-body .ke-dialog-content-inner .ke-dialog-row{border:1px solid #fff;margin-bottom:10px;overflow:hidden}.ke-dialog .ke-dialog-content .ke-dialog-body .ke-dialog-content-inner .ke-dialog-row .row-left{float:left;height:30px;line-height:30px;width:60px;text-align:right}.ke-dialog .ke-dialog-content .ke-dialog-body .ke-dialog-content-inner .ke-dialog-row .row-right{float:left;text-align:left}.ke-dialog .ke-dialog-content .ke-dialog-body .ke-dialog-content-inner .ke-dialog-row .row-right .ke-inline-block{display:-moz-inline-stack;display:inline-block;vertical-align:middle;zoom:1}.ke-dialog .ke-dialog-content .ke-dialog-body .ke-dialog-content-inner .ke-dialog-row .row-right .ke-inline-block .ke-upload-button{position:relative;top:-1px}.ke-dialog .ke-dialog-content .ke-dialog-body .ke-dialog-content-inner .ke-dialog-row .row-right label{cursor:pointer;display:-moz-inline-stack;display:inline-block;vertical-align:middle;text-align:right;zoom:1}.ke-dialog .ke-dialog-content .ke-dialog-body .ke-dialog-content-inner .ke-dialog-row .row-right label img{display:-moz-inline-stack;display:inline-block;vertical-align:middle;zoom:1}.ke-dialog .ke-dialog-content .ke-dialog-body .ke-dialog-content-inner .ke-header{height:30px;line-height:30px}.ke-dialog .ke-dialog-content .ke-dialog-body .ke-dialog-content-inner .ke-header .ke-input-text{height:22px;line-height:22px}.ke-dialog .ke-dialog-content .ke-dialog-body .ke-dialog-content-inner .ke-header .ke-button{padding:3px 10px}.ke-dialog .ke-dialog-content .ke-dialog-body .ke-dialog-content-inner .ke-header .checkbox{margin-left:10px}.ke-dialog .ke-dialog-content .ke-dialog-body .ke-dialog-content-inner .ke-tabs{font:12px/1 "sans serif",tahoma,verdana,helvetica;border-bottom:1px solid #e1e1e1;margin-bottom:20px}.ke-dialog .ke-dialog-content .ke-dialog-body .ke-dialog-content-inner .ke-tabs .ke-tabs-ul{list-style:none outside none;margin:0;padding:0}.ke-dialog .ke-dialog-content .ke-dialog-body .ke-dialog-content-inner .ke-tabs .ke-tabs-ul .ke-tabs-li{position:relative;margin:0 2px -1px 0;padding:0 20px;float:left;line-height:25px;text-align:center;color:#337ab7;cursor:pointer}.ke-dialog .ke-dialog-content .ke-dialog-body .ke-dialog-content-inner .ke-tabs .ke-tabs-ul .ke-tabs-li-selected{background-color:#fff;border:1px solid #e1e1e1;border-bottom:1px solid #fff;color:#555;cursor:default;border-top-left-radius:3px;border-top-right-radius:3px}.ke-dialog .ke-dialog-content .ke-dialog-body .ke-dialog-content-inner .ke-tabs .ke-tabs-ul .ke-tabs-li-on{background-color:#fff;color:#000}.ke-dialog .ke-dialog-content .ke-dialog-loading{position:absolute;top:0;left:1px;z-index:1;text-align:center}.ke-dialog .ke-dialog-content .ke-dialog-loading .ke-dialog-loading-content{background:url(../common/loading.gif) no-repeat center;color:#666;font-size:14px;font-weight:700;height:31px;line-height:31px;padding-left:36px}.ke-dialog .ke-dialog-footer{font:12px/1 "sans serif",tahoma,verdana,helvetica;text-align:right;padding:0 15px 5px 0;background-color:#fff;height:40px}.ke-dialog .ke-dialog-footer .ke-dialog-yes{margin:5px}.ke-dialog .ke-dialog-footer .ke-dialog-no{margin:5px 10px 5px 5px}.ke-dialog .ke-button-common{display:inline-block;text-align:center;background:0 0;border:none;padding:0;cursor:pointer}.ke-dialog .ke-button-outer{background-position:0 -25px;padding:0;display:-moz-inline-stack;display:inline-block;vertical-align:middle;zoom:1}.ke-dialog .ke-button{color:#333;font-size:12px;border:1px solid #e6e6e6;background-color:#e6e6e6;padding:7px 10px;margin-top:-4px;color:#444;text-decoration:none;transition:background-color .3s ease-out,border-color .3s ease-out}.ke-dialog .ke-button:hover{border:1px solid #e1e1e1;background-color:#e1e1e1}.ke-dialog .ke-dialog-btn{font-size:12px;margin:5px;background:#2e8ded;color:#fff!important;padding:8px 12px;display:inline-block;border-radius:2px;cursor:pointer;text-decoration:none;transition:.3s ease-out}.ke-dialog .ke-dialog-btn:hover{box-shadow:none;box-shadow:none;opacity:.8}.ke-container-black .ke-toolbar{border-top:5px solid #222;box-shadow:0 1px 3px rgba(0,0,0,.12),0 1px 1px 1px rgba(0,0,0,.16);background-clip:padding-box;text-rendering:optimizelegibility}.ke-container-black .ke-toolbar .ke-toolbar-icon{background:url(images/nkeditor.svg) no-repeat}.ke-container-black .ke-toolbar .ke-icon-source{background-position:0 0}.ke-container-black .ke-toolbar .ke-icon-preview{background-position:0 -63px}.ke-container-black .ke-toolbar .ke-icon-print{background-position:0 -84px}.ke-container-black .ke-toolbar .ke-icon-undo{background-position:0 -21px}.ke-container-black .ke-toolbar .ke-icon-redo{background-position:0 -42px}.ke-container-black .ke-toolbar .ke-icon-template{background-position:0 -105px}.ke-container-black .ke-toolbar .ke-icon-cut{background-position:0 -147px}.ke-container-black .ke-toolbar .ke-icon-copy{background-position:0 -168px}.ke-container-black .ke-toolbar .ke-icon-paste{background-position:0 -189px}.ke-container-black .ke-toolbar .ke-icon-selectall{background-position:0 -483px}.ke-container-black .ke-toolbar .ke-icon-justifyleft{background-position:0 -252px}.ke-container-black .ke-toolbar .ke-icon-justifycenter{background-position:0 -273px}.ke-container-black .ke-toolbar .ke-icon-justifyright{background-position:0 -294px}.ke-container-black .ke-toolbar .ke-icon-justifyfull{background-position:0 -315px}.ke-container-black .ke-toolbar .ke-icon-insertorderedlist{background-position:0 -336px}.ke-container-black .ke-toolbar .ke-icon-insertunorderedlist{background-position:0 -357px}.ke-container-black .ke-toolbar .ke-icon-indent{background-position:0 -378px}.ke-container-black .ke-toolbar .ke-icon-outdent{background-position:0 -399px}.ke-container-black .ke-toolbar .ke-icon-subscript{background-position:0 -420px}.ke-container-black .ke-toolbar .ke-icon-superscript{background-position:0 -441px}.ke-container-black .ke-toolbar .ke-icon-date{background-position:0 -304px;width:25px;height:16px}.ke-container-black .ke-toolbar .ke-icon-time{background-position:0 -320px;width:25px;height:16px}.ke-container-black .ke-toolbar .ke-icon-formatblock{background-position:0 -546px}.ke-container-black .ke-toolbar .ke-icon-fontname{background-position:0 -567px}.ke-container-black .ke-toolbar .ke-icon-fontsize{background-position:0 -588px}.ke-container-black .ke-toolbar .ke-icon-forecolor{background-position:0 -609px}.ke-container-black .ke-toolbar .ke-icon-hilitecolor{background-position:0 -630px}.ke-container-black .ke-toolbar .ke-icon-bold{background-position:0 -651px}.ke-container-black .ke-toolbar .ke-icon-italic{background-position:0 -672px}.ke-container-black .ke-toolbar .ke-icon-underline{background-position:0 -693px}.ke-container-black .ke-toolbar .ke-icon-strikethrough{background-position:0 -714px}.ke-container-black .ke-toolbar .ke-icon-removeformat{background-position:0 -756px}.ke-container-black .ke-toolbar .ke-icon-image{background-position:0 -777px}.ke-container-black .ke-toolbar .ke-icon-flash{background-position:0 -840px}.ke-container-black .ke-toolbar .ke-icon-media{background-position:0 -861px}.ke-container-black .ke-toolbar .ke-icon-div{background-position:0 -544px;width:16px;height:16px}.ke-container-black .ke-toolbar .ke-icon-formula{background-position:0 -576px;width:16px;height:16px}.ke-container-black .ke-toolbar .ke-icon-hr{background-position:0 -924px}.ke-container-black .ke-toolbar .ke-icon-emoticons{background-position:0 -945px}.ke-container-black .ke-toolbar .ke-icon-link{background-position:0 -1008px}.ke-container-black .ke-toolbar .ke-icon-unlink{background-position:0 -1029px}.ke-container-black .ke-toolbar .ke-icon-fullscreen{background-position:0 -525px}.ke-container-black .ke-toolbar .ke-icon-about{background-position:0 -1092px}.ke-container-black .ke-toolbar .ke-icon-quote{background-position:0 -1114px}.ke-container-black .ke-toolbar .ke-icon-plainpaste{background-position:0 -210px}.ke-container-black .ke-toolbar .ke-icon-wordpaste{background-position:0 -231px}.ke-container-black .ke-toolbar .ke-icon-table{background-position:0 -903px;width:18px!important}.ke-container-black .ke-toolbar .ke-icon-tablemenu{background-position:0 -768px;width:16px;height:16px}.ke-container-black .ke-toolbar .ke-icon-code{background-position:0 -126px}.ke-container-black .ke-toolbar .ke-icon-map{background-position:0 -976px;width:16px;height:16px}.ke-container-black .ke-toolbar .ke-icon-baidumap{background-position:0 -1050px}.ke-container-black .ke-toolbar .ke-icon-lineheight{background-position:0 -735px}.ke-container-black .ke-toolbar .ke-icon-clearhtml{background-position:0 -462px}.ke-container-black .ke-toolbar .ke-icon-pagebreak{background-position:0 -966px}.ke-container-black .ke-toolbar .ke-icon-insertfile{background-position:0 -882px}.ke-container-black .ke-toolbar .ke-icon-quickformat{background-position:0 -504px}.ke-container-black .ke-toolbar .ke-icon-anchor{background-position:0 -987px}.ke-container-black .ke-toolbar .ke-icon-search{background-position:0 -1184px;width:16px;height:16px}.ke-container-black .ke-toolbar .ke-icon-new{background-position:0 -1200px;width:16px;height:16px}.ke-container-black .ke-toolbar .ke-icon-specialchar{background-position:0 -1216px;width:16px;height:16px}.ke-container-black .ke-toolbar .ke-icon-multiimage{background-position:0 -798px}.ke-container-black .ke-toolbar .ke-icon-graft{background-position:0 -819px}.ke-menu-black .ke-menu-item .ke-menu-item-left{width:27px;text-align:center;overflow:hidden}.ke-menu-black .ke-menu-item .ke-menu-item-left .ke-toolbar-icon{font-size:0;line-height:0;overflow:hidden;display:block;width:16px;height:16px;margin:0 2px;background:url(images/nkeditor.svg) no-repeat}.ke-menu-black .ke-menu-item .ke-menu-item-left .ke-icon-tableinsert{background-position:0 -903px;width:18px!important}.ke-menu-black .ke-menu-item .ke-menu-item-left .ke-icon-tabledelete{background-position:0 -1428px}.ke-menu-black .ke-menu-item .ke-menu-item-left .ke-icon-tablecolinsertleft{background-position:0 -1176px;width:18px!important}.ke-menu-black .ke-menu-item .ke-menu-item-left .ke-icon-tablecolinsertright{background-position:0 -1323px;width:18px!important}.ke-menu-black .ke-menu-item .ke-menu-item-left .ke-icon-tablerowinsertabove{background-position:0 -1302px;width:22px!important}.ke-menu-black .ke-menu-item .ke-menu-item-left .ke-icon-tablerowinsertbelow{background-position:0 -1155px;width:22px!important}.ke-menu-black .ke-menu-item .ke-menu-item-left .ke-icon-tablecoldelete{background-position:0 -1239px}.ke-menu-black .ke-menu-item .ke-menu-item-left .ke-icon-tablerowdelete{background-position:0 -1260px}.ke-menu-black .ke-menu-item .ke-menu-item-left .ke-icon-tablecellprop{background-position:0 -1218px}.ke-menu-black .ke-menu-item .ke-menu-item-left .ke-icon-tableprop{background-position:0 -1134px}.ke-menu-black .ke-menu-item .ke-menu-item-left .ke-icon-tablecellsplit{background-position:0 -1088px;width:16px;height:16px}.ke-menu-black .ke-menu-item .ke-menu-item-left .ke-icon-tablerowmerge{background-position:-1px -1197px}.ke-menu-black .ke-menu-item .ke-menu-item-left .ke-icon-tablerowsplit{background-position:0 -1344px}.ke-menu-black .ke-menu-item .ke-menu-item-left .ke-icon-tablecolmerge{background-position:-4px -1365px}.ke-menu-black .ke-menu-item .ke-menu-item-left .ke-icon-tablecolsplit{background-position:0 -1344px}.ke-menu-black .ke-menu-item .ke-menu-item-left .ke-icon-image{background-position:0 -777px}.ke-menu-black .ke-menu-item .ke-menu-item-left .ke-icon-flash{background-position:0 -840px}.ke-menu-black .ke-menu-item .ke-menu-item-left .ke-icon-media{background-position:0 -861px}.ke-menu-black .ke-menu-item .ke-menu-item-left .ke-icon-link{background-position:0 -1008px}.ke-menu-black .ke-menu-item .ke-menu-item-left .ke-icon-checked{background-position:0 -1407px} \ No newline at end of file diff --git a/tools/NKeditor/themes/black/editor.scss b/tools/NKeditor/themes/black/editor.scss new file mode 100644 index 00000000..3148e8c5 --- /dev/null +++ b/tools/NKeditor/themes/black/editor.scss @@ -0,0 +1,387 @@ +@import "../common/common"; + +.ke-container-black { + .ke-toolbar { + + border-top: 5px solid #222222; + box-shadow: 0 1px 3px rgba(0, 0, 0, 0.12), 0 1px 1px 1px rgba(0, 0, 0, 0.16); + background-clip: padding-box; + text-rendering: optimizelegibility; + + .ke-toolbar-icon { + *background-image: url(images/nkeditor.png); + background: url(images/nkeditor.svg) no-repeat; + } + + .ke-icon-source { + background-position: 0 0px; + } + .ke-icon-preview { + background-position: 0 -63px; + } + .ke-icon-print { + background-position: 0 -84px; + } + .ke-icon-undo { + background-position: 0 -21px; + } + + .ke-icon-redo { + background-position: 0 -42px; + } + + .ke-icon-template { + background-position: 0 -105px; + } + + .ke-icon-cut { + background-position: 0 -147px; + } + + .ke-icon-copy { + background-position: 0 -168px; + } + + .ke-icon-paste { + background-position: 0 -189px; + } + + .ke-icon-selectall { + background-position: 0 -483px; + } + + .ke-icon-justifyleft { + background-position: 0 -252px; + } + + .ke-icon-justifycenter { + background-position: 0 -273px; + } + + .ke-icon-justifyright { + background-position: 0 -294px; + } + + .ke-icon-justifyfull { + background-position: 0 -315px; + } + + .ke-icon-insertorderedlist { + background-position: 0 -336px; + } + + .ke-icon-insertunorderedlist { + background-position: 0 -357px; + } + + .ke-icon-indent { + background-position: 0 -378px; + } + + .ke-icon-outdent { + background-position: 0 -399px; + } + + .ke-icon-subscript { + background-position: 0 -420px; + } + + .ke-icon-superscript { + background-position: 0 -441px; + } + + .ke-icon-date { + background-position: 0px -304px; + width: 25px; + height: 16px; + } + + .ke-icon-time { + background-position: 0px -320px; + width: 25px; + height: 16px; + } + + .ke-icon-formatblock { + background-position: 0 -546px; + } + + .ke-icon-fontname { + background-position: 0 -567px; + } + + .ke-icon-fontsize { + background-position: 0 -588px; + } + + .ke-icon-forecolor { + background-position: 0 -609px; + } + + .ke-icon-hilitecolor { + background-position: 0 -630px; + } + + .ke-icon-bold { + background-position: 0 -651px; + } + + .ke-icon-italic { + background-position: 0 -672px; + } + + .ke-icon-underline { + background-position: 0 -693px; + } + + .ke-icon-strikethrough { + background-position: 0 -714px; + } + + .ke-icon-removeformat { + background-position: 0 -756px; + } + + .ke-icon-image { + background-position: 0 -777px; + } + + .ke-icon-flash { + background-position: 0 -840px; + } + + .ke-icon-media { + background-position: 0 -861px; + } + + .ke-icon-div { + background-position: 0px -544px; + width: 16px; + height: 16px; + } + + .ke-icon-formula { + background-position: 0px -576px; + width: 16px; + height: 16px; + } + + .ke-icon-hr { + background-position: 0 -924px; + } + + .ke-icon-emoticons { + background-position: 0 -945px; + } + + .ke-icon-link { + background-position: 0 -1008px; + } + + .ke-icon-unlink { + background-position: 0 -1029px; + } + + .ke-icon-fullscreen { + background-position: 0 -525px; + } + + .ke-icon-about { + background-position: 0 -1092px; + } + + .ke-icon-quote { + background-position: 0 -1114px; + } + + .ke-icon-plainpaste { + background-position: 0 -210px; + } + + .ke-icon-wordpaste { + background-position: 0 -231px; + } + + .ke-icon-table { + background-position: 0px -903px; + width: 18px !important; + } + + .ke-icon-tablemenu { + background-position: 0px -768px; + width: 16px; + height: 16px; + } + + .ke-icon-code { + background-position: 0 -126px; + } + + .ke-icon-map { + background-position: 0px -976px; + width: 16px; + height: 16px; + } + + .ke-icon-baidumap { + background-position: 0 -1050px; + } + + .ke-icon-lineheight { + background-position: 0 -735px; + } + + .ke-icon-clearhtml { + background-position: 0 -462px; + } + + .ke-icon-pagebreak { + background-position: 0 -966px; + } + + .ke-icon-insertfile { + background-position: 0 -882px; + } + + .ke-icon-quickformat { + background-position: 0 -504px; + } + + .ke-icon-anchor { + background-position: 0 -987px; + } + + .ke-icon-search { + background-position: 0px -1184px; + width: 16px; + height: 16px; + } + + .ke-icon-new { + background-position: 0px -1200px; + width: 16px; + height: 16px; + } + + .ke-icon-specialchar { + background-position: 0px -1216px; + width: 16px; + height: 16px; + } + + .ke-icon-multiimage { + background-position: 0 -798px; + } + + .ke-icon-graft { + background-position: 0 -819px; + } + } +} + +/** + menu 右键菜单 + */ +.ke-menu-black { + + .ke-menu-item { + + .ke-menu-item-left { + width: 27px; + text-align: center; + overflow: hidden; + + .ke-toolbar-icon { + @include ke-toolbar-icon; + *background-image: url(images/nkeditor.png); + background: url(images/nkeditor.svg) no-repeat; + } + + .ke-icon-tableinsert { + background-position: 0 -903px; + width: 18px !important; + } + + .ke-icon-tabledelete { + background-position: 0 -1428px; + } + + .ke-icon-tablecolinsertleft { + background-position: 0 -1176px; + width: 18px !important; + } + + .ke-icon-tablecolinsertright { + background-position: 0 -1323px; + width: 18px !important; + } + + .ke-icon-tablerowinsertabove { + background-position: 0 -1302px; + width: 22px !important; + } + + .ke-icon-tablerowinsertbelow { + background-position: 0 -1155px; + width: 22px !important; + } + + .ke-icon-tablecoldelete { + background-position: 0 -1239px; + } + + .ke-icon-tablerowdelete { + background-position: 0 -1260px; + } + + .ke-icon-tablecellprop { + background-position: 0 -1218px; + } + + .ke-icon-tableprop { + background-position: 0 -1134px; + } + .ke-icon-tablecellsplit { + background-position: 0px -1088px; + width: 16px; + height: 16px; + } + + .ke-icon-tablerowmerge { + background-position: -1px -1197px; + } + + .ke-icon-tablerowsplit { + background-position: 0 -1344px; + } + + .ke-icon-tablecolmerge { + background-position: -4px -1365px; + } + + .ke-icon-tablecolsplit { + background-position: 0 -1344px; + } + + //图片,视频右键菜单 + .ke-icon-image { + background-position: 0 -777px; + } + .ke-icon-flash { + background-position: 0 -840px; + } + .ke-icon-media { + background-position: 0 -861px; + } + .ke-icon-link { + background-position: 0 -1008px; + } + + .ke-icon-checked { + background-position: 0 -1407px; + } + + } + } +} +//menu end \ No newline at end of file diff --git a/tools/NKeditor/themes/black/images/nkeditor.png b/tools/NKeditor/themes/black/images/nkeditor.png new file mode 100644 index 00000000..f3fbea2d Binary files /dev/null and b/tools/NKeditor/themes/black/images/nkeditor.png differ diff --git a/tools/NKeditor/themes/black/images/nkeditor.svg b/tools/NKeditor/themes/black/images/nkeditor.svg new file mode 100644 index 00000000..56416dd0 --- /dev/null +++ b/tools/NKeditor/themes/black/images/nkeditor.svg @@ -0,0 +1,260 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tools/NKeditor/themes/blue/editor.css b/tools/NKeditor/themes/blue/editor.css new file mode 100644 index 00000000..7a14292c --- /dev/null +++ b/tools/NKeditor/themes/blue/editor.css @@ -0,0 +1,822 @@ +@charset "UTF-8"; +/** +公共样式 +*/ +.ke-clearfix { + zoom: 1; + clear: both; } + +.ke-clearfix:after { + content: "."; + display: block; + clear: both; + font-size: 0; + height: 0; + line-height: 0; + visibility: hidden; } + +.ke-animated { + animation: zoomIn; + animation-duration: 0.3s; + animation-fill-mode: both; } + +@keyframes zoomIn { + from { + opacity: 0; + transform: scale3d(0.3, 0.3, 0.3); } + 50% { + opacity: 1; } } +.ke-dialog-mask { + background-color: #FFF; + filter: alpha(opacity=50); + opacity: 0.5; } + +.ke-dialog-lock { + background-color: #FFF; + filter: alpha(opacity=50); + opacity: 0.5; + z-index: 811213; + left: 0; + top: 0; + position: absolute; } + +/** +编辑器样式开始 + */ +.ke-container { + display: block; + background-color: #FFF; + overflow: hidden; + margin: 0; + padding: 0; + box-shadow: 0 1px 3px rgba(0, 0, 0, 0.12), 0 1px 1px 1px rgba(0, 0, 0, 0.16); + /** + 通用样式 + */ + /** + toolbar 样式 + */ + /** + ke-edit + */ + /** + statusbar start + */ } + .ke-container .ke-shadow { + box-shadow: 1px 1px 3px #A0A0A0; + -moz-box-shadow: 1px 1px 3px #A0A0A0; + -webkit-box-shadow: 1px 1px 3px #A0A0A0; + filter: progid:DXImageTransform.Microsoft.Shadow(color='#A0A0A0', Direction=135, Strength=3); + background-color: #F0F0EE; } + .ke-container .ke-menu a, + .ke-container .ke-menu a:hover, + .ke-container .ke-dialog a, + .ke-container .ke-dialog a:hover { + color: #337FE5; + text-decoration: none; } + .ke-container .ke-toolbar { + text-align: left; + overflow: hidden; + zoom: 1; + padding: 0px 5px; } + .ke-container .ke-toolbar .ke-outline { + padding: 10px 5px; + font-size: 0; + line-height: 0; + cursor: pointer; + display: block; + float: left; + /** + * 按钮通用样式 + */ } + .ke-container .ke-toolbar .ke-outline .ke-toolbar-icon { + font-size: 0; + line-height: 0; + overflow: hidden; + display: block; + width: 16px; + height: 16px; + margin: 0px 2px; } + .ke-container .ke-toolbar .ke-on { + background: #ebebeb; } + .ke-container .ke-toolbar .ke-selected { + background-color: #ebebeb; } + .ke-container .ke-toolbar .ke-disabled { + cursor: default; } + .ke-container .ke-toolbar .ke-separator { + height: 16px; + margin: 2px 3px; + border-left: 1px solid #A0A0A0; + border-right: 1px solid #FFFFFF; + border-top: 0; + border-bottom: 0; + width: 0; + font-size: 0; + line-height: 0; + overflow: hidden; + display: block; + float: left; } + .ke-container .ke-toolbar .ke-hr { + clear: both; + height: 1px; + width: calc(100% - (2 * 2px)); + background: #ebebeb; } + .ke-container .ke-edit { + padding: 0; } + .ke-container .ke-edit .ke-edit-iframe, + .ke-container .ke-edit .ke-edit-textarea { + border: 0; + margin: 0; + padding: 0; + overflow: auto; } + .ke-container .ke-edit .ke-edit-textarea { + font: 12px/1.5 "Consolas", "Monaco", "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; + color: #000; + overflow: auto; + resize: none; } + .ke-container .ke-edit .ke-edit-textarea:focus { + outline: none; } + .ke-container .ke-statusbar { + position: relative; + background-color: #f5f5f5; + border-top: 1px solid #e1e1e1; + font-size: 0; + line-height: 0; + *height: 12px; + overflow: hidden; + text-align: center; + cursor: s-resize; + display: none; } + .ke-container .ke-statusbar .ke-statusbar-center-icon { + background-position: -0px -754px; + width: 15px; + height: 11px; } + .ke-container .ke-statusbar .ke-statusbar-right-icon { + position: absolute; + right: 0; + bottom: 0; + cursor: se-resize; + width: 11px; + height: 11px; } + +/** + menu 右键菜单 + */ +.ke-menu { + border: 1px solid #cccccc; + background-color: #f5f5f5; + color: #222222; + padding: 2px; + font-family: "sans serif", tahoma, verdana, helvetica; + font-size: 12px; + text-align: left; + overflow: hidden; + /** + 表情插件 + */ } + .ke-menu .ke-menu-item { + border: 1px solid #F1F1F1; + background-color: #F1F1F1; + color: #222222; + height: 24px; + overflow: hidden; + cursor: pointer; } + .ke-menu .ke-menu-item .ke-inline-block { + display: -moz-inline-stack; + display: inline-block; + vertical-align: middle; + zoom: 1; + *display: inline; } + .ke-menu .ke-menu-item .ke-inline-block .ke-inline-block { + display: -moz-inline-stack; + display: inline-block; + vertical-align: middle; + zoom: 1; + *display: inline; } + .ke-menu .ke-menu-item .ke-menu-item-left { + width: 27px; + text-align: center; + overflow: hidden; } + .ke-menu .ke-menu-item .ke-menu-item-center { + width: 0; + height: 24px; + border-left: 1px solid #E3E3E3; + border-right: 1px solid #FFFFFF; + border-top: 0; + border-bottom: 0; } + .ke-menu .ke-menu-item .ke-menu-item-center-on { + border-left: 1px solid #E9EFF6; + border-right: 1px solid #E9EFF6; } + .ke-menu .ke-menu-item .ke-menu-item-right { + border: 0; + padding: 0 0 0 5px; + line-height: 24px; + text-align: left; + overflow: hidden; } + .ke-menu .ke-menu-item .ke-menu-separator { + margin: 2px 0; + height: 0; + overflow: hidden; + border-top: 1px solid #e1e1e1; + border-bottom: 1px solid #FFFFFF; + border-left: 0; + border-right: 0; } + .ke-menu .ke-menu-item-on { + border: 1px solid #5690D2; + background-color: #E9EFF6; } + .ke-menu .ke-plugin-emoticons { + position: relative; } + .ke-menu .ke-plugin-emoticons .ke-preview { + position: absolute; + text-align: center; + margin: 2px; + padding: 10px; + top: 0; + border: 1px solid #A0A0A0; + background-color: #FFFFFF; + display: none; } + .ke-menu .ke-plugin-emoticons .ke-preview .ke-preview-img { + border: 0; + margin: 0; + padding: 0; } + .ke-menu .ke-plugin-emoticons .ke-table { + border: 0; + margin: 0; + padding: 0; + border-collapse: separate; } + .ke-menu .ke-plugin-emoticons .ke-table .ke-cell { + margin: 0; + padding: 1px; + border: 1px solid #f5f5f5; + cursor: pointer; } + .ke-menu .ke-plugin-emoticons .ke-table .ke-cell .ke-img { + display: block; + background-repeat: no-repeat; + overflow: hidden; + margin: 2px; + width: 24px; + height: 24px; + margin: 0; + padding: 0; + border: 0; } + .ke-menu .ke-plugin-emoticons .ke-table .ke-on { + border: 1px solid #5690D2; + background-color: #E9EFF6; } + .ke-menu .ke-plugin-emoticons .ke-page { + text-align: right; + margin: 5px; + padding: 0; + border: 0; + font: 12px/1 "sans serif", tahoma, verdana, helvetica; + color: #333; + text-decoration: none; } + +/** + colorpicker + */ +.ke-colorpicker { + border: 1px solid #A0A0A0; + background-color: #F1F1F1; + color: #222222; + padding: 2px; } + .ke-colorpicker .ke-colorpicker-table { + border: 0; + margin: 0; + padding: 0; + border-collapse: separate; } + .ke-colorpicker .ke-colorpicker-table .ke-colorpicker-cell { + font-size: 0; + line-height: 0; + border: 1px solid #F0F0EE; + cursor: pointer; + margin: 3px; + padding: 0; } + .ke-colorpicker .ke-colorpicker-table .ke-colorpicker-cell .ke-colorpicker-cell-color { + width: 14px; + height: 14px; + margin: 3px; + padding: 0; + border: 0; } + .ke-colorpicker .ke-colorpicker-table .ke-colorpicker-cell-top { + font-family: "sans serif", tahoma, verdana, helvetica; + font-size: 12px; + line-height: 24px; + border: 1px solid #F1F1F1; + cursor: pointer; + margin: 0; + padding: 0; + text-align: center; } + .ke-colorpicker .ke-colorpicker-table .ke-colorpicker-cell-on { + border: 1px solid #5690D2; } + .ke-colorpicker .ke-colorpicker-table .ke-colorpicker-cell-selected { + border: 1px solid #2446AB; } + +/** + dialog + */ +.ke-dialog { + margin: 0; + padding: 0; + border: 1px solid #cccccc; + zoom: 1; + box-shadow: 1px 1px 3px #A0A0A0; + -moz-box-shadow: 1px 1px 3px #A0A0A0; + -webkit-box-shadow: 1px 1px 3px #A0A0A0; + filter: progid:DXImageTransform.Microsoft.Shadow(color='#A0A0A0', Direction=135, Strength=3); + border-radius: 5px; + -moz-border-radius: 5px; + -webkit-border-radius: 5px; + overflow: hidden; } + .ke-dialog .ke-dialog-header { + border: 0; + margin: 0; + font-weight: bold; + font-size: 14px; + height: 30px; + line-height: 30px; + padding: 0px 10px; + text-align: left; + color: #222; + cursor: move; + border-top-left-radius: 6px; + border-top-right-radius: 6px; + border-bottom: 1px solid #c6c6c6; + background: transparent url(../common/dialog-title-bg.png) repeat-x scroll 0 0; + position: relative; + cursor: move; } + .ke-dialog .ke-dialog-header .ke-dialog-icon-close { + height: 20px; + width: 20px; + cursor: pointer; + background: url("../common/icons-all.gif") 0 -59px; + position: absolute; + right: 5px; + top: 4px; } + .ke-dialog .ke-dialog-header .ke-dialog-icon-close:hover { + background-position: 0px -89px; } + .ke-dialog .ke-dialog-content { + background-color: #FFF; + width: 100%; + height: 100%; + color: #333; + outline: 0; + zoom: 1; } + .ke-dialog .ke-dialog-content .ke-dialog-body { + font: 12px/1.5 "sans serif", tahoma, verdana, helvetica; + text-align: left; + overflow: hidden; + width: 100%; } + .ke-dialog .ke-dialog-content .ke-dialog-body .ke-textarea { + display: block; + width: 408px; + height: 260px; + font-family: "sans serif", tahoma, verdana, helvetica; + font-size: 12px; + border: 1px solid #cccccc; } + .ke-dialog .ke-dialog-content .ke-dialog-body .ke-textarea:focus { + border-color: #66afe9; + outline: none; } + .ke-dialog .ke-dialog-content .ke-dialog-body .ke-select { + display: -moz-inline-stack; + display: inline-block; + vertical-align: middle; + zoom: 1; + *display: inline; + width: auto; + border: 1px solid #cccccc; + height: 30px; } + .ke-dialog .ke-dialog-content .ke-dialog-body .ke-form { + margin: 0; + padding: 0; } + .ke-dialog .ke-dialog-content .ke-dialog-body .ke-input-number { + width: 50px; } + .ke-dialog .ke-dialog-content .ke-dialog-body .ke-input-checkbox { + position: relative; + top: 6px; } + .ke-dialog .ke-dialog-content .ke-dialog-body textarea { + display: block; + overflow: auto; + padding: 0; + resize: none; } + .ke-dialog .ke-dialog-content .ke-dialog-body textarea:focus { + outline: none; } + .ke-dialog .ke-dialog-content .ke-dialog-body .ke-input-text { + display: inline-block !important; + max-width: 400px; + height: 30px; + line-height: 30px; + border: 1px solid #cccccc; + font-size: 14px; + margin: 0; + outline: 0; + padding: 0px 10px; + *display: inline; } + .ke-dialog .ke-dialog-content .ke-dialog-body .ke-input-text:focus { + border-color: #66afe9; } + .ke-dialog .ke-dialog-content .ke-dialog-body .ke-input-color { + border: 1px solid #e1e1e1; + background-color: #FFFFFF; + font-size: 12px; + width: 60px; + height: 30px; + line-height: 30px; + padding-left: 5px; + overflow: hidden; + cursor: pointer; + display: -moz-inline-stack; + display: inline-block; + vertical-align: middle; + zoom: 1; + *display: inline; } + .ke-dialog .ke-dialog-content .ke-dialog-body .ke-upload-area { + position: relative; + overflow: hidden; + margin: 0; + padding: 0; + top: -1px; + position: relative; + *height: 25px; } + .ke-dialog .ke-dialog-content .ke-dialog-body .ke-upload-area .ke-upload-file { + position: absolute; + font-size: 60px; + top: 0; + right: 0; + padding: 0; + margin: 0; + z-index: 811212; + border: 0 none; + opacity: 0; + cursor: pointer; + width: 62px; + height: 30px; + filter: alpha(opacity=0); } + .ke-dialog .ke-dialog-content .ke-dialog-body .ke-upload-area .ke-button-common { + top: -1px; } + .ke-dialog .ke-dialog-content .ke-dialog-body .ke-upload-area .ke-button { + padding: 8px 15px; } + .ke-dialog .ke-dialog-content .ke-dialog-body .ke-dialog-content-inner { + padding: 10px 20px 0px 20px; + /** + tabs + */ } + .ke-dialog .ke-dialog-content .ke-dialog-body .ke-dialog-content-inner .ke-dialog-row { + border: 1px solid #FFFFFF; + margin-bottom: 10px; + overflow: hidden; } + .ke-dialog .ke-dialog-content .ke-dialog-body .ke-dialog-content-inner .ke-dialog-row .row-left { + float: left; + height: 30px; + line-height: 30px; + width: 60px; + text-align: right; } + .ke-dialog .ke-dialog-content .ke-dialog-body .ke-dialog-content-inner .ke-dialog-row .row-right { + float: left; + text-align: left; } + .ke-dialog .ke-dialog-content .ke-dialog-body .ke-dialog-content-inner .ke-dialog-row .row-right .ke-inline-block { + display: -moz-inline-stack; + display: inline-block; + vertical-align: middle; + zoom: 1; + *display: inline; } + .ke-dialog .ke-dialog-content .ke-dialog-body .ke-dialog-content-inner .ke-dialog-row .row-right .ke-inline-block .ke-upload-button { + position: relative; + top: -1px; } + .ke-dialog .ke-dialog-content .ke-dialog-body .ke-dialog-content-inner .ke-dialog-row .row-right label { + cursor: pointer; + display: -moz-inline-stack; + display: inline-block; + vertical-align: middle; + text-align: right; + zoom: 1; + *display: inline; } + .ke-dialog .ke-dialog-content .ke-dialog-body .ke-dialog-content-inner .ke-dialog-row .row-right label img { + display: -moz-inline-stack; + display: inline-block; + vertical-align: middle; + zoom: 1; + *display: inline; } + .ke-dialog .ke-dialog-content .ke-dialog-body .ke-dialog-content-inner .ke-header { + height: 30px; + line-height: 30px; } + .ke-dialog .ke-dialog-content .ke-dialog-body .ke-dialog-content-inner .ke-header .ke-input-text { + height: 22px; + line-height: 22px; } + .ke-dialog .ke-dialog-content .ke-dialog-body .ke-dialog-content-inner .ke-header .ke-button { + padding: 3px 10px; } + .ke-dialog .ke-dialog-content .ke-dialog-body .ke-dialog-content-inner .ke-header .checkbox { + margin-left: 10px; } + .ke-dialog .ke-dialog-content .ke-dialog-body .ke-dialog-content-inner .ke-tabs { + font: 12px/1 "sans serif", tahoma, verdana, helvetica; + border-bottom: 1px solid #e1e1e1; + margin-bottom: 20px; } + .ke-dialog .ke-dialog-content .ke-dialog-body .ke-dialog-content-inner .ke-tabs .ke-tabs-ul { + list-style: none outside none; + margin: 0; + padding: 0; } + .ke-dialog .ke-dialog-content .ke-dialog-body .ke-dialog-content-inner .ke-tabs .ke-tabs-ul .ke-tabs-li { + position: relative; + margin: 0 2px -1px 0; + padding: 0 20px; + float: left; + line-height: 25px; + text-align: center; + color: #337ab7; + cursor: pointer; } + .ke-dialog .ke-dialog-content .ke-dialog-body .ke-dialog-content-inner .ke-tabs .ke-tabs-ul .ke-tabs-li-selected { + background-color: #FFF; + border: 1px solid #e1e1e1; + border-bottom: 1px solid #FFF; + color: #555555; + cursor: default; + border-top-left-radius: 3px; + border-top-right-radius: 3px; } + .ke-dialog .ke-dialog-content .ke-dialog-body .ke-dialog-content-inner .ke-tabs .ke-tabs-ul .ke-tabs-li-on { + background-color: #FFF; + color: #000; } + .ke-dialog .ke-dialog-content .ke-dialog-loading { + position: absolute; + top: 0; + left: 1px; + z-index: 1; + text-align: center; } + .ke-dialog .ke-dialog-content .ke-dialog-loading .ke-dialog-loading-content { + background: url("../common/loading.gif") no-repeat center; + color: #666; + font-size: 14px; + font-weight: bold; + height: 31px; + line-height: 31px; + padding-left: 36px; } + .ke-dialog .ke-dialog-footer { + font: 12px/1 "sans serif", tahoma, verdana, helvetica; + text-align: right; + padding: 0 15px 5px 0; + background-color: #FFF; + height: 40px; } + .ke-dialog .ke-dialog-footer .ke-dialog-yes { + margin: 5px; } + .ke-dialog .ke-dialog-footer .ke-dialog-no { + margin: 5px 10px 5px 5px; } + .ke-dialog .ke-button-common { + display: inline-block; + text-align: center; + background: none; + border: none; + padding: 0; + cursor: pointer; } + .ke-dialog .ke-button-outer { + background-position: 0 -25px; + padding: 0; + display: -moz-inline-stack; + display: inline-block; + vertical-align: middle; + zoom: 1; + *display: inline; } + .ke-dialog .ke-button { + color: #333; + font-size: 12px; + border: 1px solid #e6e6e6; + background-color: #e6e6e6; + padding: 7px 10px; + margin-top: -4px; + color: #444; + text-decoration: none; + transition: background-color .3s ease-out, border-color .3s ease-out; } + .ke-dialog .ke-button:hover { + border: 1px solid #e1e1e1; + background-color: #e1e1e1; } + .ke-dialog .ke-dialog-btn { + font-size: 12px; + margin: 5px; + background: #2e8ded; + color: #fff !important; + padding: 8px 12px; + display: inline-block; + border-radius: 2px; + cursor: pointer; + text-decoration: none; + transition: .3s ease-out; } + .ke-dialog .ke-dialog-btn:hover { + filter: alpha(opacity=80); + box-shadow: none; + box-shadow: none; + opacity: .8; } + +.ke-container-blue .ke-toolbar { + border-top: 5px solid #1296db; + box-shadow: 0 1px 3px rgba(0, 0, 0, 0.12), 0 1px 1px 1px rgba(0, 0, 0, 0.16); + background-clip: padding-box; + text-rendering: optimizelegibility; } + .ke-container-blue .ke-toolbar .ke-toolbar-icon { + *background-image: url(images/nkeditor.png); + background: url(images/nkeditor.svg) no-repeat; } + .ke-container-blue .ke-toolbar .ke-icon-source { + background-position: 0 0px; } + .ke-container-blue .ke-toolbar .ke-icon-preview { + background-position: 0 -63px; } + .ke-container-blue .ke-toolbar .ke-icon-print { + background-position: 0 -84px; } + .ke-container-blue .ke-toolbar .ke-icon-undo { + background-position: 0 -21px; } + .ke-container-blue .ke-toolbar .ke-icon-redo { + background-position: 0 -42px; } + .ke-container-blue .ke-toolbar .ke-icon-template { + background-position: 0 -105px; } + .ke-container-blue .ke-toolbar .ke-icon-cut { + background-position: 0 -147px; } + .ke-container-blue .ke-toolbar .ke-icon-copy { + background-position: 0 -168px; } + .ke-container-blue .ke-toolbar .ke-icon-paste { + background-position: 0 -189px; } + .ke-container-blue .ke-toolbar .ke-icon-selectall { + background-position: 0 -483px; } + .ke-container-blue .ke-toolbar .ke-icon-justifyleft { + background-position: 0 -252px; } + .ke-container-blue .ke-toolbar .ke-icon-justifycenter { + background-position: 0 -273px; } + .ke-container-blue .ke-toolbar .ke-icon-justifyright { + background-position: 0 -294px; } + .ke-container-blue .ke-toolbar .ke-icon-justifyfull { + background-position: 0 -315px; } + .ke-container-blue .ke-toolbar .ke-icon-insertorderedlist { + background-position: 0 -336px; } + .ke-container-blue .ke-toolbar .ke-icon-insertunorderedlist { + background-position: 0 -357px; } + .ke-container-blue .ke-toolbar .ke-icon-indent { + background-position: 0 -378px; } + .ke-container-blue .ke-toolbar .ke-icon-outdent { + background-position: 0 -399px; } + .ke-container-blue .ke-toolbar .ke-icon-subscript { + background-position: 0 -420px; } + .ke-container-blue .ke-toolbar .ke-icon-superscript { + background-position: 0 -441px; } + .ke-container-blue .ke-toolbar .ke-icon-date { + background-position: 0px -304px; + width: 25px; + height: 16px; } + .ke-container-blue .ke-toolbar .ke-icon-time { + background-position: 0px -320px; + width: 25px; + height: 16px; } + .ke-container-blue .ke-toolbar .ke-icon-formatblock { + background-position: 0 -546px; } + .ke-container-blue .ke-toolbar .ke-icon-fontname { + background-position: 0 -567px; } + .ke-container-blue .ke-toolbar .ke-icon-fontsize { + background-position: 0 -588px; } + .ke-container-blue .ke-toolbar .ke-icon-forecolor { + background-position: 0 -609px; } + .ke-container-blue .ke-toolbar .ke-icon-hilitecolor { + background-position: 0 -630px; } + .ke-container-blue .ke-toolbar .ke-icon-bold { + background-position: 0 -651px; } + .ke-container-blue .ke-toolbar .ke-icon-italic { + background-position: 0 -672px; } + .ke-container-blue .ke-toolbar .ke-icon-underline { + background-position: 0 -693px; } + .ke-container-blue .ke-toolbar .ke-icon-strikethrough { + background-position: 0 -714px; } + .ke-container-blue .ke-toolbar .ke-icon-removeformat { + background-position: 0 -756px; } + .ke-container-blue .ke-toolbar .ke-icon-image { + background-position: 0 -777px; } + .ke-container-blue .ke-toolbar .ke-icon-flash { + background-position: 0 -840px; } + .ke-container-blue .ke-toolbar .ke-icon-media { + background-position: 0 -861px; } + .ke-container-blue .ke-toolbar .ke-icon-div { + background-position: 0px -544px; + width: 16px; + height: 16px; } + .ke-container-blue .ke-toolbar .ke-icon-formula { + background-position: 0px -576px; + width: 16px; + height: 16px; } + .ke-container-blue .ke-toolbar .ke-icon-hr { + background-position: 0 -924px; } + .ke-container-blue .ke-toolbar .ke-icon-emoticons { + background-position: 0 -945px; } + .ke-container-blue .ke-toolbar .ke-icon-link { + background-position: 0 -1008px; } + .ke-container-blue .ke-toolbar .ke-icon-unlink { + background-position: 0 -1029px; } + .ke-container-blue .ke-toolbar .ke-icon-fullscreen { + background-position: 0 -525px; } + .ke-container-blue .ke-toolbar .ke-icon-about { + background-position: 0 -1092px; } + .ke-container-blue .ke-toolbar .ke-icon-quote { + background-position: 0 -1114px; } + .ke-container-blue .ke-toolbar .ke-icon-plainpaste { + background-position: 0 -210px; } + .ke-container-blue .ke-toolbar .ke-icon-wordpaste { + background-position: 0 -231px; } + .ke-container-blue .ke-toolbar .ke-icon-table { + background-position: 0px -903px; + width: 18px !important; } + .ke-container-blue .ke-toolbar .ke-icon-tablemenu { + background-position: 0px -768px; + width: 16px; + height: 16px; } + .ke-container-blue .ke-toolbar .ke-icon-code { + background-position: 0 -126px; } + .ke-container-blue .ke-toolbar .ke-icon-map { + background-position: 0px -976px; + width: 16px; + height: 16px; } + .ke-container-blue .ke-toolbar .ke-icon-baidumap { + background-position: 0 -1050px; } + .ke-container-blue .ke-toolbar .ke-icon-lineheight { + background-position: 0 -735px; } + .ke-container-blue .ke-toolbar .ke-icon-clearhtml { + background-position: 0 -462px; } + .ke-container-blue .ke-toolbar .ke-icon-pagebreak { + background-position: 0 -966px; } + .ke-container-blue .ke-toolbar .ke-icon-insertfile { + background-position: 0 -882px; } + .ke-container-blue .ke-toolbar .ke-icon-quickformat { + background-position: 0 -504px; } + .ke-container-blue .ke-toolbar .ke-icon-anchor { + background-position: 0 -987px; } + .ke-container-blue .ke-toolbar .ke-icon-search { + background-position: 0px -1184px; + width: 16px; + height: 16px; } + .ke-container-blue .ke-toolbar .ke-icon-new { + background-position: 0px -1200px; + width: 16px; + height: 16px; } + .ke-container-blue .ke-toolbar .ke-icon-specialchar { + background-position: 0px -1216px; + width: 16px; + height: 16px; } + .ke-container-blue .ke-toolbar .ke-icon-multiimage { + background-position: 0 -798px; } + .ke-container-blue .ke-toolbar .ke-icon-graft { + background-position: 0 -819px; } + +/** + menu 右键菜单 + */ +.ke-menu-blue .ke-menu-item .ke-menu-item-left { + width: 27px; + text-align: center; + overflow: hidden; } + .ke-menu-blue .ke-menu-item .ke-menu-item-left .ke-toolbar-icon { + font-size: 0; + line-height: 0; + overflow: hidden; + display: block; + width: 16px; + height: 16px; + margin: 0px 2px; + *background-image: url(images/nkeditor.png); + background: url(images/nkeditor.svg) no-repeat; } + .ke-menu-blue .ke-menu-item .ke-menu-item-left .ke-icon-tableinsert { + background-position: 0 -903px; + width: 18px !important; } + .ke-menu-blue .ke-menu-item .ke-menu-item-left .ke-icon-tabledelete { + background-position: 0 -1428px; } + .ke-menu-blue .ke-menu-item .ke-menu-item-left .ke-icon-tablecolinsertleft { + background-position: 0 -1176px; + width: 18px !important; } + .ke-menu-blue .ke-menu-item .ke-menu-item-left .ke-icon-tablecolinsertright { + background-position: 0 -1323px; + width: 18px !important; } + .ke-menu-blue .ke-menu-item .ke-menu-item-left .ke-icon-tablerowinsertabove { + background-position: 0 -1302px; + width: 22px !important; } + .ke-menu-blue .ke-menu-item .ke-menu-item-left .ke-icon-tablerowinsertbelow { + background-position: 0 -1155px; + width: 22px !important; } + .ke-menu-blue .ke-menu-item .ke-menu-item-left .ke-icon-tablecoldelete { + background-position: 0 -1239px; } + .ke-menu-blue .ke-menu-item .ke-menu-item-left .ke-icon-tablerowdelete { + background-position: 0 -1260px; } + .ke-menu-blue .ke-menu-item .ke-menu-item-left .ke-icon-tablecellprop { + background-position: 0 -1218px; } + .ke-menu-blue .ke-menu-item .ke-menu-item-left .ke-icon-tableprop { + background-position: 0 -1134px; } + .ke-menu-blue .ke-menu-item .ke-menu-item-left .ke-icon-tablecellsplit { + background-position: 0px -1088px; + width: 16px; + height: 16px; } + .ke-menu-blue .ke-menu-item .ke-menu-item-left .ke-icon-tablerowmerge { + background-position: -1px -1197px; } + .ke-menu-blue .ke-menu-item .ke-menu-item-left .ke-icon-tablerowsplit { + background-position: 0 -1344px; } + .ke-menu-blue .ke-menu-item .ke-menu-item-left .ke-icon-tablecolmerge { + background-position: -4px -1365px; } + .ke-menu-blue .ke-menu-item .ke-menu-item-left .ke-icon-tablecolsplit { + background-position: 0 -1344px; } + .ke-menu-blue .ke-menu-item .ke-menu-item-left .ke-icon-image { + background-position: 0 -777px; } + .ke-menu-blue .ke-menu-item .ke-menu-item-left .ke-icon-flash { + background-position: 0 -840px; } + .ke-menu-blue .ke-menu-item .ke-menu-item-left .ke-icon-media { + background-position: 0 -861px; } + .ke-menu-blue .ke-menu-item .ke-menu-item-left .ke-icon-link { + background-position: 0 -1008px; } + .ke-menu-blue .ke-menu-item .ke-menu-item-left .ke-icon-checked { + background-position: 0 -1407px; } + +/*# sourceMappingURL=editor.css.map */ diff --git a/tools/NKeditor/themes/blue/editor.css.map b/tools/NKeditor/themes/blue/editor.css.map new file mode 100644 index 00000000..01a6d6f6 --- /dev/null +++ b/tools/NKeditor/themes/blue/editor.css.map @@ -0,0 +1,7 @@ +{ +"version": 3, +"mappings": "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", +"sources": ["../common/common.scss","editor.scss"], +"names": [], +"file": "editor.css" +} \ No newline at end of file diff --git a/tools/NKeditor/themes/blue/editor.min.css b/tools/NKeditor/themes/blue/editor.min.css new file mode 100644 index 00000000..5297fab8 --- /dev/null +++ b/tools/NKeditor/themes/blue/editor.min.css @@ -0,0 +1 @@ +@charset "UTF-8";.ke-clearfix{zoom:1;clear:both}.ke-clearfix:after{content:".";display:block;clear:both;font-size:0;height:0;line-height:0;visibility:hidden}.ke-animated{animation:zoomIn;animation-duration:.3s;animation-fill-mode:both}@keyframes zoomIn{from{opacity:0;transform:scale3d(.3,.3,.3)}50%{opacity:1}}.ke-dialog-mask{background-color:#fff;opacity:.5}.ke-dialog-lock{background-color:#fff;opacity:.5;z-index:811213;left:0;top:0;position:absolute}.ke-container{display:block;background-color:#fff;overflow:hidden;margin:0;padding:0;box-shadow:0 1px 3px rgba(0,0,0,.12),0 1px 1px 1px rgba(0,0,0,.16)}.ke-container .ke-shadow{box-shadow:1px 1px 3px #a0a0a0;-moz-box-shadow:1px 1px 3px #a0a0a0;-webkit-box-shadow:1px 1px 3px #a0a0a0;background-color:#f0f0ee}.ke-container .ke-dialog a,.ke-container .ke-dialog a:hover,.ke-container .ke-menu a,.ke-container .ke-menu a:hover{color:#337fe5;text-decoration:none}.ke-container .ke-toolbar{text-align:left;overflow:hidden;zoom:1;padding:0 5px}.ke-container .ke-toolbar .ke-outline{padding:10px 5px;font-size:0;line-height:0;cursor:pointer;display:block;float:left}.ke-container .ke-toolbar .ke-outline .ke-toolbar-icon{font-size:0;line-height:0;overflow:hidden;display:block;width:16px;height:16px;margin:0 2px}.ke-container .ke-toolbar .ke-on{background:#ebebeb}.ke-container .ke-toolbar .ke-selected{background-color:#ebebeb}.ke-container .ke-toolbar .ke-disabled{cursor:default}.ke-container .ke-toolbar .ke-separator{height:16px;margin:2px 3px;border-left:1px solid #a0a0a0;border-right:1px solid #fff;border-top:0;border-bottom:0;width:0;font-size:0;line-height:0;overflow:hidden;display:block;float:left}.ke-container .ke-toolbar .ke-hr{clear:both;height:1px;width:calc(100% - (2 * 2px));background:#ebebeb}.ke-container .ke-edit{padding:0}.ke-container .ke-edit .ke-edit-iframe,.ke-container .ke-edit .ke-edit-textarea{border:0;margin:0;padding:0;overflow:auto}.ke-container .ke-edit .ke-edit-textarea{font:12px/1.5 Consolas,Monaco,"Bitstream Vera Sans Mono","Courier New",Courier,monospace;color:#000;overflow:auto;resize:none}.ke-container .ke-edit .ke-edit-textarea:focus{outline:0}.ke-container .ke-statusbar{position:relative;background-color:#f5f5f5;border-top:1px solid #e1e1e1;font-size:0;line-height:0;overflow:hidden;text-align:center;cursor:s-resize;display:none}.ke-container .ke-statusbar .ke-statusbar-center-icon{background-position:0 -754px;width:15px;height:11px}.ke-container .ke-statusbar .ke-statusbar-right-icon{position:absolute;right:0;bottom:0;cursor:se-resize;width:11px;height:11px}.ke-menu{border:1px solid #ccc;background-color:#f5f5f5;color:#222;padding:2px;font-family:"sans serif",tahoma,verdana,helvetica;font-size:12px;text-align:left;overflow:hidden}.ke-menu .ke-menu-item{border:1px solid #f1f1f1;background-color:#f1f1f1;color:#222;height:24px;overflow:hidden;cursor:pointer}.ke-menu .ke-menu-item .ke-inline-block{display:-moz-inline-stack;display:inline-block;vertical-align:middle;zoom:1}.ke-menu .ke-menu-item .ke-inline-block .ke-inline-block{display:-moz-inline-stack;display:inline-block;vertical-align:middle;zoom:1}.ke-menu .ke-menu-item .ke-menu-item-left{width:27px;text-align:center;overflow:hidden}.ke-menu .ke-menu-item .ke-menu-item-center{width:0;height:24px;border-left:1px solid #e3e3e3;border-right:1px solid #fff;border-top:0;border-bottom:0}.ke-menu .ke-menu-item .ke-menu-item-center-on{border-left:1px solid #e9eff6;border-right:1px solid #e9eff6}.ke-menu .ke-menu-item .ke-menu-item-right{border:0;padding:0 0 0 5px;line-height:24px;text-align:left;overflow:hidden}.ke-menu .ke-menu-item .ke-menu-separator{margin:2px 0;height:0;overflow:hidden;border-top:1px solid #e1e1e1;border-bottom:1px solid #fff;border-left:0;border-right:0}.ke-menu .ke-menu-item-on{border:1px solid #5690d2;background-color:#e9eff6}.ke-menu .ke-plugin-emoticons{position:relative}.ke-menu .ke-plugin-emoticons .ke-preview{position:absolute;text-align:center;margin:2px;padding:10px;top:0;border:1px solid #a0a0a0;background-color:#fff;display:none}.ke-menu .ke-plugin-emoticons .ke-preview .ke-preview-img{border:0;margin:0;padding:0}.ke-menu .ke-plugin-emoticons .ke-table{border:0;margin:0;padding:0;border-collapse:separate}.ke-menu .ke-plugin-emoticons .ke-table .ke-cell{margin:0;padding:1px;border:1px solid #f5f5f5;cursor:pointer}.ke-menu .ke-plugin-emoticons .ke-table .ke-cell .ke-img{display:block;background-repeat:no-repeat;overflow:hidden;margin:2px;width:24px;height:24px;margin:0;padding:0;border:0}.ke-menu .ke-plugin-emoticons .ke-table .ke-on{border:1px solid #5690d2;background-color:#e9eff6}.ke-menu .ke-plugin-emoticons .ke-page{text-align:right;margin:5px;padding:0;border:0;font:12px/1 "sans serif",tahoma,verdana,helvetica;color:#333;text-decoration:none}.ke-colorpicker{border:1px solid #a0a0a0;background-color:#f1f1f1;color:#222;padding:2px}.ke-colorpicker .ke-colorpicker-table{border:0;margin:0;padding:0;border-collapse:separate}.ke-colorpicker .ke-colorpicker-table .ke-colorpicker-cell{font-size:0;line-height:0;border:1px solid #f0f0ee;cursor:pointer;margin:3px;padding:0}.ke-colorpicker .ke-colorpicker-table .ke-colorpicker-cell .ke-colorpicker-cell-color{width:14px;height:14px;margin:3px;padding:0;border:0}.ke-colorpicker .ke-colorpicker-table .ke-colorpicker-cell-top{font-family:"sans serif",tahoma,verdana,helvetica;font-size:12px;line-height:24px;border:1px solid #f1f1f1;cursor:pointer;margin:0;padding:0;text-align:center}.ke-colorpicker .ke-colorpicker-table .ke-colorpicker-cell-on{border:1px solid #5690d2}.ke-colorpicker .ke-colorpicker-table .ke-colorpicker-cell-selected{border:1px solid #2446ab}.ke-dialog{margin:0;padding:0;border:1px solid #ccc;zoom:1;box-shadow:1px 1px 3px #a0a0a0;-moz-box-shadow:1px 1px 3px #a0a0a0;-webkit-box-shadow:1px 1px 3px #a0a0a0;border-radius:5px;-moz-border-radius:5px;-webkit-border-radius:5px;overflow:hidden}.ke-dialog .ke-dialog-header{border:0;margin:0;font-weight:700;font-size:14px;height:30px;line-height:30px;padding:0 10px;text-align:left;color:#222;cursor:move;border-top-left-radius:6px;border-top-right-radius:6px;border-bottom:1px solid #c6c6c6;background:transparent url(../common/dialog-title-bg.png) repeat-x scroll 0 0;position:relative;cursor:move}.ke-dialog .ke-dialog-header .ke-dialog-icon-close{height:20px;width:20px;cursor:pointer;background:url(../common/icons-all.gif) 0 -59px;position:absolute;right:5px;top:4px}.ke-dialog .ke-dialog-header .ke-dialog-icon-close:hover{background-position:0 -89px}.ke-dialog .ke-dialog-content{background-color:#fff;width:100%;height:100%;color:#333;outline:0;zoom:1}.ke-dialog .ke-dialog-content .ke-dialog-body{font:12px/1.5 "sans serif",tahoma,verdana,helvetica;text-align:left;overflow:hidden;width:100%}.ke-dialog .ke-dialog-content .ke-dialog-body .ke-textarea{display:block;width:408px;height:260px;font-family:"sans serif",tahoma,verdana,helvetica;font-size:12px;border:1px solid #ccc}.ke-dialog .ke-dialog-content .ke-dialog-body .ke-textarea:focus{border-color:#66afe9;outline:0}.ke-dialog .ke-dialog-content .ke-dialog-body .ke-select{display:-moz-inline-stack;display:inline-block;vertical-align:middle;zoom:1;width:auto;border:1px solid #ccc;height:30px}.ke-dialog .ke-dialog-content .ke-dialog-body .ke-form{margin:0;padding:0}.ke-dialog .ke-dialog-content .ke-dialog-body .ke-input-number{width:50px}.ke-dialog .ke-dialog-content .ke-dialog-body .ke-input-checkbox{position:relative;top:6px}.ke-dialog .ke-dialog-content .ke-dialog-body textarea{display:block;overflow:auto;padding:0;resize:none}.ke-dialog .ke-dialog-content .ke-dialog-body textarea:focus{outline:0}.ke-dialog .ke-dialog-content .ke-dialog-body .ke-input-text{display:inline-block!important;max-width:400px;height:30px;line-height:30px;border:1px solid #ccc;font-size:14px;margin:0;outline:0;padding:0 10px}.ke-dialog .ke-dialog-content .ke-dialog-body .ke-input-text:focus{border-color:#66afe9}.ke-dialog .ke-dialog-content .ke-dialog-body .ke-input-color{border:1px solid #e1e1e1;background-color:#fff;font-size:12px;width:60px;height:30px;line-height:30px;padding-left:5px;overflow:hidden;cursor:pointer;display:-moz-inline-stack;display:inline-block;vertical-align:middle;zoom:1}.ke-dialog .ke-dialog-content .ke-dialog-body .ke-upload-area{position:relative;overflow:hidden;margin:0;padding:0;top:-1px;position:relative}.ke-dialog .ke-dialog-content .ke-dialog-body .ke-upload-area .ke-upload-file{position:absolute;font-size:60px;top:0;right:0;padding:0;margin:0;z-index:811212;border:0 none;opacity:0;cursor:pointer;width:62px;height:30px}.ke-dialog .ke-dialog-content .ke-dialog-body .ke-upload-area .ke-button-common{top:-1px}.ke-dialog .ke-dialog-content .ke-dialog-body .ke-upload-area .ke-button{padding:8px 15px}.ke-dialog .ke-dialog-content .ke-dialog-body .ke-dialog-content-inner{padding:10px 20px 0 20px}.ke-dialog .ke-dialog-content .ke-dialog-body .ke-dialog-content-inner .ke-dialog-row{border:1px solid #fff;margin-bottom:10px;overflow:hidden}.ke-dialog .ke-dialog-content .ke-dialog-body .ke-dialog-content-inner .ke-dialog-row .row-left{float:left;height:30px;line-height:30px;width:60px;text-align:right}.ke-dialog .ke-dialog-content .ke-dialog-body .ke-dialog-content-inner .ke-dialog-row .row-right{float:left;text-align:left}.ke-dialog .ke-dialog-content .ke-dialog-body .ke-dialog-content-inner .ke-dialog-row .row-right .ke-inline-block{display:-moz-inline-stack;display:inline-block;vertical-align:middle;zoom:1}.ke-dialog .ke-dialog-content .ke-dialog-body .ke-dialog-content-inner .ke-dialog-row .row-right .ke-inline-block .ke-upload-button{position:relative;top:-1px}.ke-dialog .ke-dialog-content .ke-dialog-body .ke-dialog-content-inner .ke-dialog-row .row-right label{cursor:pointer;display:-moz-inline-stack;display:inline-block;vertical-align:middle;text-align:right;zoom:1}.ke-dialog .ke-dialog-content .ke-dialog-body .ke-dialog-content-inner .ke-dialog-row .row-right label img{display:-moz-inline-stack;display:inline-block;vertical-align:middle;zoom:1}.ke-dialog .ke-dialog-content .ke-dialog-body .ke-dialog-content-inner .ke-header{height:30px;line-height:30px}.ke-dialog .ke-dialog-content .ke-dialog-body .ke-dialog-content-inner .ke-header .ke-input-text{height:22px;line-height:22px}.ke-dialog .ke-dialog-content .ke-dialog-body .ke-dialog-content-inner .ke-header .ke-button{padding:3px 10px}.ke-dialog .ke-dialog-content .ke-dialog-body .ke-dialog-content-inner .ke-header .checkbox{margin-left:10px}.ke-dialog .ke-dialog-content .ke-dialog-body .ke-dialog-content-inner .ke-tabs{font:12px/1 "sans serif",tahoma,verdana,helvetica;border-bottom:1px solid #e1e1e1;margin-bottom:20px}.ke-dialog .ke-dialog-content .ke-dialog-body .ke-dialog-content-inner .ke-tabs .ke-tabs-ul{list-style:none outside none;margin:0;padding:0}.ke-dialog .ke-dialog-content .ke-dialog-body .ke-dialog-content-inner .ke-tabs .ke-tabs-ul .ke-tabs-li{position:relative;margin:0 2px -1px 0;padding:0 20px;float:left;line-height:25px;text-align:center;color:#337ab7;cursor:pointer}.ke-dialog .ke-dialog-content .ke-dialog-body .ke-dialog-content-inner .ke-tabs .ke-tabs-ul .ke-tabs-li-selected{background-color:#fff;border:1px solid #e1e1e1;border-bottom:1px solid #fff;color:#555;cursor:default;border-top-left-radius:3px;border-top-right-radius:3px}.ke-dialog .ke-dialog-content .ke-dialog-body .ke-dialog-content-inner .ke-tabs .ke-tabs-ul .ke-tabs-li-on{background-color:#fff;color:#000}.ke-dialog .ke-dialog-content .ke-dialog-loading{position:absolute;top:0;left:1px;z-index:1;text-align:center}.ke-dialog .ke-dialog-content .ke-dialog-loading .ke-dialog-loading-content{background:url(../common/loading.gif) no-repeat center;color:#666;font-size:14px;font-weight:700;height:31px;line-height:31px;padding-left:36px}.ke-dialog .ke-dialog-footer{font:12px/1 "sans serif",tahoma,verdana,helvetica;text-align:right;padding:0 15px 5px 0;background-color:#fff;height:40px}.ke-dialog .ke-dialog-footer .ke-dialog-yes{margin:5px}.ke-dialog .ke-dialog-footer .ke-dialog-no{margin:5px 10px 5px 5px}.ke-dialog .ke-button-common{display:inline-block;text-align:center;background:0 0;border:none;padding:0;cursor:pointer}.ke-dialog .ke-button-outer{background-position:0 -25px;padding:0;display:-moz-inline-stack;display:inline-block;vertical-align:middle;zoom:1}.ke-dialog .ke-button{color:#333;font-size:12px;border:1px solid #e6e6e6;background-color:#e6e6e6;padding:7px 10px;margin-top:-4px;color:#444;text-decoration:none;transition:background-color .3s ease-out,border-color .3s ease-out}.ke-dialog .ke-button:hover{border:1px solid #e1e1e1;background-color:#e1e1e1}.ke-dialog .ke-dialog-btn{font-size:12px;margin:5px;background:#2e8ded;color:#fff!important;padding:8px 12px;display:inline-block;border-radius:2px;cursor:pointer;text-decoration:none;transition:.3s ease-out}.ke-dialog .ke-dialog-btn:hover{box-shadow:none;box-shadow:none;opacity:.8}.ke-container-blue .ke-toolbar{border-top:5px solid #1296db;box-shadow:0 1px 3px rgba(0,0,0,.12),0 1px 1px 1px rgba(0,0,0,.16);background-clip:padding-box;text-rendering:optimizelegibility}.ke-container-blue .ke-toolbar .ke-toolbar-icon{background:url(images/nkeditor.svg) no-repeat}.ke-container-blue .ke-toolbar .ke-icon-source{background-position:0 0}.ke-container-blue .ke-toolbar .ke-icon-preview{background-position:0 -63px}.ke-container-blue .ke-toolbar .ke-icon-print{background-position:0 -84px}.ke-container-blue .ke-toolbar .ke-icon-undo{background-position:0 -21px}.ke-container-blue .ke-toolbar .ke-icon-redo{background-position:0 -42px}.ke-container-blue .ke-toolbar .ke-icon-template{background-position:0 -105px}.ke-container-blue .ke-toolbar .ke-icon-cut{background-position:0 -147px}.ke-container-blue .ke-toolbar .ke-icon-copy{background-position:0 -168px}.ke-container-blue .ke-toolbar .ke-icon-paste{background-position:0 -189px}.ke-container-blue .ke-toolbar .ke-icon-selectall{background-position:0 -483px}.ke-container-blue .ke-toolbar .ke-icon-justifyleft{background-position:0 -252px}.ke-container-blue .ke-toolbar .ke-icon-justifycenter{background-position:0 -273px}.ke-container-blue .ke-toolbar .ke-icon-justifyright{background-position:0 -294px}.ke-container-blue .ke-toolbar .ke-icon-justifyfull{background-position:0 -315px}.ke-container-blue .ke-toolbar .ke-icon-insertorderedlist{background-position:0 -336px}.ke-container-blue .ke-toolbar .ke-icon-insertunorderedlist{background-position:0 -357px}.ke-container-blue .ke-toolbar .ke-icon-indent{background-position:0 -378px}.ke-container-blue .ke-toolbar .ke-icon-outdent{background-position:0 -399px}.ke-container-blue .ke-toolbar .ke-icon-subscript{background-position:0 -420px}.ke-container-blue .ke-toolbar .ke-icon-superscript{background-position:0 -441px}.ke-container-blue .ke-toolbar .ke-icon-date{background-position:0 -304px;width:25px;height:16px}.ke-container-blue .ke-toolbar .ke-icon-time{background-position:0 -320px;width:25px;height:16px}.ke-container-blue .ke-toolbar .ke-icon-formatblock{background-position:0 -546px}.ke-container-blue .ke-toolbar .ke-icon-fontname{background-position:0 -567px}.ke-container-blue .ke-toolbar .ke-icon-fontsize{background-position:0 -588px}.ke-container-blue .ke-toolbar .ke-icon-forecolor{background-position:0 -609px}.ke-container-blue .ke-toolbar .ke-icon-hilitecolor{background-position:0 -630px}.ke-container-blue .ke-toolbar .ke-icon-bold{background-position:0 -651px}.ke-container-blue .ke-toolbar .ke-icon-italic{background-position:0 -672px}.ke-container-blue .ke-toolbar .ke-icon-underline{background-position:0 -693px}.ke-container-blue .ke-toolbar .ke-icon-strikethrough{background-position:0 -714px}.ke-container-blue .ke-toolbar .ke-icon-removeformat{background-position:0 -756px}.ke-container-blue .ke-toolbar .ke-icon-image{background-position:0 -777px}.ke-container-blue .ke-toolbar .ke-icon-flash{background-position:0 -840px}.ke-container-blue .ke-toolbar .ke-icon-media{background-position:0 -861px}.ke-container-blue .ke-toolbar .ke-icon-div{background-position:0 -544px;width:16px;height:16px}.ke-container-blue .ke-toolbar .ke-icon-formula{background-position:0 -576px;width:16px;height:16px}.ke-container-blue .ke-toolbar .ke-icon-hr{background-position:0 -924px}.ke-container-blue .ke-toolbar .ke-icon-emoticons{background-position:0 -945px}.ke-container-blue .ke-toolbar .ke-icon-link{background-position:0 -1008px}.ke-container-blue .ke-toolbar .ke-icon-unlink{background-position:0 -1029px}.ke-container-blue .ke-toolbar .ke-icon-fullscreen{background-position:0 -525px}.ke-container-blue .ke-toolbar .ke-icon-about{background-position:0 -1092px}.ke-container-blue .ke-toolbar .ke-icon-quote{background-position:0 -1114px}.ke-container-blue .ke-toolbar .ke-icon-plainpaste{background-position:0 -210px}.ke-container-blue .ke-toolbar .ke-icon-wordpaste{background-position:0 -231px}.ke-container-blue .ke-toolbar .ke-icon-table{background-position:0 -903px;width:18px!important}.ke-container-blue .ke-toolbar .ke-icon-tablemenu{background-position:0 -768px;width:16px;height:16px}.ke-container-blue .ke-toolbar .ke-icon-code{background-position:0 -126px}.ke-container-blue .ke-toolbar .ke-icon-map{background-position:0 -976px;width:16px;height:16px}.ke-container-blue .ke-toolbar .ke-icon-baidumap{background-position:0 -1050px}.ke-container-blue .ke-toolbar .ke-icon-lineheight{background-position:0 -735px}.ke-container-blue .ke-toolbar .ke-icon-clearhtml{background-position:0 -462px}.ke-container-blue .ke-toolbar .ke-icon-pagebreak{background-position:0 -966px}.ke-container-blue .ke-toolbar .ke-icon-insertfile{background-position:0 -882px}.ke-container-blue .ke-toolbar .ke-icon-quickformat{background-position:0 -504px}.ke-container-blue .ke-toolbar .ke-icon-anchor{background-position:0 -987px}.ke-container-blue .ke-toolbar .ke-icon-search{background-position:0 -1184px;width:16px;height:16px}.ke-container-blue .ke-toolbar .ke-icon-new{background-position:0 -1200px;width:16px;height:16px}.ke-container-blue .ke-toolbar .ke-icon-specialchar{background-position:0 -1216px;width:16px;height:16px}.ke-container-blue .ke-toolbar .ke-icon-multiimage{background-position:0 -798px}.ke-container-blue .ke-toolbar .ke-icon-graft{background-position:0 -819px}.ke-menu-blue .ke-menu-item .ke-menu-item-left{width:27px;text-align:center;overflow:hidden}.ke-menu-blue .ke-menu-item .ke-menu-item-left .ke-toolbar-icon{font-size:0;line-height:0;overflow:hidden;display:block;width:16px;height:16px;margin:0 2px;background:url(images/nkeditor.svg) no-repeat}.ke-menu-blue .ke-menu-item .ke-menu-item-left .ke-icon-tableinsert{background-position:0 -903px;width:18px!important}.ke-menu-blue .ke-menu-item .ke-menu-item-left .ke-icon-tabledelete{background-position:0 -1428px}.ke-menu-blue .ke-menu-item .ke-menu-item-left .ke-icon-tablecolinsertleft{background-position:0 -1176px;width:18px!important}.ke-menu-blue .ke-menu-item .ke-menu-item-left .ke-icon-tablecolinsertright{background-position:0 -1323px;width:18px!important}.ke-menu-blue .ke-menu-item .ke-menu-item-left .ke-icon-tablerowinsertabove{background-position:0 -1302px;width:22px!important}.ke-menu-blue .ke-menu-item .ke-menu-item-left .ke-icon-tablerowinsertbelow{background-position:0 -1155px;width:22px!important}.ke-menu-blue .ke-menu-item .ke-menu-item-left .ke-icon-tablecoldelete{background-position:0 -1239px}.ke-menu-blue .ke-menu-item .ke-menu-item-left .ke-icon-tablerowdelete{background-position:0 -1260px}.ke-menu-blue .ke-menu-item .ke-menu-item-left .ke-icon-tablecellprop{background-position:0 -1218px}.ke-menu-blue .ke-menu-item .ke-menu-item-left .ke-icon-tableprop{background-position:0 -1134px}.ke-menu-blue .ke-menu-item .ke-menu-item-left .ke-icon-tablecellsplit{background-position:0 -1088px;width:16px;height:16px}.ke-menu-blue .ke-menu-item .ke-menu-item-left .ke-icon-tablerowmerge{background-position:-1px -1197px}.ke-menu-blue .ke-menu-item .ke-menu-item-left .ke-icon-tablerowsplit{background-position:0 -1344px}.ke-menu-blue .ke-menu-item .ke-menu-item-left .ke-icon-tablecolmerge{background-position:-4px -1365px}.ke-menu-blue .ke-menu-item .ke-menu-item-left .ke-icon-tablecolsplit{background-position:0 -1344px}.ke-menu-blue .ke-menu-item .ke-menu-item-left .ke-icon-image{background-position:0 -777px}.ke-menu-blue .ke-menu-item .ke-menu-item-left .ke-icon-flash{background-position:0 -840px}.ke-menu-blue .ke-menu-item .ke-menu-item-left .ke-icon-media{background-position:0 -861px}.ke-menu-blue .ke-menu-item .ke-menu-item-left .ke-icon-link{background-position:0 -1008px}.ke-menu-blue .ke-menu-item .ke-menu-item-left .ke-icon-checked{background-position:0 -1407px} \ No newline at end of file diff --git a/tools/NKeditor/themes/blue/editor.scss b/tools/NKeditor/themes/blue/editor.scss new file mode 100644 index 00000000..56739c1e --- /dev/null +++ b/tools/NKeditor/themes/blue/editor.scss @@ -0,0 +1,387 @@ +@import "../common/common"; + +.ke-container-blue { + .ke-toolbar { + + border-top: 5px solid #1296db; + box-shadow: 0 1px 3px rgba(0, 0, 0, 0.12), 0 1px 1px 1px rgba(0, 0, 0, 0.16); + background-clip: padding-box; + text-rendering: optimizelegibility; + + .ke-toolbar-icon { + *background-image: url(images/nkeditor.png); + background: url(images/nkeditor.svg) no-repeat; + } + + .ke-icon-source { + background-position: 0 0px; + } + .ke-icon-preview { + background-position: 0 -63px; + } + .ke-icon-print { + background-position: 0 -84px; + } + .ke-icon-undo { + background-position: 0 -21px; + } + + .ke-icon-redo { + background-position: 0 -42px; + } + + .ke-icon-template { + background-position: 0 -105px; + } + + .ke-icon-cut { + background-position: 0 -147px; + } + + .ke-icon-copy { + background-position: 0 -168px; + } + + .ke-icon-paste { + background-position: 0 -189px; + } + + .ke-icon-selectall { + background-position: 0 -483px; + } + + .ke-icon-justifyleft { + background-position: 0 -252px; + } + + .ke-icon-justifycenter { + background-position: 0 -273px; + } + + .ke-icon-justifyright { + background-position: 0 -294px; + } + + .ke-icon-justifyfull { + background-position: 0 -315px; + } + + .ke-icon-insertorderedlist { + background-position: 0 -336px; + } + + .ke-icon-insertunorderedlist { + background-position: 0 -357px; + } + + .ke-icon-indent { + background-position: 0 -378px; + } + + .ke-icon-outdent { + background-position: 0 -399px; + } + + .ke-icon-subscript { + background-position: 0 -420px; + } + + .ke-icon-superscript { + background-position: 0 -441px; + } + + .ke-icon-date { + background-position: 0px -304px; + width: 25px; + height: 16px; + } + + .ke-icon-time { + background-position: 0px -320px; + width: 25px; + height: 16px; + } + + .ke-icon-formatblock { + background-position: 0 -546px; + } + + .ke-icon-fontname { + background-position: 0 -567px; + } + + .ke-icon-fontsize { + background-position: 0 -588px; + } + + .ke-icon-forecolor { + background-position: 0 -609px; + } + + .ke-icon-hilitecolor { + background-position: 0 -630px; + } + + .ke-icon-bold { + background-position: 0 -651px; + } + + .ke-icon-italic { + background-position: 0 -672px; + } + + .ke-icon-underline { + background-position: 0 -693px; + } + + .ke-icon-strikethrough { + background-position: 0 -714px; + } + + .ke-icon-removeformat { + background-position: 0 -756px; + } + + .ke-icon-image { + background-position: 0 -777px; + } + + .ke-icon-flash { + background-position: 0 -840px; + } + + .ke-icon-media { + background-position: 0 -861px; + } + + .ke-icon-div { + background-position: 0px -544px; + width: 16px; + height: 16px; + } + + .ke-icon-formula { + background-position: 0px -576px; + width: 16px; + height: 16px; + } + + .ke-icon-hr { + background-position: 0 -924px; + } + + .ke-icon-emoticons { + background-position: 0 -945px; + } + + .ke-icon-link { + background-position: 0 -1008px; + } + + .ke-icon-unlink { + background-position: 0 -1029px; + } + + .ke-icon-fullscreen { + background-position: 0 -525px; + } + + .ke-icon-about { + background-position: 0 -1092px; + } + + .ke-icon-quote { + background-position: 0 -1114px; + } + + .ke-icon-plainpaste { + background-position: 0 -210px; + } + + .ke-icon-wordpaste { + background-position: 0 -231px; + } + + .ke-icon-table { + background-position: 0px -903px; + width: 18px !important; + } + + .ke-icon-tablemenu { + background-position: 0px -768px; + width: 16px; + height: 16px; + } + + .ke-icon-code { + background-position: 0 -126px; + } + + .ke-icon-map { + background-position: 0px -976px; + width: 16px; + height: 16px; + } + + .ke-icon-baidumap { + background-position: 0 -1050px; + } + + .ke-icon-lineheight { + background-position: 0 -735px; + } + + .ke-icon-clearhtml { + background-position: 0 -462px; + } + + .ke-icon-pagebreak { + background-position: 0 -966px; + } + + .ke-icon-insertfile { + background-position: 0 -882px; + } + + .ke-icon-quickformat { + background-position: 0 -504px; + } + + .ke-icon-anchor { + background-position: 0 -987px; + } + + .ke-icon-search { + background-position: 0px -1184px; + width: 16px; + height: 16px; + } + + .ke-icon-new { + background-position: 0px -1200px; + width: 16px; + height: 16px; + } + + .ke-icon-specialchar { + background-position: 0px -1216px; + width: 16px; + height: 16px; + } + + .ke-icon-multiimage { + background-position: 0 -798px; + } + + .ke-icon-graft { + background-position: 0 -819px; + } + } +} + +/** + menu 右键菜单 + */ +.ke-menu-blue { + + .ke-menu-item { + + .ke-menu-item-left { + width: 27px; + text-align: center; + overflow: hidden; + + .ke-toolbar-icon { + @include ke-toolbar-icon; + *background-image: url(images/nkeditor.png); + background: url(images/nkeditor.svg) no-repeat; + } + + .ke-icon-tableinsert { + background-position: 0 -903px; + width: 18px !important; + } + + .ke-icon-tabledelete { + background-position: 0 -1428px; + } + + .ke-icon-tablecolinsertleft { + background-position: 0 -1176px; + width: 18px !important; + } + + .ke-icon-tablecolinsertright { + background-position: 0 -1323px; + width: 18px !important; + } + + .ke-icon-tablerowinsertabove { + background-position: 0 -1302px; + width: 22px !important; + } + + .ke-icon-tablerowinsertbelow { + background-position: 0 -1155px; + width: 22px !important; + } + + .ke-icon-tablecoldelete { + background-position: 0 -1239px; + } + + .ke-icon-tablerowdelete { + background-position: 0 -1260px; + } + + .ke-icon-tablecellprop { + background-position: 0 -1218px; + } + + .ke-icon-tableprop { + background-position: 0 -1134px; + } + .ke-icon-tablecellsplit { + background-position: 0px -1088px; + width: 16px; + height: 16px; + } + + .ke-icon-tablerowmerge { + background-position: -1px -1197px; + } + + .ke-icon-tablerowsplit { + background-position: 0 -1344px; + } + + .ke-icon-tablecolmerge { + background-position: -4px -1365px; + } + + .ke-icon-tablecolsplit { + background-position: 0 -1344px; + } + + //图片,视频右键菜单 + .ke-icon-image { + background-position: 0 -777px; + } + .ke-icon-flash { + background-position: 0 -840px; + } + .ke-icon-media { + background-position: 0 -861px; + } + .ke-icon-link { + background-position: 0 -1008px; + } + + .ke-icon-checked { + background-position: 0 -1407px; + } + + } + } +} +//menu end \ No newline at end of file diff --git a/tools/NKeditor/themes/blue/images/nkeditor.png b/tools/NKeditor/themes/blue/images/nkeditor.png new file mode 100644 index 00000000..6cf968ad Binary files /dev/null and b/tools/NKeditor/themes/blue/images/nkeditor.png differ diff --git a/tools/NKeditor/themes/blue/images/nkeditor.svg b/tools/NKeditor/themes/blue/images/nkeditor.svg new file mode 100644 index 00000000..5f124533 --- /dev/null +++ b/tools/NKeditor/themes/blue/images/nkeditor.svg @@ -0,0 +1,260 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tools/NKeditor/themes/common/anchor.gif b/tools/NKeditor/themes/common/anchor.gif new file mode 100644 index 00000000..61145ea7 Binary files /dev/null and b/tools/NKeditor/themes/common/anchor.gif differ diff --git a/tools/NKeditor/themes/common/blank.gif b/tools/NKeditor/themes/common/blank.gif new file mode 100644 index 00000000..5bfd67a2 Binary files /dev/null and b/tools/NKeditor/themes/common/blank.gif differ diff --git a/tools/NKeditor/themes/common/common.css b/tools/NKeditor/themes/common/common.css new file mode 100644 index 00000000..a92c5ded --- /dev/null +++ b/tools/NKeditor/themes/common/common.css @@ -0,0 +1,605 @@ +@charset "UTF-8"; +/** +公共样式 +*/ +.ke-clearfix { + zoom: 1; + clear: both; } + +.ke-clearfix:after { + content: "."; + display: block; + clear: both; + font-size: 0; + height: 0; + line-height: 0; + visibility: hidden; } + +.ke-animated { + animation: zoomIn; + animation-duration: 0.3s; + animation-fill-mode: both; } + +@keyframes zoomIn { + from { + opacity: 0; + transform: scale3d(0.3, 0.3, 0.3); } + 50% { + opacity: 1; } } +.ke-dialog-mask { + background-color: #FFF; + filter: alpha(opacity=50); + opacity: 0.5; } + +.ke-dialog-lock { + background-color: #FFF; + filter: alpha(opacity=50); + opacity: 0.5; + z-index: 811213; + left: 0; + top: 0; + position: absolute; } + +/** +编辑器样式开始 + */ +.ke-container { + display: block; + background-color: #FFF; + overflow: hidden; + margin: 0; + padding: 0; + box-shadow: 0 1px 3px rgba(0, 0, 0, 0.12), 0 1px 1px 1px rgba(0, 0, 0, 0.16); + /** + 通用样式 + */ + /** + toolbar 样式 + */ + /** + ke-edit + */ + /** + statusbar start + */ } + .ke-container .ke-shadow { + box-shadow: 1px 1px 3px #A0A0A0; + -moz-box-shadow: 1px 1px 3px #A0A0A0; + -webkit-box-shadow: 1px 1px 3px #A0A0A0; + filter: progid:DXImageTransform.Microsoft.Shadow(color='#A0A0A0', Direction=135, Strength=3); + background-color: #F0F0EE; } + .ke-container .ke-menu a, + .ke-container .ke-menu a:hover, + .ke-container .ke-dialog a, + .ke-container .ke-dialog a:hover { + color: #337FE5; + text-decoration: none; } + .ke-container .ke-toolbar { + text-align: left; + overflow: hidden; + zoom: 1; + padding: 0px 5px; } + .ke-container .ke-toolbar .ke-outline { + padding: 10px 5px; + font-size: 0; + line-height: 0; + cursor: pointer; + display: block; + float: left; + /** + * 按钮通用样式 + */ } + .ke-container .ke-toolbar .ke-outline .ke-toolbar-icon { + font-size: 0; + line-height: 0; + overflow: hidden; + display: block; + width: 16px; + height: 16px; + margin: 0px 2px; } + .ke-container .ke-toolbar .ke-on { + background: #ebebeb; } + .ke-container .ke-toolbar .ke-selected { + background-color: #ebebeb; } + .ke-container .ke-toolbar .ke-disabled { + cursor: default; } + .ke-container .ke-toolbar .ke-separator { + height: 16px; + margin: 2px 3px; + border-left: 1px solid #A0A0A0; + border-right: 1px solid #FFFFFF; + border-top: 0; + border-bottom: 0; + width: 0; + font-size: 0; + line-height: 0; + overflow: hidden; + display: block; + float: left; } + .ke-container .ke-toolbar .ke-hr { + clear: both; + height: 1px; + width: calc(100% - (2 * 2px)); + background: #ebebeb; } + .ke-container .ke-edit { + padding: 0; } + .ke-container .ke-edit .ke-edit-iframe, + .ke-container .ke-edit .ke-edit-textarea { + border: 0; + margin: 0; + padding: 0; + overflow: auto; } + .ke-container .ke-edit .ke-edit-textarea { + font: 12px/1.5 "Consolas", "Monaco", "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; + color: #000; + overflow: auto; + resize: none; } + .ke-container .ke-edit .ke-edit-textarea:focus { + outline: none; } + .ke-container .ke-statusbar { + position: relative; + background-color: #f5f5f5; + border-top: 1px solid #e1e1e1; + font-size: 0; + line-height: 0; + *height: 12px; + overflow: hidden; + text-align: center; + cursor: s-resize; + display: none; } + .ke-container .ke-statusbar .ke-statusbar-center-icon { + background-position: -0px -754px; + width: 15px; + height: 11px; } + .ke-container .ke-statusbar .ke-statusbar-right-icon { + position: absolute; + right: 0; + bottom: 0; + cursor: se-resize; + width: 11px; + height: 11px; } + +/** + menu 右键菜单 + */ +.ke-menu { + border: 1px solid #cccccc; + background-color: #f5f5f5; + color: #222222; + padding: 2px; + font-family: "sans serif", tahoma, verdana, helvetica; + font-size: 12px; + text-align: left; + overflow: hidden; + /** + 表情插件 + */ } + .ke-menu .ke-menu-item { + border: 1px solid #F1F1F1; + background-color: #F1F1F1; + color: #222222; + height: 24px; + overflow: hidden; + cursor: pointer; } + .ke-menu .ke-menu-item .ke-inline-block { + display: -moz-inline-stack; + display: inline-block; + vertical-align: middle; + zoom: 1; + *display: inline; } + .ke-menu .ke-menu-item .ke-inline-block .ke-inline-block { + display: -moz-inline-stack; + display: inline-block; + vertical-align: middle; + zoom: 1; + *display: inline; } + .ke-menu .ke-menu-item .ke-menu-item-left { + width: 27px; + text-align: center; + overflow: hidden; } + .ke-menu .ke-menu-item .ke-menu-item-center { + width: 0; + height: 24px; + border-left: 1px solid #E3E3E3; + border-right: 1px solid #FFFFFF; + border-top: 0; + border-bottom: 0; } + .ke-menu .ke-menu-item .ke-menu-item-center-on { + border-left: 1px solid #E9EFF6; + border-right: 1px solid #E9EFF6; } + .ke-menu .ke-menu-item .ke-menu-item-right { + border: 0; + padding: 0 0 0 5px; + line-height: 24px; + text-align: left; + overflow: hidden; } + .ke-menu .ke-menu-item .ke-menu-separator { + margin: 2px 0; + height: 0; + overflow: hidden; + border-top: 1px solid #e1e1e1; + border-bottom: 1px solid #FFFFFF; + border-left: 0; + border-right: 0; } + .ke-menu .ke-menu-item-on { + border: 1px solid #5690D2; + background-color: #E9EFF6; } + .ke-menu .ke-plugin-emoticons { + position: relative; } + .ke-menu .ke-plugin-emoticons .ke-preview { + position: absolute; + text-align: center; + margin: 2px; + padding: 10px; + top: 0; + border: 1px solid #A0A0A0; + background-color: #FFFFFF; + display: none; } + .ke-menu .ke-plugin-emoticons .ke-preview .ke-preview-img { + border: 0; + margin: 0; + padding: 0; } + .ke-menu .ke-plugin-emoticons .ke-table { + border: 0; + margin: 0; + padding: 0; + border-collapse: separate; } + .ke-menu .ke-plugin-emoticons .ke-table .ke-cell { + margin: 0; + padding: 1px; + border: 1px solid #f5f5f5; + cursor: pointer; } + .ke-menu .ke-plugin-emoticons .ke-table .ke-cell .ke-img { + display: block; + background-repeat: no-repeat; + overflow: hidden; + margin: 2px; + width: 24px; + height: 24px; + margin: 0; + padding: 0; + border: 0; } + .ke-menu .ke-plugin-emoticons .ke-table .ke-on { + border: 1px solid #5690D2; + background-color: #E9EFF6; } + .ke-menu .ke-plugin-emoticons .ke-page { + text-align: right; + margin: 5px; + padding: 0; + border: 0; + font: 12px/1 "sans serif", tahoma, verdana, helvetica; + color: #333; + text-decoration: none; } + +/** + colorpicker + */ +.ke-colorpicker { + border: 1px solid #A0A0A0; + background-color: #F1F1F1; + color: #222222; + padding: 2px; } + .ke-colorpicker .ke-colorpicker-table { + border: 0; + margin: 0; + padding: 0; + border-collapse: separate; } + .ke-colorpicker .ke-colorpicker-table .ke-colorpicker-cell { + font-size: 0; + line-height: 0; + border: 1px solid #F0F0EE; + cursor: pointer; + margin: 3px; + padding: 0; } + .ke-colorpicker .ke-colorpicker-table .ke-colorpicker-cell .ke-colorpicker-cell-color { + width: 14px; + height: 14px; + margin: 3px; + padding: 0; + border: 0; } + .ke-colorpicker .ke-colorpicker-table .ke-colorpicker-cell-top { + font-family: "sans serif", tahoma, verdana, helvetica; + font-size: 12px; + line-height: 24px; + border: 1px solid #F1F1F1; + cursor: pointer; + margin: 0; + padding: 0; + text-align: center; } + .ke-colorpicker .ke-colorpicker-table .ke-colorpicker-cell-on { + border: 1px solid #5690D2; } + .ke-colorpicker .ke-colorpicker-table .ke-colorpicker-cell-selected { + border: 1px solid #2446AB; } + +/** + dialog + */ +.ke-dialog { + margin: 0; + padding: 0; + border: 1px solid #cccccc; + zoom: 1; + box-shadow: 1px 1px 3px #A0A0A0; + -moz-box-shadow: 1px 1px 3px #A0A0A0; + -webkit-box-shadow: 1px 1px 3px #A0A0A0; + filter: progid:DXImageTransform.Microsoft.Shadow(color='#A0A0A0', Direction=135, Strength=3); + border-radius: 5px; + -moz-border-radius: 5px; + -webkit-border-radius: 5px; + overflow: hidden; } + .ke-dialog .ke-dialog-header { + border: 0; + margin: 0; + font-weight: bold; + font-size: 14px; + height: 30px; + line-height: 30px; + padding: 0px 10px; + text-align: left; + color: #222; + cursor: move; + border-top-left-radius: 6px; + border-top-right-radius: 6px; + border-bottom: 1px solid #c6c6c6; + background: transparent url(../common/dialog-title-bg.png) repeat-x scroll 0 0; + position: relative; + cursor: move; } + .ke-dialog .ke-dialog-header .ke-dialog-icon-close { + height: 20px; + width: 20px; + cursor: pointer; + background: url("../common/icons-all.gif") 0 -59px; + position: absolute; + right: 5px; + top: 4px; } + .ke-dialog .ke-dialog-header .ke-dialog-icon-close:hover { + background-position: 0px -89px; } + .ke-dialog .ke-dialog-content { + background-color: #FFF; + width: 100%; + height: 100%; + color: #333; + outline: 0; + zoom: 1; } + .ke-dialog .ke-dialog-content .ke-dialog-body { + font: 12px/1.5 "sans serif", tahoma, verdana, helvetica; + text-align: left; + overflow: hidden; + width: 100%; } + .ke-dialog .ke-dialog-content .ke-dialog-body .ke-textarea { + display: block; + width: 408px; + height: 260px; + font-family: "sans serif", tahoma, verdana, helvetica; + font-size: 12px; + border: 1px solid #cccccc; } + .ke-dialog .ke-dialog-content .ke-dialog-body .ke-textarea:focus { + border-color: #66afe9; + outline: none; } + .ke-dialog .ke-dialog-content .ke-dialog-body .ke-select { + display: -moz-inline-stack; + display: inline-block; + vertical-align: middle; + zoom: 1; + *display: inline; + width: auto; + border: 1px solid #cccccc; + height: 30px; } + .ke-dialog .ke-dialog-content .ke-dialog-body .ke-form { + margin: 0; + padding: 0; } + .ke-dialog .ke-dialog-content .ke-dialog-body .ke-input-number { + width: 50px; } + .ke-dialog .ke-dialog-content .ke-dialog-body .ke-input-checkbox { + position: relative; + top: 6px; } + .ke-dialog .ke-dialog-content .ke-dialog-body textarea { + display: block; + overflow: auto; + padding: 0; + resize: none; } + .ke-dialog .ke-dialog-content .ke-dialog-body textarea:focus { + outline: none; } + .ke-dialog .ke-dialog-content .ke-dialog-body .ke-input-text { + display: inline-block !important; + max-width: 400px; + height: 30px; + line-height: 30px; + border: 1px solid #cccccc; + font-size: 14px; + margin: 0; + outline: 0; + padding: 0px 10px; + *display: inline; } + .ke-dialog .ke-dialog-content .ke-dialog-body .ke-input-text:focus { + border-color: #66afe9; } + .ke-dialog .ke-dialog-content .ke-dialog-body .ke-input-color { + border: 1px solid #e1e1e1; + background-color: #FFFFFF; + font-size: 12px; + width: 60px; + height: 30px; + line-height: 30px; + padding-left: 5px; + overflow: hidden; + cursor: pointer; + display: -moz-inline-stack; + display: inline-block; + vertical-align: middle; + zoom: 1; + *display: inline; } + .ke-dialog .ke-dialog-content .ke-dialog-body .ke-upload-area { + position: relative; + overflow: hidden; + margin: 0; + padding: 0; + top: -1px; + position: relative; + *height: 25px; } + .ke-dialog .ke-dialog-content .ke-dialog-body .ke-upload-area .ke-upload-file { + position: absolute; + font-size: 60px; + top: 0; + right: 0; + padding: 0; + margin: 0; + z-index: 811212; + border: 0 none; + opacity: 0; + cursor: pointer; + width: 62px; + height: 30px; + filter: alpha(opacity=0); } + .ke-dialog .ke-dialog-content .ke-dialog-body .ke-upload-area .ke-button-common { + top: -1px; } + .ke-dialog .ke-dialog-content .ke-dialog-body .ke-upload-area .ke-button { + padding: 8px 15px; } + .ke-dialog .ke-dialog-content .ke-dialog-body .ke-dialog-content-inner { + padding: 10px 20px 0px 20px; + /** + tabs + */ } + .ke-dialog .ke-dialog-content .ke-dialog-body .ke-dialog-content-inner .ke-dialog-row { + border: 1px solid #FFFFFF; + margin-bottom: 10px; + overflow: hidden; } + .ke-dialog .ke-dialog-content .ke-dialog-body .ke-dialog-content-inner .ke-dialog-row .row-left { + float: left; + height: 30px; + line-height: 30px; + width: 60px; + text-align: right; } + .ke-dialog .ke-dialog-content .ke-dialog-body .ke-dialog-content-inner .ke-dialog-row .row-right { + float: left; + text-align: left; } + .ke-dialog .ke-dialog-content .ke-dialog-body .ke-dialog-content-inner .ke-dialog-row .row-right .ke-inline-block { + display: -moz-inline-stack; + display: inline-block; + vertical-align: middle; + zoom: 1; + *display: inline; } + .ke-dialog .ke-dialog-content .ke-dialog-body .ke-dialog-content-inner .ke-dialog-row .row-right .ke-inline-block .ke-upload-button { + position: relative; + top: -1px; } + .ke-dialog .ke-dialog-content .ke-dialog-body .ke-dialog-content-inner .ke-dialog-row .row-right label { + cursor: pointer; + display: -moz-inline-stack; + display: inline-block; + vertical-align: middle; + text-align: right; + zoom: 1; + *display: inline; } + .ke-dialog .ke-dialog-content .ke-dialog-body .ke-dialog-content-inner .ke-dialog-row .row-right label img { + display: -moz-inline-stack; + display: inline-block; + vertical-align: middle; + zoom: 1; + *display: inline; } + .ke-dialog .ke-dialog-content .ke-dialog-body .ke-dialog-content-inner .ke-header { + height: 30px; + line-height: 30px; } + .ke-dialog .ke-dialog-content .ke-dialog-body .ke-dialog-content-inner .ke-header .ke-input-text { + height: 22px; + line-height: 22px; } + .ke-dialog .ke-dialog-content .ke-dialog-body .ke-dialog-content-inner .ke-header .ke-button { + padding: 3px 10px; } + .ke-dialog .ke-dialog-content .ke-dialog-body .ke-dialog-content-inner .ke-header .checkbox { + margin-left: 10px; } + .ke-dialog .ke-dialog-content .ke-dialog-body .ke-dialog-content-inner .ke-tabs { + font: 12px/1 "sans serif", tahoma, verdana, helvetica; + border-bottom: 1px solid #e1e1e1; + margin-bottom: 20px; } + .ke-dialog .ke-dialog-content .ke-dialog-body .ke-dialog-content-inner .ke-tabs .ke-tabs-ul { + list-style: none outside none; + margin: 0; + padding: 0; } + .ke-dialog .ke-dialog-content .ke-dialog-body .ke-dialog-content-inner .ke-tabs .ke-tabs-ul .ke-tabs-li { + position: relative; + margin: 0 2px -1px 0; + padding: 0 20px; + float: left; + line-height: 25px; + text-align: center; + color: #337ab7; + cursor: pointer; } + .ke-dialog .ke-dialog-content .ke-dialog-body .ke-dialog-content-inner .ke-tabs .ke-tabs-ul .ke-tabs-li-selected { + background-color: #FFF; + border: 1px solid #e1e1e1; + border-bottom: 1px solid #FFF; + color: #555555; + cursor: default; + border-top-left-radius: 3px; + border-top-right-radius: 3px; } + .ke-dialog .ke-dialog-content .ke-dialog-body .ke-dialog-content-inner .ke-tabs .ke-tabs-ul .ke-tabs-li-on { + background-color: #FFF; + color: #000; } + .ke-dialog .ke-dialog-content .ke-dialog-loading { + position: absolute; + top: 0; + left: 1px; + z-index: 1; + text-align: center; } + .ke-dialog .ke-dialog-content .ke-dialog-loading .ke-dialog-loading-content { + background: url("../common/loading.gif") no-repeat center; + color: #666; + font-size: 14px; + font-weight: bold; + height: 31px; + line-height: 31px; + padding-left: 36px; } + .ke-dialog .ke-dialog-footer { + font: 12px/1 "sans serif", tahoma, verdana, helvetica; + text-align: right; + padding: 0 15px 5px 0; + background-color: #FFF; + height: 40px; } + .ke-dialog .ke-dialog-footer .ke-dialog-yes { + margin: 5px; } + .ke-dialog .ke-dialog-footer .ke-dialog-no { + margin: 5px 10px 5px 5px; } + .ke-dialog .ke-button-common { + display: inline-block; + text-align: center; + background: none; + border: none; + padding: 0; + cursor: pointer; } + .ke-dialog .ke-button-outer { + background-position: 0 -25px; + padding: 0; + display: -moz-inline-stack; + display: inline-block; + vertical-align: middle; + zoom: 1; + *display: inline; } + .ke-dialog .ke-button { + color: #333; + font-size: 12px; + border: 1px solid #e6e6e6; + background-color: #e6e6e6; + padding: 7px 10px; + margin-top: -4px; + color: #444; + text-decoration: none; + transition: background-color .3s ease-out, border-color .3s ease-out; } + .ke-dialog .ke-button:hover { + border: 1px solid #e1e1e1; + background-color: #e1e1e1; } + .ke-dialog .ke-dialog-btn { + font-size: 12px; + margin: 5px; + background: #2e8ded; + color: #fff !important; + padding: 8px 12px; + display: inline-block; + border-radius: 2px; + cursor: pointer; + text-decoration: none; + transition: .3s ease-out; } + .ke-dialog .ke-dialog-btn:hover { + filter: alpha(opacity=80); + box-shadow: none; + box-shadow: none; + opacity: .8; } + +/*# sourceMappingURL=common.css.map */ diff --git a/tools/NKeditor/themes/common/common.css.map b/tools/NKeditor/themes/common/common.css.map new file mode 100644 index 00000000..0844fe00 --- /dev/null +++ b/tools/NKeditor/themes/common/common.css.map @@ -0,0 +1,7 @@ +{ +"version": 3, +"mappings": "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", +"sources": ["common.scss"], +"names": [], +"file": "common.css" +} \ No newline at end of file diff --git a/tools/NKeditor/themes/common/common.scss b/tools/NKeditor/themes/common/common.scss new file mode 100644 index 00000000..5e8549b1 --- /dev/null +++ b/tools/NKeditor/themes/common/common.scss @@ -0,0 +1,830 @@ +$inputBorderColor : #cccccc; +$inputFocusBorderColor : #66afe9; +$inputHeight : 30px; +$editorBorderStyle : 1px solid #e1e1e1; +$dialogBorderStyle : 1px solid #cccccc; +$menuBgColor : #f5f5f5; + +@mixin ke-inline-block { + display: -moz-inline-stack; + display: inline-block; + vertical-align: middle; + zoom: 1; + *display: inline; +} +//工具栏图标样式 +@mixin ke-toolbar-icon { + font-size: 0; + line-height: 0; + overflow: hidden; + display: block; + width: 16px; + height: 16px; + margin: 0px 2px; +} +//阴影 +@mixin ke-shadow { + box-shadow: 1px 1px 3px #A0A0A0; + -moz-box-shadow: 1px 1px 3px #A0A0A0; + -webkit-box-shadow: 1px 1px 3px #A0A0A0; + filter: progid:DXImageTransform.Microsoft.Shadow(color='#A0A0A0', Direction=135, Strength=3); +} + +/** +公共样式 +*/ +//清除浮动 +.ke-clearfix { + zoom: 1; + clear: both; +} +.ke-clearfix:after { + content: "."; + display: block; + clear: both; + font-size: 0; + height: 0; + line-height: 0; + visibility: hidden; +} +// 过渡动画 +.ke-animated { + animation: zoomIn; + animation-duration: 0.3s; + animation-fill-mode: both; +} +@keyframes zoomIn { + from { + opacity: 0; + transform: scale3d(0.3, 0.3, 0.3); + } + 50% { + opacity: 1; + } +} + +//遮罩层 +.ke-dialog-mask { + background-color: #FFF; + filter: alpha(opacity=50); + opacity: 0.5; +} +.ke-dialog-lock { + background-color: #FFF; + filter: alpha(opacity=50); + opacity: 0.5; + z-index: 811213; + left: 0; + top: 0; + position: absolute; +} + +/** +编辑器样式开始 + */ +.ke-container { + + display: block; + //border: $editorBorderStyle; + background-color: #FFF; + overflow: hidden; + margin: 0; + padding: 0; + box-shadow: 0 1px 3px rgba(0,0,0,0.12), 0 1px 1px 1px rgba(0,0,0,0.16); + + /** + 通用样式 + */ + .ke-shadow { + @include ke-shadow; + background-color: #F0F0EE; + } + + .ke-menu a, + .ke-menu a:hover, + .ke-dialog a, + .ke-dialog a:hover { + color: #337FE5; + text-decoration: none; + } + + /** + toolbar 样式 + */ + .ke-toolbar { + //border-bottom: $editorBorderStyle; + text-align: left; + overflow: hidden; + zoom: 1; + padding: 0px 5px; + + .ke-outline { + //border: 1px solid #f5f5f5; + padding: 10px 5px; + font-size: 0; + line-height: 0; + cursor: pointer; + display: block; + float: left; + + /** + * 按钮通用样式 + */ + .ke-toolbar-icon { + @include ke-toolbar-icon; + } + + } + + .ke-on { + background: #ebebeb; + } + .ke-selected { + background-color: #ebebeb; + } + .ke-disabled { + cursor: default; + } + .ke-separator { + height: 16px; + margin: 2px 3px; + border-left: 1px solid #A0A0A0; + border-right: 1px solid #FFFFFF; + border-top: 0; + border-bottom: 0; + width: 0; + font-size: 0; + line-height: 0; + overflow: hidden; + display: block; + float: left; + } + .ke-hr { + clear: both; + height: 1px; + width: calc(100% - (2 * 2px)); + background: #ebebeb; + } + } + //end ke-toolbar + + /** + ke-edit + */ + .ke-edit { + padding: 0; + + .ke-edit-iframe, + .ke-edit-textarea { + border: 0; + margin: 0; + padding: 0; + overflow: auto; + } + .ke-edit-textarea { + font: 12px/1.5 "Consolas", "Monaco", "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; + color: #000; + overflow: auto; + resize: none; + + &:focus { + outline: none; + } + } + } + //end ke-edit + + /** + statusbar start + */ + .ke-statusbar { + position: relative; + background-color: #f5f5f5; + border-top: $editorBorderStyle; + font-size: 0; + line-height: 0; + *height: 12px; + overflow: hidden; + text-align: center; + cursor: s-resize; + display: none; + + .ke-statusbar-center-icon { + background-position: -0px -754px; + width: 15px; + height: 11px; + } + + .ke-statusbar-right-icon { + position: absolute; + right: 0; + bottom: 0; + cursor: se-resize; + width: 11px; + height: 11px; + } + } + //end ke-statusbar +} + +/** + menu 右键菜单 + */ +.ke-menu { + border: $dialogBorderStyle; + background-color: $menuBgColor; + color: #222222; + padding: 2px; + font-family: "sans serif", tahoma, verdana, helvetica; + font-size: 12px; + text-align: left; + overflow: hidden; + + .ke-menu-item { + border: 1px solid #F1F1F1; + background-color: #F1F1F1; + color: #222222; + height: 24px; + overflow: hidden; + cursor: pointer; + + .ke-inline-block { + @include ke-inline-block; + + .ke-inline-block { + @include ke-inline-block; + } + } + + .ke-menu-item-left { + width: 27px; + text-align: center; + overflow: hidden; + + + } + + .ke-menu-item-center { + width: 0; + height: 24px; + border-left: 1px solid #E3E3E3; + border-right: 1px solid #FFFFFF; + border-top: 0; + border-bottom: 0; + } + + .ke-menu-item-center-on { + border-left: 1px solid #E9EFF6; + border-right: 1px solid #E9EFF6; + } + + .ke-menu-item-right { + border: 0; + padding: 0 0 0 5px; + line-height: 24px; + text-align: left; + overflow: hidden; + } + + .ke-menu-separator { + margin: 2px 0; + height: 0; + overflow: hidden; + border-top: $editorBorderStyle; + border-bottom: 1px solid #FFFFFF; + border-left: 0; + border-right: 0; + } + } + + .ke-menu-item-on { + border: 1px solid #5690D2; + background-color: #E9EFF6; + } + + /** + 表情插件 + */ + .ke-plugin-emoticons { + position: relative; + + .ke-preview { + position: absolute; + text-align: center; + margin: 2px; + padding: 10px; + top: 0; + border: 1px solid #A0A0A0; + background-color: #FFFFFF; + display: none; + + .ke-preview-img { + border: 0; + margin: 0; + padding: 0; + } + } //end ke-preview + + .ke-table { + border: 0; + margin: 0; + padding: 0; + border-collapse: separate; + + .ke-cell { + margin: 0; + padding: 1px; + border: 1px solid #f5f5f5; + cursor: pointer; + + .ke-img { + display: block; + background-repeat: no-repeat; + overflow: hidden; + margin: 2px; + width: 24px; + height: 24px; + margin: 0; + padding: 0; + border: 0; + } + } + .ke-on { + border: 1px solid #5690D2; + background-color: #E9EFF6; + } + } //end ke-table + + .ke-page { + text-align: right; + margin: 5px; + padding: 0; + border: 0; + font: 12px/1 "sans serif", tahoma, verdana, helvetica; + color: #333; + text-decoration: none; + } + } + +} +//menu end + +/** + colorpicker + */ +.ke-colorpicker { + border: 1px solid #A0A0A0; + background-color: #F1F1F1; + color: #222222; + padding: 2px; + + .ke-colorpicker-table { + border: 0; + margin: 0; + padding: 0; + border-collapse: separate; + + .ke-colorpicker-cell { + font-size: 0; + line-height: 0; + border: 1px solid #F0F0EE; + cursor: pointer; + margin: 3px; + padding: 0; + + .ke-colorpicker-cell-color { + width: 14px; + height: 14px; + margin: 3px; + padding: 0; + border: 0; + } + } + .ke-colorpicker-cell-top { + font-family: "sans serif", tahoma, verdana, helvetica; + font-size: 12px; + line-height: 24px; + border: 1px solid #F1F1F1; + cursor: pointer; + margin: 0; + padding: 0; + text-align: center; + } + .ke-colorpicker-cell-on { + border: 1px solid #5690D2; + } + .ke-colorpicker-cell-selected { + border: 1px solid #2446AB; + } + + } +} //colorpicker end + +/** + dialog + */ +.ke-dialog { + margin: 0; + padding: 0; + border: $dialogBorderStyle; + zoom: 1; + @include ke-shadow; + border-radius: 5px; + -moz-border-radius: 5px; + -webkit-border-radius: 5px; + overflow: hidden; + + // start ke-dialog-header + .ke-dialog-header { + border: 0; + margin: 0; + font-weight: bold; + font-size: 14px; + height: 30px; + line-height: 30px; + padding: 0px 10px; + text-align: left; + color: #222; + cursor: move; + border-top-left-radius: 6px; + border-top-right-radius: 6px; + border-bottom: 1px solid #c6c6c6; + background: transparent url(../common/dialog-title-bg.png) repeat-x scroll 0 0; + position: relative; + cursor: move; + + .ke-dialog-icon-close { + height: 20px; + width: 20px; + cursor: pointer; + background: url("../common/icons-all.gif") 0 -59px; + position: absolute; + right: 5px; + top: 4px; + + &:hover { + background-position: 0px -89px; + } + } + + } //end ke-dialog-header + + //start ke-content + .ke-dialog-content { + + background-color: #FFF; + width: 100%; + height: 100%; + color: #333; + outline: 0; + zoom: 1; + + // ke-dialog-body start + .ke-dialog-body { + font: 12px/1.5 "sans serif", tahoma, verdana, helvetica; + text-align: left; + overflow: hidden; + width: 100%; + + .ke-textarea { + display: block; + width: 408px; + height: 260px; + font-family: "sans serif", tahoma, verdana, helvetica; + font-size: 12px; + border: 1px solid $inputBorderColor; + + &:focus { + border-color: $inputFocusBorderColor; + outline: none; + } + } + + .ke-select { + display: -moz-inline-stack; + display: inline-block; + vertical-align: middle; + zoom: 1; + *display: inline; + width: auto; + border: 1px solid $inputBorderColor; + height: $inputHeight; + } + .ke-form { + margin: 0; + padding: 0; + } + + .ke-input-number { + width: 50px; + } + + .ke-input-checkbox { + position: relative; + top:6px; + } + + textarea { + display: block; + overflow: auto; + padding: 0; + resize: none; + + &:focus { + outline: none; + } + } + + .ke-input-text { + display: inline-block !important; + max-width: 400px; + height: $inputHeight; + line-height: $inputHeight; + border:1px solid $inputBorderColor; + font-size: 14px; + margin: 0; + outline: 0; + padding: 0px 10px; + *display: inline; + + &:focus { + border-color: $inputFocusBorderColor; + } + } + + .ke-input-color { + border: $editorBorderStyle; + background-color: #FFFFFF; + font-size: 12px; + width: 60px; + height: 30px; + line-height: 30px; + padding-left: 5px; + overflow: hidden; + cursor: pointer; + display: -moz-inline-stack; + display: inline-block; + vertical-align: middle; + zoom: 1; + *display: inline; + } + + .ke-upload-area { + position: relative; + overflow: hidden; + margin: 0; + padding: 0; + top:-1px; + position: relative; + *height: 25px; + + .ke-upload-file { + position: absolute; + font-size: 60px; + top: 0; + right: 0; + padding: 0; + margin: 0; + z-index: 811212; + border: 0 none; + opacity: 0; + cursor: pointer; + width: 62px; + height: 30px; + filter: alpha(opacity=0); + + } + + .ke-button-common { + top: -1px; + } + .ke-button { + padding: 8px 15px; + } + } + + .ke-dialog-content-inner { + padding: 10px 20px 0px 20px; + + .ke-dialog-row { + border:1px solid #FFFFFF; + margin-bottom: 10px; + overflow: hidden; + + .row-left { + float: left; + height: 30px; + line-height: 30px; + width: 60px; + text-align: right; + } + .row-right { + float: left; + text-align: left; + + .ke-inline-block { + @include ke-inline-block; + + .ke-upload-button { + position: relative; + top: -1px; + } + } + + label { + cursor: pointer; + display: -moz-inline-stack; + display: inline-block; + vertical-align: middle; + text-align: right; + zoom: 1; + *display: inline; + + img { + display: -moz-inline-stack; + display: inline-block; + vertical-align: middle; + zoom: 1; + *display: inline; + } + } + } + + + } //end ke-dialog-row + + //百度地图样式 + .ke-header { + height: 30px; + line-height: 30px; + + .ke-input-text { + height: 22px; + line-height: 22px; + } + .ke-button { + padding: 3px 10px; + } + .checkbox { + margin-left:10px; + } + } + + /** + tabs + */ + .ke-tabs { + font: 12px/1 "sans serif", tahoma, verdana, helvetica; + border-bottom: $editorBorderStyle; + margin-bottom: 20px; + + .ke-tabs-ul { + list-style: none outside none; + margin: 0; + padding: 0; + + .ke-tabs-li { + position: relative; + margin: 0 2px -1px 0; + padding: 0 20px; + float: left; + line-height: 25px; + text-align: center; + color: #337ab7; + cursor: pointer; + } + .ke-tabs-li-selected { + background-color: #FFF; + border: $editorBorderStyle; + border-bottom: 1px solid #FFF; + color: #555555; + cursor: default; + border-top-left-radius: 3px; + border-top-right-radius: 3px; + } + + .ke-tabs-li-on { + background-color: #FFF; + color: #000; + } + } //end ul + } //end tabs + + } //end ke-dialog-content-inner + + + } // end ke-dialog-body + + .ke-dialog-loading { + position: absolute; + top: 0; + left: 1px; + z-index: 1; + text-align: center; + + .ke-dialog-loading-content { + background: url("../common/loading.gif") no-repeat center; + color: #666; + font-size: 14px; + font-weight: bold; + height: 31px; + line-height: 31px; + padding-left: 36px; + } + } //end ke-dialog-loading + + } //end ke-content + + .ke-dialog-footer { + font: 12px/1 "sans serif", tahoma, verdana, helvetica; + text-align: right; + padding: 0 15px 5px 0; + background-color: #FFF; + height: 40px; + + .ke-dialog-yes { + margin: 5px; + } + + .ke-dialog-no { + margin: 5px 10px 5px 5px; + } + } // ke-dialog-footer + + .ke-button-common { + display: inline-block; + text-align: center; + background: none; + border: none; + padding: 0; + cursor: pointer; + } + + .ke-button-outer { + background-position: 0 -25px; + padding: 0; + display: -moz-inline-stack; + display: inline-block; + vertical-align: middle; + zoom: 1; + *display: inline; + } + + .ke-button { + color: #333; + font-size: 12px; + border: 1px solid #e6e6e6; + background-color: #e6e6e6; + padding: 7px 10px; + margin-top: -4px; + color: #444; + text-decoration: none; + transition: background-color .3s ease-out, border-color .3s ease-out; + + &:hover { + border: $editorBorderStyle; + background-color: #e1e1e1; + } + } + + .ke-dialog-btn { + font-size: 12px; + margin: 5px; + background: #2e8ded; + color: #fff !important; + padding: 8px 12px; + display: inline-block; + border-radius: 2px; + cursor: pointer; + text-decoration: none; + transition: .3s ease-out; + + &:hover { + filter: alpha(opacity=80); + box-shadow: none; + box-shadow: none; + opacity: .8; + } + } + + +} //dialog end + +//.ke-dialog-preview { +// margin: 5px; +//} + + +//.ke-plugin-plainpaste-textarea, +//.ke-plugin-wordpaste-iframe { +// display: block; +// width: 408px; +// height: 260px; +// font-family: "sans serif", tahoma, verdana, helvetica; +// font-size: 12px; +// border-color: #848484 #E0E0E0 #E0E0E0 #848484; +// border-style: solid; +// border-width: 1px; +//} + + diff --git a/tools/NKeditor/themes/common/dialog-title-bg.png b/tools/NKeditor/themes/common/dialog-title-bg.png new file mode 100644 index 00000000..f744f267 Binary files /dev/null and b/tools/NKeditor/themes/common/dialog-title-bg.png differ diff --git a/tools/NKeditor/themes/common/flash.gif b/tools/NKeditor/themes/common/flash.gif new file mode 100644 index 00000000..2cb12b28 Binary files /dev/null and b/tools/NKeditor/themes/common/flash.gif differ diff --git a/tools/NKeditor/themes/common/flash.png b/tools/NKeditor/themes/common/flash.png new file mode 100644 index 00000000..cc3be67c Binary files /dev/null and b/tools/NKeditor/themes/common/flash.png differ diff --git a/tools/NKeditor/themes/common/flash.svg b/tools/NKeditor/themes/common/flash.svg new file mode 100644 index 00000000..31750f27 --- /dev/null +++ b/tools/NKeditor/themes/common/flash.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/tools/NKeditor/themes/common/icons-all.gif b/tools/NKeditor/themes/common/icons-all.gif new file mode 100644 index 00000000..21915e59 Binary files /dev/null and b/tools/NKeditor/themes/common/icons-all.gif differ diff --git a/tools/NKeditor/themes/common/loading.gif b/tools/NKeditor/themes/common/loading.gif new file mode 100644 index 00000000..c69e9372 Binary files /dev/null and b/tools/NKeditor/themes/common/loading.gif differ diff --git a/tools/NKeditor/themes/common/media.gif b/tools/NKeditor/themes/common/media.gif new file mode 100644 index 00000000..e1c0e30a Binary files /dev/null and b/tools/NKeditor/themes/common/media.gif differ diff --git a/tools/NKeditor/themes/common/play.png b/tools/NKeditor/themes/common/play.png new file mode 100644 index 00000000..7899c5a4 Binary files /dev/null and b/tools/NKeditor/themes/common/play.png differ diff --git a/tools/NKeditor/themes/common/play.svg b/tools/NKeditor/themes/common/play.svg new file mode 100644 index 00000000..8d5cd9a9 --- /dev/null +++ b/tools/NKeditor/themes/common/play.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/tools/NKeditor/themes/common/rm.gif b/tools/NKeditor/themes/common/rm.gif new file mode 100644 index 00000000..d013d551 Binary files /dev/null and b/tools/NKeditor/themes/common/rm.gif differ diff --git a/tools/NKeditor/themes/default/editor.css b/tools/NKeditor/themes/default/editor.css new file mode 100644 index 00000000..8518512e --- /dev/null +++ b/tools/NKeditor/themes/default/editor.css @@ -0,0 +1,1398 @@ +/* common */ +.ke-animated { + animation: zoomIn; + animation-duration: 0.3s; + animation-fill-mode: both; } + +@keyframes zoomIn { + from { + opacity: 0; + transform: scale3d(0.3, 0.3, 0.3); } + 50% { + opacity: 1; } } + +.ke-inline-block { + display: -moz-inline-stack; + display: inline-block; + vertical-align: middle; + zoom: 1; + *display: inline; +} + +.ke-clearfix { + zoom: 1; +} + +.ke-clearfix:after { + content: "."; + display: block; + clear: both; + font-size: 0; + height: 0; + line-height: 0; + visibility: hidden; +} + +.ke-shadow { + box-shadow: 1px 1px 3px #A0A0A0; + -moz-box-shadow: 1px 1px 3px #A0A0A0; + -webkit-box-shadow: 1px 1px 3px #A0A0A0; + filter: progid:DXImageTransform.Microsoft.Shadow(color='#A0A0A0', Direction=135, Strength=3); + background-color: #F0F0EE; +} + +.ke-menu a, +.ke-menu a:hover, +.ke-dialog a, +.ke-dialog a:hover { + color: #337FE5; + text-decoration: none; +} + +/* icons */ +.ke-icon-source { + background-position: 0px 0px; + width: 16px; + height: 16px; +} + +.ke-icon-preview { + background-position: 0px -16px; + width: 16px; + height: 16px; +} + +.ke-icon-print { + background-position: 0px -32px; + width: 16px; + height: 16px; +} + +.ke-icon-undo { + background-position: 0px -48px; + width: 16px; + height: 16px; +} + +.ke-icon-redo { + background-position: 0px -64px; + width: 16px; + height: 16px; +} + +.ke-icon-cut { + background-position: 0px -80px; + width: 16px; + height: 16px; +} + +.ke-icon-copy { + background-position: 0px -96px; + width: 16px; + height: 16px; +} + +.ke-icon-paste { + background-position: 0px -112px; + width: 16px; + height: 16px; +} + +.ke-icon-selectall { + background-position: 0px -128px; + width: 16px; + height: 16px; +} + +.ke-icon-justifyleft { + background-position: 0px -144px; + width: 16px; + height: 16px; +} + +.ke-icon-justifycenter { + background-position: 0px -160px; + width: 16px; + height: 16px; +} + +.ke-icon-justifyright { + background-position: 0px -176px; + width: 16px; + height: 16px; +} + +.ke-icon-justifyfull { + background-position: 0px -192px; + width: 16px; + height: 16px; +} + +.ke-icon-insertorderedlist { + background-position: 0px -208px; + width: 16px; + height: 16px; +} + +.ke-icon-insertunorderedlist { + background-position: 0px -224px; + width: 16px; + height: 16px; +} + +.ke-icon-indent { + background-position: 0px -240px; + width: 16px; + height: 16px; +} + +.ke-icon-outdent { + background-position: 0px -256px; + width: 16px; + height: 16px; +} + +.ke-icon-subscript { + background-position: 0px -272px; + width: 16px; + height: 16px; +} + +.ke-icon-superscript { + background-position: 0px -288px; + width: 16px; + height: 16px; +} + +.ke-icon-date { + background-position: 0px -304px; + width: 25px; + height: 16px; +} + +.ke-icon-time { + background-position: 0px -320px; + width: 25px; + height: 16px; +} + +.ke-icon-formatblock { + background-position: 0px -336px; + width: 25px; + height: 16px; +} + +.ke-icon-fontname { + background-position: 0px -352px; + width: 21px; + height: 16px; +} + +.ke-icon-fontsize { + background-position: 0px -368px; + width: 23px; + height: 16px; +} + +.ke-icon-forecolor { + background-position: 0px -384px; + width: 20px; + height: 16px; +} + +.ke-icon-hilitecolor { + background-position: 0px -400px; + width: 23px; + height: 16px; +} + +.ke-icon-bold { + background-position: 0px -416px; + width: 16px; + height: 16px; +} + +.ke-icon-italic { + background-position: 0px -432px; + width: 16px; + height: 16px; +} + +.ke-icon-underline { + background-position: 0px -448px; + width: 16px; + height: 16px; +} + +.ke-icon-strikethrough { + background-position: 0px -464px; + width: 16px; + height: 16px; +} + +.ke-icon-removeformat { + background-position: 0px -480px; + width: 16px; + height: 16px; +} + +.ke-icon-image { + background-position: 0px -496px; + width: 16px; + height: 16px; +} + +.ke-icon-flash { + background-position: 0px -512px; + width: 16px; + height: 16px; +} + +.ke-icon-media { + background-position: 0px -528px; + width: 16px; + height: 16px; +} + +.ke-icon-div { + background-position: 0px -544px; + width: 16px; + height: 16px; +} + +.ke-icon-formula { + background-position: 0px -576px; + width: 16px; + height: 16px; +} + +.ke-icon-hr { + background-position: 0px -592px; + width: 16px; + height: 16px; +} + +.ke-icon-emoticons { + background-position: 0px -608px; + width: 16px; + height: 16px; +} + +.ke-icon-link { + background-position: 0px -624px; + width: 16px; + height: 16px; +} + +.ke-icon-unlink { + background-position: 0px -640px; + width: 16px; + height: 16px; +} + +.ke-icon-fullscreen { + background-position: 0px -656px; + width: 16px; + height: 16px; +} + +.ke-icon-about { + background-position: 0px -672px; + width: 16px; + height: 16px; +} + +.ke-icon-plainpaste { + background-position: 0px -704px; + width: 16px; + height: 16px; +} + +.ke-icon-wordpaste { + background-position: 0px -720px; + width: 16px; + height: 16px; +} + +.ke-icon-table { + background-position: 0px -784px; + width: 16px; + height: 16px; +} + +.ke-icon-tablemenu { + background-position: 0px -768px; + width: 16px; + height: 16px; +} + +.ke-icon-tableinsert { + background-position: 0px -784px; + width: 16px; + height: 16px; +} + +.ke-icon-tabledelete { + background-position: 0px -800px; + width: 16px; + height: 16px; +} + +.ke-icon-tablecolinsertleft { + background-position: 0px -816px; + width: 16px; + height: 16px; +} + +.ke-icon-tablecolinsertright { + background-position: 0px -832px; + width: 16px; + height: 16px; +} + +.ke-icon-tablerowinsertabove { + background-position: 0px -848px; + width: 16px; + height: 16px; +} + +.ke-icon-tablerowinsertbelow { + background-position: 0px -864px; + width: 16px; + height: 16px; +} + +.ke-icon-tablecoldelete { + background-position: 0px -880px; + width: 16px; + height: 16px; +} + +.ke-icon-tablerowdelete { + background-position: 0px -896px; + width: 16px; + height: 16px; +} + +.ke-icon-tablecellprop { + background-position: 0px -912px; + width: 16px; + height: 16px; +} + +.ke-icon-tableprop { + background-position: 0px -928px; + width: 16px; + height: 16px; +} + +.ke-icon-checked { + background-position: 0px -944px; + width: 16px; + height: 16px; +} + +.ke-icon-code { + background-position: 0px -960px; + width: 16px; + height: 16px; +} + +.ke-icon-map { + background-position: 0px -976px; + width: 16px; + height: 16px; +} + +.ke-icon-baidumap { + background-position: 0px -976px; + width: 16px; + height: 16px; +} + +.ke-icon-lineheight { + background-position: 0px -992px; + width: 16px; + height: 16px; +} + +.ke-icon-clearhtml { + background-position: 0px -1008px; + width: 16px; + height: 16px; +} + +.ke-icon-pagebreak { + background-position: 0px -1024px; + width: 16px; + height: 16px; +} + +.ke-icon-insertfile { + background-position: 0px -1040px; + width: 16px; + height: 16px; +} + +.ke-icon-quickformat { + background-position: 0px -1056px; + width: 16px; + height: 16px; +} + +.ke-icon-template { + background-position: 0px -1072px; + width: 16px; + height: 16px; +} + +.ke-icon-tablecellsplit { + background-position: 0px -1088px; + width: 16px; + height: 16px; +} + +.ke-icon-tablerowmerge { + background-position: 0px -1104px; + width: 16px; + height: 16px; +} + +.ke-icon-tablerowsplit { + background-position: 0px -1120px; + width: 16px; + height: 16px; +} + +.ke-icon-tablecolmerge { + background-position: 0px -1136px; + width: 16px; + height: 16px; +} + +.ke-icon-tablecolsplit { + background-position: 0px -1152px; + width: 16px; + height: 16px; +} + +.ke-icon-anchor { + background-position: 0px -1168px; + width: 16px; + height: 16px; +} + +.ke-icon-search { + background-position: 0px -1184px; + width: 16px; + height: 16px; +} + +.ke-icon-new { + background-position: 0px -1200px; + width: 16px; + height: 16px; +} + +.ke-icon-specialchar { + background-position: 0px -1216px; + width: 16px; + height: 16px; +} + +.ke-icon-multiimage { + background-position: 0px -1232px; + width: 16px; + height: 16px; +} + +.ke-icon-graft { + background: url("images/scrawl.png") !important; + width: 16px; + height: 16px; +} + +/* container */ +.ke-container { + display: block; + border: 1px solid #CCCCCC; + background-color: #FFF; + overflow: hidden; + margin: 0; + padding: 0; +} + +/* toolbar */ +.ke-toolbar { + border-bottom: 1px solid #CCC; + background-color: #FFFFFF; + padding: 2px 5px; + text-align: left; + overflow: hidden; + zoom: 1; +} + +.ke-toolbar-icon { + background-repeat: no-repeat; + font-size: 0; + line-height: 0; + overflow: hidden; + display: block; +} + +.ke-toolbar-icon-url { + background-image: url(images/default.png); +} + +.ke-toolbar .ke-outline { + border: 1px solid #F0F0EE; + margin: 1px; + padding: 1px 2px; + font-size: 0; + line-height: 0; + cursor: pointer; + display: block; + float: left; +} + +.ke-toolbar .ke-on { + border: 1px solid #5690D2; +} + +.ke-toolbar .ke-selected { + border: 1px solid #5690D2; + background-color: #E9EFF6; +} + +.ke-toolbar .ke-disabled { + cursor: default; +} + +.ke-toolbar .ke-separator { + height: 16px; + margin: 2px 3px; + border-left: 1px solid #A0A0A0; + border-right: 1px solid #FFFFFF; + border-top: 0; + border-bottom: 0; + width: 0; + font-size: 0; + line-height: 0; + overflow: hidden; + display: block; + float: left; +} + +.ke-toolbar .ke-hr { + overflow: hidden; + height: 1px; + clear: both; +} + +/* edit */ +.ke-edit { + padding: 0; +} + +.ke-edit-iframe, +.ke-edit-textarea { + border: 0; + margin: 0; + padding: 0; + overflow: auto; +} + +.ke-edit-textarea { + font: 12px/1.5 "Consolas", "Monaco", "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; + color: #000; + overflow: auto; + resize: none; +} + +.ke-edit-textarea:focus { + outline: none; +} + +/* statusbar */ +.ke-statusbar { + position: relative; + background-color: #F0F0EE; + border-top: 1px solid #CCCCCC; + font-size: 0; + line-height: 0; + *height: 12px; + overflow: hidden; + text-align: center; + cursor: s-resize; +} + +.ke-statusbar-center-icon { + background-position: -0px -754px; + width: 15px; + height: 11px; + background-image: url(images/default.png); +} + +.ke-statusbar-right-icon { + position: absolute; + right: 0; + bottom: 0; + cursor: se-resize; + background-position: -5px -741px; + width: 11px; + height: 11px; + background-image: url(images/default.png); +} + +/* menu */ +.ke-menu { + border: 1px solid #A0A0A0; + background-color: #F1F1F1; + color: #222222; + padding: 2px; + font-family: "sans serif", tahoma, verdana, helvetica; + font-size: 12px; + text-align: left; + overflow: hidden; +} + +.ke-menu-item { + border: 1px solid #F1F1F1; + background-color: #F1F1F1; + color: #222222; + height: 24px; + overflow: hidden; + cursor: pointer; +} + +.ke-menu-item-on { + border: 1px solid #5690D2; + background-color: #E9EFF6; +} + +.ke-menu-item-left { + width: 27px; + text-align: center; + overflow: hidden; +} + +.ke-menu-item-center { + width: 0; + height: 24px; + border-left: 1px solid #E3E3E3; + border-right: 1px solid #FFFFFF; + border-top: 0; + border-bottom: 0; +} + +.ke-menu-item-center-on { + border-left: 1px solid #E9EFF6; + border-right: 1px solid #E9EFF6; +} + +.ke-menu-item-right { + border: 0; + padding: 0 0 0 5px; + line-height: 24px; + text-align: left; + overflow: hidden; +} + +.ke-menu-separator { + margin: 2px 0; + height: 0; + overflow: hidden; + border-top: 1px solid #CCCCCC; + border-bottom: 1px solid #FFFFFF; + border-left: 0; + border-right: 0; +} + +/* colorpicker */ +.ke-colorpicker { + border: 1px solid #A0A0A0; + background-color: #F1F1F1; + color: #222222; + padding: 2px; +} + +.ke-colorpicker-table { + border: 0; + margin: 0; + padding: 0; + border-collapse: separate; +} + +.ke-colorpicker-cell { + font-size: 0; + line-height: 0; + border: 1px solid #F0F0EE; + cursor: pointer; + margin: 3px; + padding: 0; +} + +.ke-colorpicker-cell-top { + font-family: "sans serif", tahoma, verdana, helvetica; + font-size: 12px; + line-height: 24px; + border: 1px solid #F0F0EE; + cursor: pointer; + margin: 0; + padding: 0; + text-align: center; +} + +.ke-colorpicker-cell-on { + border: 1px solid #5690D2; +} + +.ke-colorpicker-cell-selected { + border: 1px solid #2446AB; +} + +.ke-colorpicker-cell-color { + width: 14px; + height: 14px; + margin: 3px; + padding: 0; + border: 0; +} + +/* dialog */ +.ke-dialog { + position: absolute; + margin: 0; + padding: 0; +} + +.ke-dialog .ke-header { + width: 100%; + margin-bottom: 10px; +} + +.ke-dialog .ke-header .ke-left { + float: left; +} + +.ke-dialog .ke-header .ke-right { + float: right; +} + +.ke-dialog .ke-header label { + margin-right: 0; + cursor: pointer; + font-weight: normal; + display: inline; + vertical-align: top; +} + +.ke-dialog-content { + background-color: #FFF; + width: 100%; + height: 100%; + color: #333; + outline: 0; +} + +.ke-dialog-header { + border: 0; + margin: 0; + font-weight: bold; + font-size: 14px; + background: #F8F8F8; + border-bottom: 1px solid #eeeeee; + height: 30px; + line-height: 30px; + padding: 0px 10px; + text-align: left; + color: #222; + cursor: move; + border-top-left-radius: 6px; + border-top-right-radius: 6px; + +} + +.ke-dialog-icon-close { + display: block; + background: url(images/default.png) no-repeat scroll 0px -688px; + width: 16px; + height: 16px; + position: absolute; + right: 6px; + top: 8px; + cursor: pointer; +} + +.ke-dialog-body { + font: 12px/1.5 "sans serif", tahoma, verdana, helvetica; + text-align: left; + overflow: hidden; + width: 100%; +} + +.ke-dialog-body textarea { + display: block; + overflow: auto; + padding: 0; + resize: none; +} + +.ke-dialog-body textarea:focus, +.ke-dialog-body input:focus, +.ke-dialog-body select:focus { + outline: none; +} + +.ke-dialog-body label { + margin-right: 10px; + cursor: pointer; + display: -moz-inline-stack; + display: inline-block; + vertical-align: middle; + text-align: right; + zoom: 1; + *display: inline; +} + +.ke-dialog-body img { + display: -moz-inline-stack; + display: inline-block; + vertical-align: middle; + zoom: 1; + *display: inline; +} + +.ke-dialog-body select { + display: -moz-inline-stack; + display: inline-block; + vertical-align: middle; + zoom: 1; + *display: inline; + width: auto; +} + +.ke-dialog-body .ke-textarea { + display: block; + width: 408px; + height: 260px; + font-family: "sans serif", tahoma, verdana, helvetica; + font-size: 12px; + border-color: #848484 #E0E0E0 #E0E0E0 #848484; + border-style: solid; + border-width: 1px; +} + +.ke-dialog-body .ke-form { + margin: 0; + padding: 0; +} + +.ke-dialog-loading { + position: absolute; + top: 0; + left: 1px; + z-index: 1; + text-align: center; +} + +.ke-dialog-loading-content { + background: url("../common/loading.gif") no-repeat; + color: #666; + font-size: 14px; + font-weight: bold; + height: 31px; + line-height: 31px; + padding-left: 36px; +} + +.ke-dialog-row { + margin-bottom: 10px; +} + +.ke-dialog-footer { + font: 12px/1 "sans serif", tahoma, verdana, helvetica; + text-align: right; + padding: 0 15px 5px 0; + background-color: #FFF; + border-radius: 6px; + height: 45px; +} + +.ke-dialog-preview, +.ke-dialog-yes { + margin: 5px; +} + +.ke-dialog-no { + margin: 5px 10px 5px 5px; +} + +.ke-dialog-mask { + background-color: #FFF; + filter: alpha(opacity=50); + opacity: 0.5; +} + +.ke-button-common { + display: inline-block; + text-align: center; + background: none; + border: none; + padding: 0; + cursor: pointer; +} + +.ke-button-outer { + background-position: 0 -25px; + padding: 0; + display: -moz-inline-stack; + display: inline-block; + vertical-align: middle; + zoom: 1; + *display: inline; +} + +.ke-button { + color: #333; + font-size: 12px; + border: 1px solid #e6e6e6; + background-color: #e6e6e6; + padding: 5px 10px; + margin-top: -2px; + color: #444; + text-decoration: none; + transition: background-color .3s ease-out, border-color .3s ease-out; +} + +.ke-button:hover { + border: 1px solid #d1d1d1; + background-color: #d1d1d1; +} + +.ke-dialog-btn { + font-size: 12px; + margin: 5px; + background: #2e8ded; + color: #fff !important; + padding: 8px 12px; + display: inline-block; + border-radius: 2px; + cursor: pointer; + text-decoration: none; + transition: .3s ease-out; +} + +.ke-dialog-btn:hover { + filter: alpha(opacity=80); + box-shadow: none; + box-shadow: none; + opacity: .8; +} + +/* inputbox */ +.ke-input-text { + display: inline-block !important; + width: 400px; + border: 1px solid #cccccc; + height: 20px; + line-height: 18px; + font-size: 14px; + padding: 3px; + margin: 0; + outline: 0; + *display: inline; +} + +.ke-input-text:focus { + border-color: #66afe9; + box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075), 0 0 8px rgba(102, 175, 233, .6); +} + +.ke-input-number { + width: 50px; +} + +.ke-input-color { + border: 1px solid #A0A0A0; + background-color: #FFFFFF; + font-size: 12px; + width: 60px; + height: 20px; + line-height: 20px; + padding-left: 5px; + overflow: hidden; + cursor: pointer; + display: -moz-inline-stack; + display: inline-block; + vertical-align: middle; + zoom: 1; + *display: inline; +} + +.ke-upload-button { + position: relative; + top: -1px; +} + +.ke-upload-area { + position: relative; + overflow: hidden; + margin: 0; + padding: 0; + *height: 25px; +} + +.ke-upload-area .ke-upload-file { + position: absolute; + font-size: 60px; + top: 0; + right: 0; + padding: 0; + margin: 0; + z-index: 811212; + border: 0 none; + opacity: 0; + cursor: pointer; + width: 50px; + height: 30px; + filter: alpha(opacity=0); +} + +.ke-upload-area .ke-button { + padding: 6px 15px; +} + +/* tabs */ +.ke-tabs { + font: 12px/1 "sans serif", tahoma, verdana, helvetica; + border-bottom: 1px solid #cccccc; + padding-left: 5px; + margin-bottom: 20px; +} + +.ke-tabs-ul { + list-style-image: none; + list-style-position: outside; + list-style-type: none; + margin: 0; + padding: 0; +} + +.ke-tabs-li { + position: relative; + + margin: 0 2px -1px 0; + padding: 0 20px; + float: left; + line-height: 25px; + text-align: center; + color: #337ab7; + cursor: pointer; +} + +.ke-tabs-li-selected { + background-color: #FFF; + border: 1px solid #cccccc; + border-bottom: 1px solid #FFF; + color: #555555; + cursor: default; + border-top-left-radius: 3px; + border-top-right-radius: 3px; +} + +.ke-tabs-li-on { + background-color: #FFF; + color: #000; +} + +/* progressbar */ +.ke-progressbar { + position: relative; + margin: 0; + padding: 0; +} + +.ke-progressbar-bar { + border: 1px solid #6FA5DB; + width: 80px; + height: 5px; + margin: 10px 10px 0 10px; + padding: 0; +} + +.ke-progressbar-bar-inner { + width: 0; + height: 5px; + background-color: #6FA5DB; + overflow: hidden; + margin: 0; + padding: 0; +} + +.ke-progressbar-percent { + position: absolute; + top: 0; + left: 40%; + display: none; +} + +/* swfupload */ +.ke-swfupload-top { + position: relative; + margin-bottom: 10px; + _width: 608px; +} + +.ke-swfupload-button { + height: 23px; + line-height: 23px; +} + +.ke-swfupload-desc { + padding: 0 10px; + height: 23px; + line-height: 23px; +} + +.ke-swfupload-startupload { + position: absolute; + top: 0; + right: 0; +} + +.ke-swfupload-body { + overflow: scroll; + background-color: #FFFFFF; + border-color: #848484 #E0E0E0 #E0E0E0 #848484; + border-style: solid; + border-width: 1px; + width: auto; + height: 370px; + padding: 5px; +} + +.ke-swfupload-body .ke-item { + width: 100px; + margin: 5px; +} + +.ke-swfupload-body .ke-photo { + position: relative; + border: 1px solid #DDDDDD; + background-color: #FFFFFF; + padding: 10px; +} + +.ke-swfupload-body .ke-delete { + display: block; + background: url(images/default.png) no-repeat scroll 0px -688px; + width: 16px; + height: 16px; + position: absolute; + right: 0; + top: 0; + cursor: pointer; +} + +.ke-swfupload-body .ke-status { + position: absolute; + left: 0; + bottom: 5px; + width: 100px; + height: 17px; +} + +.ke-swfupload-body .ke-message { + width: 100px; + text-align: center; + overflow: hidden; + height: 17px; +} + +.ke-swfupload-body .ke-error { + color: red; +} + +.ke-swfupload-body .ke-name { + width: 100px; + text-align: center; + overflow: hidden; + height: 16px; +} + +.ke-swfupload-body .ke-on { + border: 1px solid #5690D2; + background-color: #E9EFF6; +} + +/* emoticons */ +.ke-plugin-emoticons { + position: relative; +} + +.ke-plugin-emoticons .ke-preview { + position: absolute; + text-align: center; + margin: 2px; + padding: 10px; + top: 0; + border: 1px solid #A0A0A0; + background-color: #FFFFFF; + display: none; +} + +.ke-plugin-emoticons .ke-preview-img { + border: 0; + margin: 0; + padding: 0; +} + +.ke-plugin-emoticons .ke-table { + border: 0; + margin: 0; + padding: 0; + border-collapse: separate; +} + +.ke-plugin-emoticons .ke-cell { + margin: 0; + padding: 1px; + border: 1px solid #F0F0EE; + cursor: pointer; +} + +.ke-plugin-emoticons .ke-on { + border: 1px solid #5690D2; + background-color: #E9EFF6; +} + +.ke-plugin-emoticons .ke-img { + display: block; + background-repeat: no-repeat; + overflow: hidden; + margin: 2px; + width: 24px; + height: 24px; + margin: 0; + padding: 0; + border: 0; +} + +.ke-plugin-emoticons .ke-page { + text-align: right; + margin: 5px; + padding: 0; + border: 0; + font: 12px/1 "sans serif", tahoma, verdana, helvetica; + color: #333; + text-decoration: none; +} + +.ke-plugin-plainpaste-textarea, +.ke-plugin-wordpaste-iframe { + display: block; + width: 408px; + height: 260px; + font-family: "sans serif", tahoma, verdana, helvetica; + font-size: 12px; + border-color: #848484 #E0E0E0 #E0E0E0 #848484; + border-style: solid; + border-width: 1px; +} + +/* filemanager */ +.ke-plugin-filemanager-header { + width: 100%; + margin-bottom: 10px; +} + +.ke-plugin-filemanager-header .ke-left { + float: left; +} + +.ke-plugin-filemanager-header .ke-right { + float: right; +} + +.ke-plugin-filemanager-body { + overflow: scroll; + background-color: #FFFFFF; + border-color: #848484 #E0E0E0 #E0E0E0 #848484; + border-style: solid; + border-width: 1px; + width: auto; + height: 370px; + padding: 5px; +} + +.ke-plugin-filemanager-body .ke-item { + width: 100px; + margin: 5px; +} + +.ke-plugin-filemanager-body .ke-photo { + border: 1px solid #DDDDDD; + background-color: #FFFFFF; + padding: 10px; +} + +.ke-plugin-filemanager-body .ke-name { + width: 100px; + text-align: center; + overflow: hidden; + height: 16px; +} + +.ke-plugin-filemanager-body .ke-on { + border: 1px solid #5690D2; + background-color: #E9EFF6; +} + +.ke-plugin-filemanager-body .ke-table { + width: 95%; + border: 0; + margin: 0; + padding: 0; + border-collapse: separate; +} + +.ke-plugin-filemanager-body .ke-table .ke-cell { + margin: 0; + padding: 0; + border: 0; +} + +.ke-plugin-filemanager-body .ke-table .ke-name { + width: 55%; + text-align: left; +} + +.ke-plugin-filemanager-body .ke-table .ke-size { + width: 15%; + text-align: left; +} + +.ke-plugin-filemanager-body .ke-table .ke-datetime { + width: 30%; + text-align: center; +} + +.ke-dialog-content-inner { + padding: 10px 20px; +} +.ke-dialog-content-inner .row-left { + float: left; +} +.ke-dialog-content-inner .row-right { + float: left; +} +.ke-dialog-default { + box-shadow: 0 5px 15px rgba(0, 0, 0, .2) !important; + border: 1px solid #999 !important; + border: 1px solid rgba(0, 0, 0, .2) !important; + border-radius: 6px; + outline: 0; + zoom: 1; + overflow: hidden; +} diff --git a/tools/NKeditor/themes/default/editor.min.css b/tools/NKeditor/themes/default/editor.min.css new file mode 100644 index 00000000..cb8de2db --- /dev/null +++ b/tools/NKeditor/themes/default/editor.min.css @@ -0,0 +1 @@ +.ke-animated{animation:zoomIn;animation-duration:.3s;animation-fill-mode:both}@keyframes zoomIn{from{opacity:0;transform:scale3d(.3,.3,.3)}50%{opacity:1}}.ke-inline-block{display:-moz-inline-stack;display:inline-block;vertical-align:middle;zoom:1}.ke-clearfix{zoom:1}.ke-clearfix:after{content:".";display:block;clear:both;font-size:0;height:0;line-height:0;visibility:hidden}.ke-shadow{box-shadow:1px 1px 3px #a0a0a0;-moz-box-shadow:1px 1px 3px #a0a0a0;-webkit-box-shadow:1px 1px 3px #a0a0a0;background-color:#f0f0ee}.ke-dialog a,.ke-dialog a:hover,.ke-menu a,.ke-menu a:hover{color:#337fe5;text-decoration:none}.ke-icon-source{background-position:0 0;width:16px;height:16px}.ke-icon-preview{background-position:0 -16px;width:16px;height:16px}.ke-icon-print{background-position:0 -32px;width:16px;height:16px}.ke-icon-undo{background-position:0 -48px;width:16px;height:16px}.ke-icon-redo{background-position:0 -64px;width:16px;height:16px}.ke-icon-cut{background-position:0 -80px;width:16px;height:16px}.ke-icon-copy{background-position:0 -96px;width:16px;height:16px}.ke-icon-paste{background-position:0 -112px;width:16px;height:16px}.ke-icon-selectall{background-position:0 -128px;width:16px;height:16px}.ke-icon-justifyleft{background-position:0 -144px;width:16px;height:16px}.ke-icon-justifycenter{background-position:0 -160px;width:16px;height:16px}.ke-icon-justifyright{background-position:0 -176px;width:16px;height:16px}.ke-icon-justifyfull{background-position:0 -192px;width:16px;height:16px}.ke-icon-insertorderedlist{background-position:0 -208px;width:16px;height:16px}.ke-icon-insertunorderedlist{background-position:0 -224px;width:16px;height:16px}.ke-icon-indent{background-position:0 -240px;width:16px;height:16px}.ke-icon-outdent{background-position:0 -256px;width:16px;height:16px}.ke-icon-subscript{background-position:0 -272px;width:16px;height:16px}.ke-icon-superscript{background-position:0 -288px;width:16px;height:16px}.ke-icon-date{background-position:0 -304px;width:25px;height:16px}.ke-icon-time{background-position:0 -320px;width:25px;height:16px}.ke-icon-formatblock{background-position:0 -336px;width:25px;height:16px}.ke-icon-fontname{background-position:0 -352px;width:21px;height:16px}.ke-icon-fontsize{background-position:0 -368px;width:23px;height:16px}.ke-icon-forecolor{background-position:0 -384px;width:20px;height:16px}.ke-icon-hilitecolor{background-position:0 -400px;width:23px;height:16px}.ke-icon-bold{background-position:0 -416px;width:16px;height:16px}.ke-icon-italic{background-position:0 -432px;width:16px;height:16px}.ke-icon-underline{background-position:0 -448px;width:16px;height:16px}.ke-icon-strikethrough{background-position:0 -464px;width:16px;height:16px}.ke-icon-removeformat{background-position:0 -480px;width:16px;height:16px}.ke-icon-image{background-position:0 -496px;width:16px;height:16px}.ke-icon-flash{background-position:0 -512px;width:16px;height:16px}.ke-icon-media{background-position:0 -528px;width:16px;height:16px}.ke-icon-div{background-position:0 -544px;width:16px;height:16px}.ke-icon-formula{background-position:0 -576px;width:16px;height:16px}.ke-icon-hr{background-position:0 -592px;width:16px;height:16px}.ke-icon-emoticons{background-position:0 -608px;width:16px;height:16px}.ke-icon-link{background-position:0 -624px;width:16px;height:16px}.ke-icon-unlink{background-position:0 -640px;width:16px;height:16px}.ke-icon-fullscreen{background-position:0 -656px;width:16px;height:16px}.ke-icon-about{background-position:0 -672px;width:16px;height:16px}.ke-icon-plainpaste{background-position:0 -704px;width:16px;height:16px}.ke-icon-wordpaste{background-position:0 -720px;width:16px;height:16px}.ke-icon-table{background-position:0 -784px;width:16px;height:16px}.ke-icon-tablemenu{background-position:0 -768px;width:16px;height:16px}.ke-icon-tableinsert{background-position:0 -784px;width:16px;height:16px}.ke-icon-tabledelete{background-position:0 -800px;width:16px;height:16px}.ke-icon-tablecolinsertleft{background-position:0 -816px;width:16px;height:16px}.ke-icon-tablecolinsertright{background-position:0 -832px;width:16px;height:16px}.ke-icon-tablerowinsertabove{background-position:0 -848px;width:16px;height:16px}.ke-icon-tablerowinsertbelow{background-position:0 -864px;width:16px;height:16px}.ke-icon-tablecoldelete{background-position:0 -880px;width:16px;height:16px}.ke-icon-tablerowdelete{background-position:0 -896px;width:16px;height:16px}.ke-icon-tablecellprop{background-position:0 -912px;width:16px;height:16px}.ke-icon-tableprop{background-position:0 -928px;width:16px;height:16px}.ke-icon-checked{background-position:0 -944px;width:16px;height:16px}.ke-icon-code{background-position:0 -960px;width:16px;height:16px}.ke-icon-map{background-position:0 -976px;width:16px;height:16px}.ke-icon-baidumap{background-position:0 -976px;width:16px;height:16px}.ke-icon-lineheight{background-position:0 -992px;width:16px;height:16px}.ke-icon-clearhtml{background-position:0 -1008px;width:16px;height:16px}.ke-icon-pagebreak{background-position:0 -1024px;width:16px;height:16px}.ke-icon-insertfile{background-position:0 -1040px;width:16px;height:16px}.ke-icon-quickformat{background-position:0 -1056px;width:16px;height:16px}.ke-icon-template{background-position:0 -1072px;width:16px;height:16px}.ke-icon-tablecellsplit{background-position:0 -1088px;width:16px;height:16px}.ke-icon-tablerowmerge{background-position:0 -1104px;width:16px;height:16px}.ke-icon-tablerowsplit{background-position:0 -1120px;width:16px;height:16px}.ke-icon-tablecolmerge{background-position:0 -1136px;width:16px;height:16px}.ke-icon-tablecolsplit{background-position:0 -1152px;width:16px;height:16px}.ke-icon-anchor{background-position:0 -1168px;width:16px;height:16px}.ke-icon-search{background-position:0 -1184px;width:16px;height:16px}.ke-icon-new{background-position:0 -1200px;width:16px;height:16px}.ke-icon-specialchar{background-position:0 -1216px;width:16px;height:16px}.ke-icon-multiimage{background-position:0 -1232px;width:16px;height:16px}.ke-icon-graft{background:url(images/scrawl.png)!important;width:16px;height:16px}.ke-container{display:block;border:1px solid #ccc;background-color:#fff;overflow:hidden;margin:0;padding:0}.ke-toolbar{border-bottom:1px solid #ccc;background-color:#fff;padding:2px 5px;text-align:left;overflow:hidden;zoom:1}.ke-toolbar-icon{background-repeat:no-repeat;font-size:0;line-height:0;overflow:hidden;display:block}.ke-toolbar-icon-url{background-image:url(images/default.png)}.ke-toolbar .ke-outline{border:1px solid #f0f0ee;margin:1px;padding:1px 2px;font-size:0;line-height:0;cursor:pointer;display:block;float:left}.ke-toolbar .ke-on{border:1px solid #5690d2}.ke-toolbar .ke-selected{border:1px solid #5690d2;background-color:#e9eff6}.ke-toolbar .ke-disabled{cursor:default}.ke-toolbar .ke-separator{height:16px;margin:2px 3px;border-left:1px solid #a0a0a0;border-right:1px solid #fff;border-top:0;border-bottom:0;width:0;font-size:0;line-height:0;overflow:hidden;display:block;float:left}.ke-toolbar .ke-hr{overflow:hidden;height:1px;clear:both}.ke-edit{padding:0}.ke-edit-iframe,.ke-edit-textarea{border:0;margin:0;padding:0;overflow:auto}.ke-edit-textarea{font:12px/1.5 Consolas,Monaco,"Bitstream Vera Sans Mono","Courier New",Courier,monospace;color:#000;overflow:auto;resize:none}.ke-edit-textarea:focus{outline:0}.ke-statusbar{position:relative;background-color:#f0f0ee;border-top:1px solid #ccc;font-size:0;line-height:0;overflow:hidden;text-align:center;cursor:s-resize}.ke-statusbar-center-icon{background-position:0 -754px;width:15px;height:11px;background-image:url(images/default.png)}.ke-statusbar-right-icon{position:absolute;right:0;bottom:0;cursor:se-resize;background-position:-5px -741px;width:11px;height:11px;background-image:url(images/default.png)}.ke-menu{border:1px solid #a0a0a0;background-color:#f1f1f1;color:#222;padding:2px;font-family:"sans serif",tahoma,verdana,helvetica;font-size:12px;text-align:left;overflow:hidden}.ke-menu-item{border:1px solid #f1f1f1;background-color:#f1f1f1;color:#222;height:24px;overflow:hidden;cursor:pointer}.ke-menu-item-on{border:1px solid #5690d2;background-color:#e9eff6}.ke-menu-item-left{width:27px;text-align:center;overflow:hidden}.ke-menu-item-center{width:0;height:24px;border-left:1px solid #e3e3e3;border-right:1px solid #fff;border-top:0;border-bottom:0}.ke-menu-item-center-on{border-left:1px solid #e9eff6;border-right:1px solid #e9eff6}.ke-menu-item-right{border:0;padding:0 0 0 5px;line-height:24px;text-align:left;overflow:hidden}.ke-menu-separator{margin:2px 0;height:0;overflow:hidden;border-top:1px solid #ccc;border-bottom:1px solid #fff;border-left:0;border-right:0}.ke-colorpicker{border:1px solid #a0a0a0;background-color:#f1f1f1;color:#222;padding:2px}.ke-colorpicker-table{border:0;margin:0;padding:0;border-collapse:separate}.ke-colorpicker-cell{font-size:0;line-height:0;border:1px solid #f0f0ee;cursor:pointer;margin:3px;padding:0}.ke-colorpicker-cell-top{font-family:"sans serif",tahoma,verdana,helvetica;font-size:12px;line-height:24px;border:1px solid #f0f0ee;cursor:pointer;margin:0;padding:0;text-align:center}.ke-colorpicker-cell-on{border:1px solid #5690d2}.ke-colorpicker-cell-selected{border:1px solid #2446ab}.ke-colorpicker-cell-color{width:14px;height:14px;margin:3px;padding:0;border:0}.ke-dialog{position:absolute;margin:0;padding:0}.ke-dialog .ke-header{width:100%;margin-bottom:10px}.ke-dialog .ke-header .ke-left{float:left}.ke-dialog .ke-header .ke-right{float:right}.ke-dialog .ke-header label{margin-right:0;cursor:pointer;font-weight:400;display:inline;vertical-align:top}.ke-dialog-content{background-color:#fff;width:100%;height:100%;color:#333;outline:0}.ke-dialog-header{border:0;margin:0;font-weight:700;font-size:14px;background:#f8f8f8;border-bottom:1px solid #eee;height:30px;line-height:30px;padding:0 10px;text-align:left;color:#222;cursor:move;border-top-left-radius:6px;border-top-right-radius:6px}.ke-dialog-icon-close{display:block;background:url(images/default.png) no-repeat scroll 0 -688px;width:16px;height:16px;position:absolute;right:6px;top:8px;cursor:pointer}.ke-dialog-body{font:12px/1.5 "sans serif",tahoma,verdana,helvetica;text-align:left;overflow:hidden;width:100%}.ke-dialog-body textarea{display:block;overflow:auto;padding:0;resize:none}.ke-dialog-body input:focus,.ke-dialog-body select:focus,.ke-dialog-body textarea:focus{outline:0}.ke-dialog-body label{margin-right:10px;cursor:pointer;display:-moz-inline-stack;display:inline-block;vertical-align:middle;text-align:right;zoom:1}.ke-dialog-body img{display:-moz-inline-stack;display:inline-block;vertical-align:middle;zoom:1}.ke-dialog-body select{display:-moz-inline-stack;display:inline-block;vertical-align:middle;zoom:1;width:auto}.ke-dialog-body .ke-textarea{display:block;width:408px;height:260px;font-family:"sans serif",tahoma,verdana,helvetica;font-size:12px;border-color:#848484 #e0e0e0 #e0e0e0 #848484;border-style:solid;border-width:1px}.ke-dialog-body .ke-form{margin:0;padding:0}.ke-dialog-loading{position:absolute;top:0;left:1px;z-index:1;text-align:center}.ke-dialog-loading-content{background:url(../common/loading.gif) no-repeat;color:#666;font-size:14px;font-weight:700;height:31px;line-height:31px;padding-left:36px}.ke-dialog-row{margin-bottom:10px}.ke-dialog-footer{font:12px/1 "sans serif",tahoma,verdana,helvetica;text-align:right;padding:0 15px 5px 0;background-color:#fff;border-radius:6px;height:45px}.ke-dialog-preview,.ke-dialog-yes{margin:5px}.ke-dialog-no{margin:5px 10px 5px 5px}.ke-dialog-mask{background-color:#fff;opacity:.5}.ke-button-common{display:inline-block;text-align:center;background:0 0;border:none;padding:0;cursor:pointer}.ke-button-outer{background-position:0 -25px;padding:0;display:-moz-inline-stack;display:inline-block;vertical-align:middle;zoom:1}.ke-button{color:#333;font-size:12px;border:1px solid #e6e6e6;background-color:#e6e6e6;padding:5px 10px;margin-top:-2px;color:#444;text-decoration:none;transition:background-color .3s ease-out,border-color .3s ease-out}.ke-button:hover{border:1px solid #d1d1d1;background-color:#d1d1d1}.ke-dialog-btn{font-size:12px;margin:5px;background:#2e8ded;color:#fff!important;padding:8px 12px;display:inline-block;border-radius:2px;cursor:pointer;text-decoration:none;transition:.3s ease-out}.ke-dialog-btn:hover{box-shadow:none;box-shadow:none;opacity:.8}.ke-input-text{display:inline-block!important;width:400px;border:1px solid #ccc;height:20px;line-height:18px;font-size:14px;padding:3px;margin:0;outline:0}.ke-input-text:focus{border-color:#66afe9;box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 8px rgba(102,175,233,.6)}.ke-input-number{width:50px}.ke-input-color{border:1px solid #a0a0a0;background-color:#fff;font-size:12px;width:60px;height:20px;line-height:20px;padding-left:5px;overflow:hidden;cursor:pointer;display:-moz-inline-stack;display:inline-block;vertical-align:middle;zoom:1}.ke-upload-button{position:relative;top:-1px}.ke-upload-area{position:relative;overflow:hidden;margin:0;padding:0}.ke-upload-area .ke-upload-file{position:absolute;font-size:60px;top:0;right:0;padding:0;margin:0;z-index:811212;border:0 none;opacity:0;cursor:pointer;width:50px;height:30px}.ke-upload-area .ke-button{padding:6px 15px}.ke-tabs{font:12px/1 "sans serif",tahoma,verdana,helvetica;border-bottom:1px solid #ccc;padding-left:5px;margin-bottom:20px}.ke-tabs-ul{list-style-image:none;list-style-position:outside;list-style-type:none;margin:0;padding:0}.ke-tabs-li{position:relative;margin:0 2px -1px 0;padding:0 20px;float:left;line-height:25px;text-align:center;color:#337ab7;cursor:pointer}.ke-tabs-li-selected{background-color:#fff;border:1px solid #ccc;border-bottom:1px solid #fff;color:#555;cursor:default;border-top-left-radius:3px;border-top-right-radius:3px}.ke-tabs-li-on{background-color:#fff;color:#000}.ke-progressbar{position:relative;margin:0;padding:0}.ke-progressbar-bar{border:1px solid #6fa5db;width:80px;height:5px;margin:10px 10px 0 10px;padding:0}.ke-progressbar-bar-inner{width:0;height:5px;background-color:#6fa5db;overflow:hidden;margin:0;padding:0}.ke-progressbar-percent{position:absolute;top:0;left:40%;display:none}.ke-swfupload-top{position:relative;margin-bottom:10px}.ke-swfupload-button{height:23px;line-height:23px}.ke-swfupload-desc{padding:0 10px;height:23px;line-height:23px}.ke-swfupload-startupload{position:absolute;top:0;right:0}.ke-swfupload-body{overflow:scroll;background-color:#fff;border-color:#848484 #e0e0e0 #e0e0e0 #848484;border-style:solid;border-width:1px;width:auto;height:370px;padding:5px}.ke-swfupload-body .ke-item{width:100px;margin:5px}.ke-swfupload-body .ke-photo{position:relative;border:1px solid #ddd;background-color:#fff;padding:10px}.ke-swfupload-body .ke-delete{display:block;background:url(images/default.png) no-repeat scroll 0 -688px;width:16px;height:16px;position:absolute;right:0;top:0;cursor:pointer}.ke-swfupload-body .ke-status{position:absolute;left:0;bottom:5px;width:100px;height:17px}.ke-swfupload-body .ke-message{width:100px;text-align:center;overflow:hidden;height:17px}.ke-swfupload-body .ke-error{color:red}.ke-swfupload-body .ke-name{width:100px;text-align:center;overflow:hidden;height:16px}.ke-swfupload-body .ke-on{border:1px solid #5690d2;background-color:#e9eff6}.ke-plugin-emoticons{position:relative}.ke-plugin-emoticons .ke-preview{position:absolute;text-align:center;margin:2px;padding:10px;top:0;border:1px solid #a0a0a0;background-color:#fff;display:none}.ke-plugin-emoticons .ke-preview-img{border:0;margin:0;padding:0}.ke-plugin-emoticons .ke-table{border:0;margin:0;padding:0;border-collapse:separate}.ke-plugin-emoticons .ke-cell{margin:0;padding:1px;border:1px solid #f0f0ee;cursor:pointer}.ke-plugin-emoticons .ke-on{border:1px solid #5690d2;background-color:#e9eff6}.ke-plugin-emoticons .ke-img{display:block;background-repeat:no-repeat;overflow:hidden;margin:2px;width:24px;height:24px;margin:0;padding:0;border:0}.ke-plugin-emoticons .ke-page{text-align:right;margin:5px;padding:0;border:0;font:12px/1 "sans serif",tahoma,verdana,helvetica;color:#333;text-decoration:none}.ke-plugin-plainpaste-textarea,.ke-plugin-wordpaste-iframe{display:block;width:408px;height:260px;font-family:"sans serif",tahoma,verdana,helvetica;font-size:12px;border-color:#848484 #e0e0e0 #e0e0e0 #848484;border-style:solid;border-width:1px}.ke-plugin-filemanager-header{width:100%;margin-bottom:10px}.ke-plugin-filemanager-header .ke-left{float:left}.ke-plugin-filemanager-header .ke-right{float:right}.ke-plugin-filemanager-body{overflow:scroll;background-color:#fff;border-color:#848484 #e0e0e0 #e0e0e0 #848484;border-style:solid;border-width:1px;width:auto;height:370px;padding:5px}.ke-plugin-filemanager-body .ke-item{width:100px;margin:5px}.ke-plugin-filemanager-body .ke-photo{border:1px solid #ddd;background-color:#fff;padding:10px}.ke-plugin-filemanager-body .ke-name{width:100px;text-align:center;overflow:hidden;height:16px}.ke-plugin-filemanager-body .ke-on{border:1px solid #5690d2;background-color:#e9eff6}.ke-plugin-filemanager-body .ke-table{width:95%;border:0;margin:0;padding:0;border-collapse:separate}.ke-plugin-filemanager-body .ke-table .ke-cell{margin:0;padding:0;border:0}.ke-plugin-filemanager-body .ke-table .ke-name{width:55%;text-align:left}.ke-plugin-filemanager-body .ke-table .ke-size{width:15%;text-align:left}.ke-plugin-filemanager-body .ke-table .ke-datetime{width:30%;text-align:center}.ke-dialog-content-inner{padding:10px 20px}.ke-dialog-content-inner .row-left{float:left}.ke-dialog-content-inner .row-right{float:left}.ke-dialog-default{box-shadow:0 5px 15px rgba(0,0,0,.2)!important;border:1px solid #999!important;border:1px solid rgba(0,0,0,.2)!important;border-radius:6px;outline:0;zoom:1;overflow:hidden} \ No newline at end of file diff --git a/tools/NKeditor/themes/default/images/background.png b/tools/NKeditor/themes/default/images/background.png new file mode 100644 index 00000000..e59bd689 Binary files /dev/null and b/tools/NKeditor/themes/default/images/background.png differ diff --git a/tools/NKeditor/themes/default/images/default.png b/tools/NKeditor/themes/default/images/default.png new file mode 100644 index 00000000..cc9e72d2 Binary files /dev/null and b/tools/NKeditor/themes/default/images/default.png differ diff --git a/tools/NKeditor/themes/default/images/scrawl.png b/tools/NKeditor/themes/default/images/scrawl.png new file mode 100644 index 00000000..58e04ec4 Binary files /dev/null and b/tools/NKeditor/themes/default/images/scrawl.png differ diff --git a/tools/NKeditor/themes/grey/editor.css b/tools/NKeditor/themes/grey/editor.css new file mode 100644 index 00000000..beb0eaea --- /dev/null +++ b/tools/NKeditor/themes/grey/editor.css @@ -0,0 +1,822 @@ +@charset "UTF-8"; +/** +公共样式 +*/ +.ke-clearfix { + zoom: 1; + clear: both; } + +.ke-clearfix:after { + content: "."; + display: block; + clear: both; + font-size: 0; + height: 0; + line-height: 0; + visibility: hidden; } + +.ke-animated { + animation: zoomIn; + animation-duration: 0.3s; + animation-fill-mode: both; } + +@keyframes zoomIn { + from { + opacity: 0; + transform: scale3d(0.3, 0.3, 0.3); } + 50% { + opacity: 1; } } +.ke-dialog-mask { + background-color: #FFF; + filter: alpha(opacity=50); + opacity: 0.5; } + +.ke-dialog-lock { + background-color: #FFF; + filter: alpha(opacity=50); + opacity: 0.5; + z-index: 811213; + left: 0; + top: 0; + position: absolute; } + +/** +编辑器样式开始 + */ +.ke-container { + display: block; + background-color: #FFF; + overflow: hidden; + margin: 0; + padding: 0; + box-shadow: 0 1px 3px rgba(0, 0, 0, 0.12), 0 1px 1px 1px rgba(0, 0, 0, 0.16); + /** + 通用样式 + */ + /** + toolbar 样式 + */ + /** + ke-edit + */ + /** + statusbar start + */ } + .ke-container .ke-shadow { + box-shadow: 1px 1px 3px #A0A0A0; + -moz-box-shadow: 1px 1px 3px #A0A0A0; + -webkit-box-shadow: 1px 1px 3px #A0A0A0; + filter: progid:DXImageTransform.Microsoft.Shadow(color='#A0A0A0', Direction=135, Strength=3); + background-color: #F0F0EE; } + .ke-container .ke-menu a, + .ke-container .ke-menu a:hover, + .ke-container .ke-dialog a, + .ke-container .ke-dialog a:hover { + color: #337FE5; + text-decoration: none; } + .ke-container .ke-toolbar { + text-align: left; + overflow: hidden; + zoom: 1; + padding: 0px 5px; } + .ke-container .ke-toolbar .ke-outline { + padding: 10px 5px; + font-size: 0; + line-height: 0; + cursor: pointer; + display: block; + float: left; + /** + * 按钮通用样式 + */ } + .ke-container .ke-toolbar .ke-outline .ke-toolbar-icon { + font-size: 0; + line-height: 0; + overflow: hidden; + display: block; + width: 16px; + height: 16px; + margin: 0px 2px; } + .ke-container .ke-toolbar .ke-on { + background: #ebebeb; } + .ke-container .ke-toolbar .ke-selected { + background-color: #ebebeb; } + .ke-container .ke-toolbar .ke-disabled { + cursor: default; } + .ke-container .ke-toolbar .ke-separator { + height: 16px; + margin: 2px 3px; + border-left: 1px solid #A0A0A0; + border-right: 1px solid #FFFFFF; + border-top: 0; + border-bottom: 0; + width: 0; + font-size: 0; + line-height: 0; + overflow: hidden; + display: block; + float: left; } + .ke-container .ke-toolbar .ke-hr { + clear: both; + height: 1px; + width: calc(100% - (2 * 2px)); + background: #ebebeb; } + .ke-container .ke-edit { + padding: 0; } + .ke-container .ke-edit .ke-edit-iframe, + .ke-container .ke-edit .ke-edit-textarea { + border: 0; + margin: 0; + padding: 0; + overflow: auto; } + .ke-container .ke-edit .ke-edit-textarea { + font: 12px/1.5 "Consolas", "Monaco", "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; + color: #000; + overflow: auto; + resize: none; } + .ke-container .ke-edit .ke-edit-textarea:focus { + outline: none; } + .ke-container .ke-statusbar { + position: relative; + background-color: #f5f5f5; + border-top: 1px solid #e1e1e1; + font-size: 0; + line-height: 0; + *height: 12px; + overflow: hidden; + text-align: center; + cursor: s-resize; + display: none; } + .ke-container .ke-statusbar .ke-statusbar-center-icon { + background-position: -0px -754px; + width: 15px; + height: 11px; } + .ke-container .ke-statusbar .ke-statusbar-right-icon { + position: absolute; + right: 0; + bottom: 0; + cursor: se-resize; + width: 11px; + height: 11px; } + +/** + menu 右键菜单 + */ +.ke-menu { + border: 1px solid #cccccc; + background-color: #f5f5f5; + color: #222222; + padding: 2px; + font-family: "sans serif", tahoma, verdana, helvetica; + font-size: 12px; + text-align: left; + overflow: hidden; + /** + 表情插件 + */ } + .ke-menu .ke-menu-item { + border: 1px solid #F1F1F1; + background-color: #F1F1F1; + color: #222222; + height: 24px; + overflow: hidden; + cursor: pointer; } + .ke-menu .ke-menu-item .ke-inline-block { + display: -moz-inline-stack; + display: inline-block; + vertical-align: middle; + zoom: 1; + *display: inline; } + .ke-menu .ke-menu-item .ke-inline-block .ke-inline-block { + display: -moz-inline-stack; + display: inline-block; + vertical-align: middle; + zoom: 1; + *display: inline; } + .ke-menu .ke-menu-item .ke-menu-item-left { + width: 27px; + text-align: center; + overflow: hidden; } + .ke-menu .ke-menu-item .ke-menu-item-center { + width: 0; + height: 24px; + border-left: 1px solid #E3E3E3; + border-right: 1px solid #FFFFFF; + border-top: 0; + border-bottom: 0; } + .ke-menu .ke-menu-item .ke-menu-item-center-on { + border-left: 1px solid #E9EFF6; + border-right: 1px solid #E9EFF6; } + .ke-menu .ke-menu-item .ke-menu-item-right { + border: 0; + padding: 0 0 0 5px; + line-height: 24px; + text-align: left; + overflow: hidden; } + .ke-menu .ke-menu-item .ke-menu-separator { + margin: 2px 0; + height: 0; + overflow: hidden; + border-top: 1px solid #e1e1e1; + border-bottom: 1px solid #FFFFFF; + border-left: 0; + border-right: 0; } + .ke-menu .ke-menu-item-on { + border: 1px solid #5690D2; + background-color: #E9EFF6; } + .ke-menu .ke-plugin-emoticons { + position: relative; } + .ke-menu .ke-plugin-emoticons .ke-preview { + position: absolute; + text-align: center; + margin: 2px; + padding: 10px; + top: 0; + border: 1px solid #A0A0A0; + background-color: #FFFFFF; + display: none; } + .ke-menu .ke-plugin-emoticons .ke-preview .ke-preview-img { + border: 0; + margin: 0; + padding: 0; } + .ke-menu .ke-plugin-emoticons .ke-table { + border: 0; + margin: 0; + padding: 0; + border-collapse: separate; } + .ke-menu .ke-plugin-emoticons .ke-table .ke-cell { + margin: 0; + padding: 1px; + border: 1px solid #f5f5f5; + cursor: pointer; } + .ke-menu .ke-plugin-emoticons .ke-table .ke-cell .ke-img { + display: block; + background-repeat: no-repeat; + overflow: hidden; + margin: 2px; + width: 24px; + height: 24px; + margin: 0; + padding: 0; + border: 0; } + .ke-menu .ke-plugin-emoticons .ke-table .ke-on { + border: 1px solid #5690D2; + background-color: #E9EFF6; } + .ke-menu .ke-plugin-emoticons .ke-page { + text-align: right; + margin: 5px; + padding: 0; + border: 0; + font: 12px/1 "sans serif", tahoma, verdana, helvetica; + color: #333; + text-decoration: none; } + +/** + colorpicker + */ +.ke-colorpicker { + border: 1px solid #A0A0A0; + background-color: #F1F1F1; + color: #222222; + padding: 2px; } + .ke-colorpicker .ke-colorpicker-table { + border: 0; + margin: 0; + padding: 0; + border-collapse: separate; } + .ke-colorpicker .ke-colorpicker-table .ke-colorpicker-cell { + font-size: 0; + line-height: 0; + border: 1px solid #F0F0EE; + cursor: pointer; + margin: 3px; + padding: 0; } + .ke-colorpicker .ke-colorpicker-table .ke-colorpicker-cell .ke-colorpicker-cell-color { + width: 14px; + height: 14px; + margin: 3px; + padding: 0; + border: 0; } + .ke-colorpicker .ke-colorpicker-table .ke-colorpicker-cell-top { + font-family: "sans serif", tahoma, verdana, helvetica; + font-size: 12px; + line-height: 24px; + border: 1px solid #F1F1F1; + cursor: pointer; + margin: 0; + padding: 0; + text-align: center; } + .ke-colorpicker .ke-colorpicker-table .ke-colorpicker-cell-on { + border: 1px solid #5690D2; } + .ke-colorpicker .ke-colorpicker-table .ke-colorpicker-cell-selected { + border: 1px solid #2446AB; } + +/** + dialog + */ +.ke-dialog { + margin: 0; + padding: 0; + border: 1px solid #cccccc; + zoom: 1; + box-shadow: 1px 1px 3px #A0A0A0; + -moz-box-shadow: 1px 1px 3px #A0A0A0; + -webkit-box-shadow: 1px 1px 3px #A0A0A0; + filter: progid:DXImageTransform.Microsoft.Shadow(color='#A0A0A0', Direction=135, Strength=3); + border-radius: 5px; + -moz-border-radius: 5px; + -webkit-border-radius: 5px; + overflow: hidden; } + .ke-dialog .ke-dialog-header { + border: 0; + margin: 0; + font-weight: bold; + font-size: 14px; + height: 30px; + line-height: 30px; + padding: 0px 10px; + text-align: left; + color: #222; + cursor: move; + border-top-left-radius: 6px; + border-top-right-radius: 6px; + border-bottom: 1px solid #c6c6c6; + background: transparent url(../common/dialog-title-bg.png) repeat-x scroll 0 0; + position: relative; + cursor: move; } + .ke-dialog .ke-dialog-header .ke-dialog-icon-close { + height: 20px; + width: 20px; + cursor: pointer; + background: url("../common/icons-all.gif") 0 -59px; + position: absolute; + right: 5px; + top: 4px; } + .ke-dialog .ke-dialog-header .ke-dialog-icon-close:hover { + background-position: 0px -89px; } + .ke-dialog .ke-dialog-content { + background-color: #FFF; + width: 100%; + height: 100%; + color: #333; + outline: 0; + zoom: 1; } + .ke-dialog .ke-dialog-content .ke-dialog-body { + font: 12px/1.5 "sans serif", tahoma, verdana, helvetica; + text-align: left; + overflow: hidden; + width: 100%; } + .ke-dialog .ke-dialog-content .ke-dialog-body .ke-textarea { + display: block; + width: 408px; + height: 260px; + font-family: "sans serif", tahoma, verdana, helvetica; + font-size: 12px; + border: 1px solid #cccccc; } + .ke-dialog .ke-dialog-content .ke-dialog-body .ke-textarea:focus { + border-color: #66afe9; + outline: none; } + .ke-dialog .ke-dialog-content .ke-dialog-body .ke-select { + display: -moz-inline-stack; + display: inline-block; + vertical-align: middle; + zoom: 1; + *display: inline; + width: auto; + border: 1px solid #cccccc; + height: 30px; } + .ke-dialog .ke-dialog-content .ke-dialog-body .ke-form { + margin: 0; + padding: 0; } + .ke-dialog .ke-dialog-content .ke-dialog-body .ke-input-number { + width: 50px; } + .ke-dialog .ke-dialog-content .ke-dialog-body .ke-input-checkbox { + position: relative; + top: 6px; } + .ke-dialog .ke-dialog-content .ke-dialog-body textarea { + display: block; + overflow: auto; + padding: 0; + resize: none; } + .ke-dialog .ke-dialog-content .ke-dialog-body textarea:focus { + outline: none; } + .ke-dialog .ke-dialog-content .ke-dialog-body .ke-input-text { + display: inline-block !important; + max-width: 400px; + height: 30px; + line-height: 30px; + border: 1px solid #cccccc; + font-size: 14px; + margin: 0; + outline: 0; + padding: 0px 10px; + *display: inline; } + .ke-dialog .ke-dialog-content .ke-dialog-body .ke-input-text:focus { + border-color: #66afe9; } + .ke-dialog .ke-dialog-content .ke-dialog-body .ke-input-color { + border: 1px solid #e1e1e1; + background-color: #FFFFFF; + font-size: 12px; + width: 60px; + height: 30px; + line-height: 30px; + padding-left: 5px; + overflow: hidden; + cursor: pointer; + display: -moz-inline-stack; + display: inline-block; + vertical-align: middle; + zoom: 1; + *display: inline; } + .ke-dialog .ke-dialog-content .ke-dialog-body .ke-upload-area { + position: relative; + overflow: hidden; + margin: 0; + padding: 0; + top: -1px; + position: relative; + *height: 25px; } + .ke-dialog .ke-dialog-content .ke-dialog-body .ke-upload-area .ke-upload-file { + position: absolute; + font-size: 60px; + top: 0; + right: 0; + padding: 0; + margin: 0; + z-index: 811212; + border: 0 none; + opacity: 0; + cursor: pointer; + width: 62px; + height: 30px; + filter: alpha(opacity=0); } + .ke-dialog .ke-dialog-content .ke-dialog-body .ke-upload-area .ke-button-common { + top: -1px; } + .ke-dialog .ke-dialog-content .ke-dialog-body .ke-upload-area .ke-button { + padding: 8px 15px; } + .ke-dialog .ke-dialog-content .ke-dialog-body .ke-dialog-content-inner { + padding: 10px 20px 0px 20px; + /** + tabs + */ } + .ke-dialog .ke-dialog-content .ke-dialog-body .ke-dialog-content-inner .ke-dialog-row { + border: 1px solid #FFFFFF; + margin-bottom: 10px; + overflow: hidden; } + .ke-dialog .ke-dialog-content .ke-dialog-body .ke-dialog-content-inner .ke-dialog-row .row-left { + float: left; + height: 30px; + line-height: 30px; + width: 60px; + text-align: right; } + .ke-dialog .ke-dialog-content .ke-dialog-body .ke-dialog-content-inner .ke-dialog-row .row-right { + float: left; + text-align: left; } + .ke-dialog .ke-dialog-content .ke-dialog-body .ke-dialog-content-inner .ke-dialog-row .row-right .ke-inline-block { + display: -moz-inline-stack; + display: inline-block; + vertical-align: middle; + zoom: 1; + *display: inline; } + .ke-dialog .ke-dialog-content .ke-dialog-body .ke-dialog-content-inner .ke-dialog-row .row-right .ke-inline-block .ke-upload-button { + position: relative; + top: -1px; } + .ke-dialog .ke-dialog-content .ke-dialog-body .ke-dialog-content-inner .ke-dialog-row .row-right label { + cursor: pointer; + display: -moz-inline-stack; + display: inline-block; + vertical-align: middle; + text-align: right; + zoom: 1; + *display: inline; } + .ke-dialog .ke-dialog-content .ke-dialog-body .ke-dialog-content-inner .ke-dialog-row .row-right label img { + display: -moz-inline-stack; + display: inline-block; + vertical-align: middle; + zoom: 1; + *display: inline; } + .ke-dialog .ke-dialog-content .ke-dialog-body .ke-dialog-content-inner .ke-header { + height: 30px; + line-height: 30px; } + .ke-dialog .ke-dialog-content .ke-dialog-body .ke-dialog-content-inner .ke-header .ke-input-text { + height: 22px; + line-height: 22px; } + .ke-dialog .ke-dialog-content .ke-dialog-body .ke-dialog-content-inner .ke-header .ke-button { + padding: 3px 10px; } + .ke-dialog .ke-dialog-content .ke-dialog-body .ke-dialog-content-inner .ke-header .checkbox { + margin-left: 10px; } + .ke-dialog .ke-dialog-content .ke-dialog-body .ke-dialog-content-inner .ke-tabs { + font: 12px/1 "sans serif", tahoma, verdana, helvetica; + border-bottom: 1px solid #e1e1e1; + margin-bottom: 20px; } + .ke-dialog .ke-dialog-content .ke-dialog-body .ke-dialog-content-inner .ke-tabs .ke-tabs-ul { + list-style: none outside none; + margin: 0; + padding: 0; } + .ke-dialog .ke-dialog-content .ke-dialog-body .ke-dialog-content-inner .ke-tabs .ke-tabs-ul .ke-tabs-li { + position: relative; + margin: 0 2px -1px 0; + padding: 0 20px; + float: left; + line-height: 25px; + text-align: center; + color: #337ab7; + cursor: pointer; } + .ke-dialog .ke-dialog-content .ke-dialog-body .ke-dialog-content-inner .ke-tabs .ke-tabs-ul .ke-tabs-li-selected { + background-color: #FFF; + border: 1px solid #e1e1e1; + border-bottom: 1px solid #FFF; + color: #555555; + cursor: default; + border-top-left-radius: 3px; + border-top-right-radius: 3px; } + .ke-dialog .ke-dialog-content .ke-dialog-body .ke-dialog-content-inner .ke-tabs .ke-tabs-ul .ke-tabs-li-on { + background-color: #FFF; + color: #000; } + .ke-dialog .ke-dialog-content .ke-dialog-loading { + position: absolute; + top: 0; + left: 1px; + z-index: 1; + text-align: center; } + .ke-dialog .ke-dialog-content .ke-dialog-loading .ke-dialog-loading-content { + background: url("../common/loading.gif") no-repeat center; + color: #666; + font-size: 14px; + font-weight: bold; + height: 31px; + line-height: 31px; + padding-left: 36px; } + .ke-dialog .ke-dialog-footer { + font: 12px/1 "sans serif", tahoma, verdana, helvetica; + text-align: right; + padding: 0 15px 5px 0; + background-color: #FFF; + height: 40px; } + .ke-dialog .ke-dialog-footer .ke-dialog-yes { + margin: 5px; } + .ke-dialog .ke-dialog-footer .ke-dialog-no { + margin: 5px 10px 5px 5px; } + .ke-dialog .ke-button-common { + display: inline-block; + text-align: center; + background: none; + border: none; + padding: 0; + cursor: pointer; } + .ke-dialog .ke-button-outer { + background-position: 0 -25px; + padding: 0; + display: -moz-inline-stack; + display: inline-block; + vertical-align: middle; + zoom: 1; + *display: inline; } + .ke-dialog .ke-button { + color: #333; + font-size: 12px; + border: 1px solid #e6e6e6; + background-color: #e6e6e6; + padding: 7px 10px; + margin-top: -4px; + color: #444; + text-decoration: none; + transition: background-color .3s ease-out, border-color .3s ease-out; } + .ke-dialog .ke-button:hover { + border: 1px solid #e1e1e1; + background-color: #e1e1e1; } + .ke-dialog .ke-dialog-btn { + font-size: 12px; + margin: 5px; + background: #2e8ded; + color: #fff !important; + padding: 8px 12px; + display: inline-block; + border-radius: 2px; + cursor: pointer; + text-decoration: none; + transition: .3s ease-out; } + .ke-dialog .ke-dialog-btn:hover { + filter: alpha(opacity=80); + box-shadow: none; + box-shadow: none; + opacity: .8; } + +.ke-container-grey .ke-toolbar { + border-top: 5px solid #8a8a8a; + box-shadow: 0 1px 3px rgba(0, 0, 0, 0.12), 0 1px 1px 1px rgba(0, 0, 0, 0.16); + background-clip: padding-box; + text-rendering: optimizelegibility; } + .ke-container-grey .ke-toolbar .ke-toolbar-icon { + *background-image: url(images/nkeditor.png); + background: url(images/nkeditor.svg) no-repeat; } + .ke-container-grey .ke-toolbar .ke-icon-source { + background-position: 0 0px; } + .ke-container-grey .ke-toolbar .ke-icon-preview { + background-position: 0 -63px; } + .ke-container-grey .ke-toolbar .ke-icon-print { + background-position: 0 -84px; } + .ke-container-grey .ke-toolbar .ke-icon-undo { + background-position: 0 -21px; } + .ke-container-grey .ke-toolbar .ke-icon-redo { + background-position: 0 -42px; } + .ke-container-grey .ke-toolbar .ke-icon-template { + background-position: 0 -105px; } + .ke-container-grey .ke-toolbar .ke-icon-cut { + background-position: 0 -147px; } + .ke-container-grey .ke-toolbar .ke-icon-copy { + background-position: 0 -168px; } + .ke-container-grey .ke-toolbar .ke-icon-paste { + background-position: 0 -189px; } + .ke-container-grey .ke-toolbar .ke-icon-selectall { + background-position: 0 -483px; } + .ke-container-grey .ke-toolbar .ke-icon-justifyleft { + background-position: 0 -252px; } + .ke-container-grey .ke-toolbar .ke-icon-justifycenter { + background-position: 0 -273px; } + .ke-container-grey .ke-toolbar .ke-icon-justifyright { + background-position: 0 -294px; } + .ke-container-grey .ke-toolbar .ke-icon-justifyfull { + background-position: 0 -315px; } + .ke-container-grey .ke-toolbar .ke-icon-insertorderedlist { + background-position: 0 -336px; } + .ke-container-grey .ke-toolbar .ke-icon-insertunorderedlist { + background-position: 0 -357px; } + .ke-container-grey .ke-toolbar .ke-icon-indent { + background-position: 0 -378px; } + .ke-container-grey .ke-toolbar .ke-icon-outdent { + background-position: 0 -399px; } + .ke-container-grey .ke-toolbar .ke-icon-subscript { + background-position: 0 -420px; } + .ke-container-grey .ke-toolbar .ke-icon-superscript { + background-position: 0 -441px; } + .ke-container-grey .ke-toolbar .ke-icon-date { + background-position: 0px -304px; + width: 25px; + height: 16px; } + .ke-container-grey .ke-toolbar .ke-icon-time { + background-position: 0px -320px; + width: 25px; + height: 16px; } + .ke-container-grey .ke-toolbar .ke-icon-formatblock { + background-position: 0 -546px; } + .ke-container-grey .ke-toolbar .ke-icon-fontname { + background-position: 0 -567px; } + .ke-container-grey .ke-toolbar .ke-icon-fontsize { + background-position: 0 -588px; } + .ke-container-grey .ke-toolbar .ke-icon-forecolor { + background-position: 0 -609px; } + .ke-container-grey .ke-toolbar .ke-icon-hilitecolor { + background-position: 0 -630px; } + .ke-container-grey .ke-toolbar .ke-icon-bold { + background-position: 0 -651px; } + .ke-container-grey .ke-toolbar .ke-icon-italic { + background-position: 0 -672px; } + .ke-container-grey .ke-toolbar .ke-icon-underline { + background-position: 0 -693px; } + .ke-container-grey .ke-toolbar .ke-icon-strikethrough { + background-position: 0 -714px; } + .ke-container-grey .ke-toolbar .ke-icon-removeformat { + background-position: 0 -756px; } + .ke-container-grey .ke-toolbar .ke-icon-image { + background-position: 0 -777px; } + .ke-container-grey .ke-toolbar .ke-icon-flash { + background-position: 0 -840px; } + .ke-container-grey .ke-toolbar .ke-icon-media { + background-position: 0 -861px; } + .ke-container-grey .ke-toolbar .ke-icon-div { + background-position: 0px -544px; + width: 16px; + height: 16px; } + .ke-container-grey .ke-toolbar .ke-icon-formula { + background-position: 0px -576px; + width: 16px; + height: 16px; } + .ke-container-grey .ke-toolbar .ke-icon-hr { + background-position: 0 -924px; } + .ke-container-grey .ke-toolbar .ke-icon-emoticons { + background-position: 0 -945px; } + .ke-container-grey .ke-toolbar .ke-icon-link { + background-position: 0 -1008px; } + .ke-container-grey .ke-toolbar .ke-icon-unlink { + background-position: 0 -1029px; } + .ke-container-grey .ke-toolbar .ke-icon-fullscreen { + background-position: 0 -525px; } + .ke-container-grey .ke-toolbar .ke-icon-about { + background-position: 0 -1092px; } + .ke-container-grey .ke-toolbar .ke-icon-quote { + background-position: 0 -1114px; } + .ke-container-grey .ke-toolbar .ke-icon-plainpaste { + background-position: 0 -210px; } + .ke-container-grey .ke-toolbar .ke-icon-wordpaste { + background-position: 0 -231px; } + .ke-container-grey .ke-toolbar .ke-icon-table { + background-position: 0px -903px; + width: 18px !important; } + .ke-container-grey .ke-toolbar .ke-icon-tablemenu { + background-position: 0px -768px; + width: 16px; + height: 16px; } + .ke-container-grey .ke-toolbar .ke-icon-code { + background-position: 0 -126px; } + .ke-container-grey .ke-toolbar .ke-icon-map { + background-position: 0px -976px; + width: 16px; + height: 16px; } + .ke-container-grey .ke-toolbar .ke-icon-baidumap { + background-position: 0 -1050px; } + .ke-container-grey .ke-toolbar .ke-icon-lineheight { + background-position: 0 -735px; } + .ke-container-grey .ke-toolbar .ke-icon-clearhtml { + background-position: 0 -462px; } + .ke-container-grey .ke-toolbar .ke-icon-pagebreak { + background-position: 0 -966px; } + .ke-container-grey .ke-toolbar .ke-icon-insertfile { + background-position: 0 -882px; } + .ke-container-grey .ke-toolbar .ke-icon-quickformat { + background-position: 0 -504px; } + .ke-container-grey .ke-toolbar .ke-icon-anchor { + background-position: 0 -987px; } + .ke-container-grey .ke-toolbar .ke-icon-search { + background-position: 0px -1184px; + width: 16px; + height: 16px; } + .ke-container-grey .ke-toolbar .ke-icon-new { + background-position: 0px -1200px; + width: 16px; + height: 16px; } + .ke-container-grey .ke-toolbar .ke-icon-specialchar { + background-position: 0px -1216px; + width: 16px; + height: 16px; } + .ke-container-grey .ke-toolbar .ke-icon-multiimage { + background-position: 0 -798px; } + .ke-container-grey .ke-toolbar .ke-icon-graft { + background-position: 0 -819px; } + +/** + menu 右键菜单 + */ +.ke-menu-grey .ke-menu-item .ke-menu-item-left { + width: 27px; + text-align: center; + overflow: hidden; } + .ke-menu-grey .ke-menu-item .ke-menu-item-left .ke-toolbar-icon { + font-size: 0; + line-height: 0; + overflow: hidden; + display: block; + width: 16px; + height: 16px; + margin: 0px 2px; + *background-image: url(images/nkeditor.png); + background: url(images/nkeditor.svg) no-repeat; } + .ke-menu-grey .ke-menu-item .ke-menu-item-left .ke-icon-tableinsert { + background-position: 0 -903px; + width: 18px !important; } + .ke-menu-grey .ke-menu-item .ke-menu-item-left .ke-icon-tabledelete { + background-position: 0 -1428px; } + .ke-menu-grey .ke-menu-item .ke-menu-item-left .ke-icon-tablecolinsertleft { + background-position: 0 -1176px; + width: 18px !important; } + .ke-menu-grey .ke-menu-item .ke-menu-item-left .ke-icon-tablecolinsertright { + background-position: 0 -1323px; + width: 18px !important; } + .ke-menu-grey .ke-menu-item .ke-menu-item-left .ke-icon-tablerowinsertabove { + background-position: 0 -1302px; + width: 22px !important; } + .ke-menu-grey .ke-menu-item .ke-menu-item-left .ke-icon-tablerowinsertbelow { + background-position: 0 -1155px; + width: 22px !important; } + .ke-menu-grey .ke-menu-item .ke-menu-item-left .ke-icon-tablecoldelete { + background-position: 0 -1239px; } + .ke-menu-grey .ke-menu-item .ke-menu-item-left .ke-icon-tablerowdelete { + background-position: 0 -1260px; } + .ke-menu-grey .ke-menu-item .ke-menu-item-left .ke-icon-tablecellprop { + background-position: 0 -1218px; } + .ke-menu-grey .ke-menu-item .ke-menu-item-left .ke-icon-tableprop { + background-position: 0 -1134px; } + .ke-menu-grey .ke-menu-item .ke-menu-item-left .ke-icon-tablecellsplit { + background-position: 0px -1088px; + width: 16px; + height: 16px; } + .ke-menu-grey .ke-menu-item .ke-menu-item-left .ke-icon-tablerowmerge { + background-position: -1px -1197px; } + .ke-menu-grey .ke-menu-item .ke-menu-item-left .ke-icon-tablerowsplit { + background-position: 0 -1344px; } + .ke-menu-grey .ke-menu-item .ke-menu-item-left .ke-icon-tablecolmerge { + background-position: -4px -1365px; } + .ke-menu-grey .ke-menu-item .ke-menu-item-left .ke-icon-tablecolsplit { + background-position: 0 -1344px; } + .ke-menu-grey .ke-menu-item .ke-menu-item-left .ke-icon-image { + background-position: 0 -777px; } + .ke-menu-grey .ke-menu-item .ke-menu-item-left .ke-icon-flash { + background-position: 0 -840px; } + .ke-menu-grey .ke-menu-item .ke-menu-item-left .ke-icon-media { + background-position: 0 -861px; } + .ke-menu-grey .ke-menu-item .ke-menu-item-left .ke-icon-link { + background-position: 0 -1008px; } + .ke-menu-grey .ke-menu-item .ke-menu-item-left .ke-icon-checked { + background-position: 0 -1407px; } + +/*# sourceMappingURL=editor.css.map */ diff --git a/tools/NKeditor/themes/grey/editor.css.map b/tools/NKeditor/themes/grey/editor.css.map new file mode 100644 index 00000000..01a6d6f6 --- /dev/null +++ b/tools/NKeditor/themes/grey/editor.css.map @@ -0,0 +1,7 @@ +{ +"version": 3, +"mappings": "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", +"sources": ["../common/common.scss","editor.scss"], +"names": [], +"file": "editor.css" +} \ No newline at end of file diff --git a/tools/NKeditor/themes/grey/editor.min.css b/tools/NKeditor/themes/grey/editor.min.css new file mode 100644 index 00000000..34fe061c --- /dev/null +++ b/tools/NKeditor/themes/grey/editor.min.css @@ -0,0 +1 @@ +@charset "UTF-8";.ke-clearfix{zoom:1;clear:both}.ke-clearfix:after{content:".";display:block;clear:both;font-size:0;height:0;line-height:0;visibility:hidden}.ke-animated{animation:zoomIn;animation-duration:.3s;animation-fill-mode:both}@keyframes zoomIn{from{opacity:0;transform:scale3d(.3,.3,.3)}50%{opacity:1}}.ke-dialog-mask{background-color:#fff;opacity:.5}.ke-dialog-lock{background-color:#fff;opacity:.5;z-index:811213;left:0;top:0;position:absolute}.ke-container{display:block;background-color:#fff;overflow:hidden;margin:0;padding:0;box-shadow:0 1px 3px rgba(0,0,0,.12),0 1px 1px 1px rgba(0,0,0,.16)}.ke-container .ke-shadow{box-shadow:1px 1px 3px #a0a0a0;-moz-box-shadow:1px 1px 3px #a0a0a0;-webkit-box-shadow:1px 1px 3px #a0a0a0;background-color:#f0f0ee}.ke-container .ke-dialog a,.ke-container .ke-dialog a:hover,.ke-container .ke-menu a,.ke-container .ke-menu a:hover{color:#337fe5;text-decoration:none}.ke-container .ke-toolbar{text-align:left;overflow:hidden;zoom:1;padding:0 5px}.ke-container .ke-toolbar .ke-outline{padding:10px 5px;font-size:0;line-height:0;cursor:pointer;display:block;float:left}.ke-container .ke-toolbar .ke-outline .ke-toolbar-icon{font-size:0;line-height:0;overflow:hidden;display:block;width:16px;height:16px;margin:0 2px}.ke-container .ke-toolbar .ke-on{background:#ebebeb}.ke-container .ke-toolbar .ke-selected{background-color:#ebebeb}.ke-container .ke-toolbar .ke-disabled{cursor:default}.ke-container .ke-toolbar .ke-separator{height:16px;margin:2px 3px;border-left:1px solid #a0a0a0;border-right:1px solid #fff;border-top:0;border-bottom:0;width:0;font-size:0;line-height:0;overflow:hidden;display:block;float:left}.ke-container .ke-toolbar .ke-hr{clear:both;height:1px;width:calc(100% - (2 * 2px));background:#ebebeb}.ke-container .ke-edit{padding:0}.ke-container .ke-edit .ke-edit-iframe,.ke-container .ke-edit .ke-edit-textarea{border:0;margin:0;padding:0;overflow:auto}.ke-container .ke-edit .ke-edit-textarea{font:12px/1.5 Consolas,Monaco,"Bitstream Vera Sans Mono","Courier New",Courier,monospace;color:#000;overflow:auto;resize:none}.ke-container .ke-edit .ke-edit-textarea:focus{outline:0}.ke-container .ke-statusbar{position:relative;background-color:#f5f5f5;border-top:1px solid #e1e1e1;font-size:0;line-height:0;overflow:hidden;text-align:center;cursor:s-resize;display:none}.ke-container .ke-statusbar .ke-statusbar-center-icon{background-position:0 -754px;width:15px;height:11px}.ke-container .ke-statusbar .ke-statusbar-right-icon{position:absolute;right:0;bottom:0;cursor:se-resize;width:11px;height:11px}.ke-menu{border:1px solid #ccc;background-color:#f5f5f5;color:#222;padding:2px;font-family:"sans serif",tahoma,verdana,helvetica;font-size:12px;text-align:left;overflow:hidden}.ke-menu .ke-menu-item{border:1px solid #f1f1f1;background-color:#f1f1f1;color:#222;height:24px;overflow:hidden;cursor:pointer}.ke-menu .ke-menu-item .ke-inline-block{display:-moz-inline-stack;display:inline-block;vertical-align:middle;zoom:1}.ke-menu .ke-menu-item .ke-inline-block .ke-inline-block{display:-moz-inline-stack;display:inline-block;vertical-align:middle;zoom:1}.ke-menu .ke-menu-item .ke-menu-item-left{width:27px;text-align:center;overflow:hidden}.ke-menu .ke-menu-item .ke-menu-item-center{width:0;height:24px;border-left:1px solid #e3e3e3;border-right:1px solid #fff;border-top:0;border-bottom:0}.ke-menu .ke-menu-item .ke-menu-item-center-on{border-left:1px solid #e9eff6;border-right:1px solid #e9eff6}.ke-menu .ke-menu-item .ke-menu-item-right{border:0;padding:0 0 0 5px;line-height:24px;text-align:left;overflow:hidden}.ke-menu .ke-menu-item .ke-menu-separator{margin:2px 0;height:0;overflow:hidden;border-top:1px solid #e1e1e1;border-bottom:1px solid #fff;border-left:0;border-right:0}.ke-menu .ke-menu-item-on{border:1px solid #5690d2;background-color:#e9eff6}.ke-menu .ke-plugin-emoticons{position:relative}.ke-menu .ke-plugin-emoticons .ke-preview{position:absolute;text-align:center;margin:2px;padding:10px;top:0;border:1px solid #a0a0a0;background-color:#fff;display:none}.ke-menu .ke-plugin-emoticons .ke-preview .ke-preview-img{border:0;margin:0;padding:0}.ke-menu .ke-plugin-emoticons .ke-table{border:0;margin:0;padding:0;border-collapse:separate}.ke-menu .ke-plugin-emoticons .ke-table .ke-cell{margin:0;padding:1px;border:1px solid #f5f5f5;cursor:pointer}.ke-menu .ke-plugin-emoticons .ke-table .ke-cell .ke-img{display:block;background-repeat:no-repeat;overflow:hidden;margin:2px;width:24px;height:24px;margin:0;padding:0;border:0}.ke-menu .ke-plugin-emoticons .ke-table .ke-on{border:1px solid #5690d2;background-color:#e9eff6}.ke-menu .ke-plugin-emoticons .ke-page{text-align:right;margin:5px;padding:0;border:0;font:12px/1 "sans serif",tahoma,verdana,helvetica;color:#333;text-decoration:none}.ke-colorpicker{border:1px solid #a0a0a0;background-color:#f1f1f1;color:#222;padding:2px}.ke-colorpicker .ke-colorpicker-table{border:0;margin:0;padding:0;border-collapse:separate}.ke-colorpicker .ke-colorpicker-table .ke-colorpicker-cell{font-size:0;line-height:0;border:1px solid #f0f0ee;cursor:pointer;margin:3px;padding:0}.ke-colorpicker .ke-colorpicker-table .ke-colorpicker-cell .ke-colorpicker-cell-color{width:14px;height:14px;margin:3px;padding:0;border:0}.ke-colorpicker .ke-colorpicker-table .ke-colorpicker-cell-top{font-family:"sans serif",tahoma,verdana,helvetica;font-size:12px;line-height:24px;border:1px solid #f1f1f1;cursor:pointer;margin:0;padding:0;text-align:center}.ke-colorpicker .ke-colorpicker-table .ke-colorpicker-cell-on{border:1px solid #5690d2}.ke-colorpicker .ke-colorpicker-table .ke-colorpicker-cell-selected{border:1px solid #2446ab}.ke-dialog{margin:0;padding:0;border:1px solid #ccc;zoom:1;box-shadow:1px 1px 3px #a0a0a0;-moz-box-shadow:1px 1px 3px #a0a0a0;-webkit-box-shadow:1px 1px 3px #a0a0a0;border-radius:5px;-moz-border-radius:5px;-webkit-border-radius:5px;overflow:hidden}.ke-dialog .ke-dialog-header{border:0;margin:0;font-weight:700;font-size:14px;height:30px;line-height:30px;padding:0 10px;text-align:left;color:#222;cursor:move;border-top-left-radius:6px;border-top-right-radius:6px;border-bottom:1px solid #c6c6c6;background:transparent url(../common/dialog-title-bg.png) repeat-x scroll 0 0;position:relative;cursor:move}.ke-dialog .ke-dialog-header .ke-dialog-icon-close{height:20px;width:20px;cursor:pointer;background:url(../common/icons-all.gif) 0 -59px;position:absolute;right:5px;top:4px}.ke-dialog .ke-dialog-header .ke-dialog-icon-close:hover{background-position:0 -89px}.ke-dialog .ke-dialog-content{background-color:#fff;width:100%;height:100%;color:#333;outline:0;zoom:1}.ke-dialog .ke-dialog-content .ke-dialog-body{font:12px/1.5 "sans serif",tahoma,verdana,helvetica;text-align:left;overflow:hidden;width:100%}.ke-dialog .ke-dialog-content .ke-dialog-body .ke-textarea{display:block;width:408px;height:260px;font-family:"sans serif",tahoma,verdana,helvetica;font-size:12px;border:1px solid #ccc}.ke-dialog .ke-dialog-content .ke-dialog-body .ke-textarea:focus{border-color:#66afe9;outline:0}.ke-dialog .ke-dialog-content .ke-dialog-body .ke-select{display:-moz-inline-stack;display:inline-block;vertical-align:middle;zoom:1;width:auto;border:1px solid #ccc;height:30px}.ke-dialog .ke-dialog-content .ke-dialog-body .ke-form{margin:0;padding:0}.ke-dialog .ke-dialog-content .ke-dialog-body .ke-input-number{width:50px}.ke-dialog .ke-dialog-content .ke-dialog-body .ke-input-checkbox{position:relative;top:6px}.ke-dialog .ke-dialog-content .ke-dialog-body textarea{display:block;overflow:auto;padding:0;resize:none}.ke-dialog .ke-dialog-content .ke-dialog-body textarea:focus{outline:0}.ke-dialog .ke-dialog-content .ke-dialog-body .ke-input-text{display:inline-block!important;max-width:400px;height:30px;line-height:30px;border:1px solid #ccc;font-size:14px;margin:0;outline:0;padding:0 10px}.ke-dialog .ke-dialog-content .ke-dialog-body .ke-input-text:focus{border-color:#66afe9}.ke-dialog .ke-dialog-content .ke-dialog-body .ke-input-color{border:1px solid #e1e1e1;background-color:#fff;font-size:12px;width:60px;height:30px;line-height:30px;padding-left:5px;overflow:hidden;cursor:pointer;display:-moz-inline-stack;display:inline-block;vertical-align:middle;zoom:1}.ke-dialog .ke-dialog-content .ke-dialog-body .ke-upload-area{position:relative;overflow:hidden;margin:0;padding:0;top:-1px;position:relative}.ke-dialog .ke-dialog-content .ke-dialog-body .ke-upload-area .ke-upload-file{position:absolute;font-size:60px;top:0;right:0;padding:0;margin:0;z-index:811212;border:0 none;opacity:0;cursor:pointer;width:62px;height:30px}.ke-dialog .ke-dialog-content .ke-dialog-body .ke-upload-area .ke-button-common{top:-1px}.ke-dialog .ke-dialog-content .ke-dialog-body .ke-upload-area .ke-button{padding:8px 15px}.ke-dialog .ke-dialog-content .ke-dialog-body .ke-dialog-content-inner{padding:10px 20px 0 20px}.ke-dialog .ke-dialog-content .ke-dialog-body .ke-dialog-content-inner .ke-dialog-row{border:1px solid #fff;margin-bottom:10px;overflow:hidden}.ke-dialog .ke-dialog-content .ke-dialog-body .ke-dialog-content-inner .ke-dialog-row .row-left{float:left;height:30px;line-height:30px;width:60px;text-align:right}.ke-dialog .ke-dialog-content .ke-dialog-body .ke-dialog-content-inner .ke-dialog-row .row-right{float:left;text-align:left}.ke-dialog .ke-dialog-content .ke-dialog-body .ke-dialog-content-inner .ke-dialog-row .row-right .ke-inline-block{display:-moz-inline-stack;display:inline-block;vertical-align:middle;zoom:1}.ke-dialog .ke-dialog-content .ke-dialog-body .ke-dialog-content-inner .ke-dialog-row .row-right .ke-inline-block .ke-upload-button{position:relative;top:-1px}.ke-dialog .ke-dialog-content .ke-dialog-body .ke-dialog-content-inner .ke-dialog-row .row-right label{cursor:pointer;display:-moz-inline-stack;display:inline-block;vertical-align:middle;text-align:right;zoom:1}.ke-dialog .ke-dialog-content .ke-dialog-body .ke-dialog-content-inner .ke-dialog-row .row-right label img{display:-moz-inline-stack;display:inline-block;vertical-align:middle;zoom:1}.ke-dialog .ke-dialog-content .ke-dialog-body .ke-dialog-content-inner .ke-header{height:30px;line-height:30px}.ke-dialog .ke-dialog-content .ke-dialog-body .ke-dialog-content-inner .ke-header .ke-input-text{height:22px;line-height:22px}.ke-dialog .ke-dialog-content .ke-dialog-body .ke-dialog-content-inner .ke-header .ke-button{padding:3px 10px}.ke-dialog .ke-dialog-content .ke-dialog-body .ke-dialog-content-inner .ke-header .checkbox{margin-left:10px}.ke-dialog .ke-dialog-content .ke-dialog-body .ke-dialog-content-inner .ke-tabs{font:12px/1 "sans serif",tahoma,verdana,helvetica;border-bottom:1px solid #e1e1e1;margin-bottom:20px}.ke-dialog .ke-dialog-content .ke-dialog-body .ke-dialog-content-inner .ke-tabs .ke-tabs-ul{list-style:none outside none;margin:0;padding:0}.ke-dialog .ke-dialog-content .ke-dialog-body .ke-dialog-content-inner .ke-tabs .ke-tabs-ul .ke-tabs-li{position:relative;margin:0 2px -1px 0;padding:0 20px;float:left;line-height:25px;text-align:center;color:#337ab7;cursor:pointer}.ke-dialog .ke-dialog-content .ke-dialog-body .ke-dialog-content-inner .ke-tabs .ke-tabs-ul .ke-tabs-li-selected{background-color:#fff;border:1px solid #e1e1e1;border-bottom:1px solid #fff;color:#555;cursor:default;border-top-left-radius:3px;border-top-right-radius:3px}.ke-dialog .ke-dialog-content .ke-dialog-body .ke-dialog-content-inner .ke-tabs .ke-tabs-ul .ke-tabs-li-on{background-color:#fff;color:#000}.ke-dialog .ke-dialog-content .ke-dialog-loading{position:absolute;top:0;left:1px;z-index:1;text-align:center}.ke-dialog .ke-dialog-content .ke-dialog-loading .ke-dialog-loading-content{background:url(../common/loading.gif) no-repeat center;color:#666;font-size:14px;font-weight:700;height:31px;line-height:31px;padding-left:36px}.ke-dialog .ke-dialog-footer{font:12px/1 "sans serif",tahoma,verdana,helvetica;text-align:right;padding:0 15px 5px 0;background-color:#fff;height:40px}.ke-dialog .ke-dialog-footer .ke-dialog-yes{margin:5px}.ke-dialog .ke-dialog-footer .ke-dialog-no{margin:5px 10px 5px 5px}.ke-dialog .ke-button-common{display:inline-block;text-align:center;background:0 0;border:none;padding:0;cursor:pointer}.ke-dialog .ke-button-outer{background-position:0 -25px;padding:0;display:-moz-inline-stack;display:inline-block;vertical-align:middle;zoom:1}.ke-dialog .ke-button{color:#333;font-size:12px;border:1px solid #e6e6e6;background-color:#e6e6e6;padding:7px 10px;margin-top:-4px;color:#444;text-decoration:none;transition:background-color .3s ease-out,border-color .3s ease-out}.ke-dialog .ke-button:hover{border:1px solid #e1e1e1;background-color:#e1e1e1}.ke-dialog .ke-dialog-btn{font-size:12px;margin:5px;background:#2e8ded;color:#fff!important;padding:8px 12px;display:inline-block;border-radius:2px;cursor:pointer;text-decoration:none;transition:.3s ease-out}.ke-dialog .ke-dialog-btn:hover{box-shadow:none;box-shadow:none;opacity:.8}.ke-container-grey .ke-toolbar{border-top:5px solid #8a8a8a;box-shadow:0 1px 3px rgba(0,0,0,.12),0 1px 1px 1px rgba(0,0,0,.16);background-clip:padding-box;text-rendering:optimizelegibility}.ke-container-grey .ke-toolbar .ke-toolbar-icon{background:url(images/nkeditor.svg) no-repeat}.ke-container-grey .ke-toolbar .ke-icon-source{background-position:0 0}.ke-container-grey .ke-toolbar .ke-icon-preview{background-position:0 -63px}.ke-container-grey .ke-toolbar .ke-icon-print{background-position:0 -84px}.ke-container-grey .ke-toolbar .ke-icon-undo{background-position:0 -21px}.ke-container-grey .ke-toolbar .ke-icon-redo{background-position:0 -42px}.ke-container-grey .ke-toolbar .ke-icon-template{background-position:0 -105px}.ke-container-grey .ke-toolbar .ke-icon-cut{background-position:0 -147px}.ke-container-grey .ke-toolbar .ke-icon-copy{background-position:0 -168px}.ke-container-grey .ke-toolbar .ke-icon-paste{background-position:0 -189px}.ke-container-grey .ke-toolbar .ke-icon-selectall{background-position:0 -483px}.ke-container-grey .ke-toolbar .ke-icon-justifyleft{background-position:0 -252px}.ke-container-grey .ke-toolbar .ke-icon-justifycenter{background-position:0 -273px}.ke-container-grey .ke-toolbar .ke-icon-justifyright{background-position:0 -294px}.ke-container-grey .ke-toolbar .ke-icon-justifyfull{background-position:0 -315px}.ke-container-grey .ke-toolbar .ke-icon-insertorderedlist{background-position:0 -336px}.ke-container-grey .ke-toolbar .ke-icon-insertunorderedlist{background-position:0 -357px}.ke-container-grey .ke-toolbar .ke-icon-indent{background-position:0 -378px}.ke-container-grey .ke-toolbar .ke-icon-outdent{background-position:0 -399px}.ke-container-grey .ke-toolbar .ke-icon-subscript{background-position:0 -420px}.ke-container-grey .ke-toolbar .ke-icon-superscript{background-position:0 -441px}.ke-container-grey .ke-toolbar .ke-icon-date{background-position:0 -304px;width:25px;height:16px}.ke-container-grey .ke-toolbar .ke-icon-time{background-position:0 -320px;width:25px;height:16px}.ke-container-grey .ke-toolbar .ke-icon-formatblock{background-position:0 -546px}.ke-container-grey .ke-toolbar .ke-icon-fontname{background-position:0 -567px}.ke-container-grey .ke-toolbar .ke-icon-fontsize{background-position:0 -588px}.ke-container-grey .ke-toolbar .ke-icon-forecolor{background-position:0 -609px}.ke-container-grey .ke-toolbar .ke-icon-hilitecolor{background-position:0 -630px}.ke-container-grey .ke-toolbar .ke-icon-bold{background-position:0 -651px}.ke-container-grey .ke-toolbar .ke-icon-italic{background-position:0 -672px}.ke-container-grey .ke-toolbar .ke-icon-underline{background-position:0 -693px}.ke-container-grey .ke-toolbar .ke-icon-strikethrough{background-position:0 -714px}.ke-container-grey .ke-toolbar .ke-icon-removeformat{background-position:0 -756px}.ke-container-grey .ke-toolbar .ke-icon-image{background-position:0 -777px}.ke-container-grey .ke-toolbar .ke-icon-flash{background-position:0 -840px}.ke-container-grey .ke-toolbar .ke-icon-media{background-position:0 -861px}.ke-container-grey .ke-toolbar .ke-icon-div{background-position:0 -544px;width:16px;height:16px}.ke-container-grey .ke-toolbar .ke-icon-formula{background-position:0 -576px;width:16px;height:16px}.ke-container-grey .ke-toolbar .ke-icon-hr{background-position:0 -924px}.ke-container-grey .ke-toolbar .ke-icon-emoticons{background-position:0 -945px}.ke-container-grey .ke-toolbar .ke-icon-link{background-position:0 -1008px}.ke-container-grey .ke-toolbar .ke-icon-unlink{background-position:0 -1029px}.ke-container-grey .ke-toolbar .ke-icon-fullscreen{background-position:0 -525px}.ke-container-grey .ke-toolbar .ke-icon-about{background-position:0 -1092px}.ke-container-grey .ke-toolbar .ke-icon-quote{background-position:0 -1114px}.ke-container-grey .ke-toolbar .ke-icon-plainpaste{background-position:0 -210px}.ke-container-grey .ke-toolbar .ke-icon-wordpaste{background-position:0 -231px}.ke-container-grey .ke-toolbar .ke-icon-table{background-position:0 -903px;width:18px!important}.ke-container-grey .ke-toolbar .ke-icon-tablemenu{background-position:0 -768px;width:16px;height:16px}.ke-container-grey .ke-toolbar .ke-icon-code{background-position:0 -126px}.ke-container-grey .ke-toolbar .ke-icon-map{background-position:0 -976px;width:16px;height:16px}.ke-container-grey .ke-toolbar .ke-icon-baidumap{background-position:0 -1050px}.ke-container-grey .ke-toolbar .ke-icon-lineheight{background-position:0 -735px}.ke-container-grey .ke-toolbar .ke-icon-clearhtml{background-position:0 -462px}.ke-container-grey .ke-toolbar .ke-icon-pagebreak{background-position:0 -966px}.ke-container-grey .ke-toolbar .ke-icon-insertfile{background-position:0 -882px}.ke-container-grey .ke-toolbar .ke-icon-quickformat{background-position:0 -504px}.ke-container-grey .ke-toolbar .ke-icon-anchor{background-position:0 -987px}.ke-container-grey .ke-toolbar .ke-icon-search{background-position:0 -1184px;width:16px;height:16px}.ke-container-grey .ke-toolbar .ke-icon-new{background-position:0 -1200px;width:16px;height:16px}.ke-container-grey .ke-toolbar .ke-icon-specialchar{background-position:0 -1216px;width:16px;height:16px}.ke-container-grey .ke-toolbar .ke-icon-multiimage{background-position:0 -798px}.ke-container-grey .ke-toolbar .ke-icon-graft{background-position:0 -819px}.ke-menu-grey .ke-menu-item .ke-menu-item-left{width:27px;text-align:center;overflow:hidden}.ke-menu-grey .ke-menu-item .ke-menu-item-left .ke-toolbar-icon{font-size:0;line-height:0;overflow:hidden;display:block;width:16px;height:16px;margin:0 2px;background:url(images/nkeditor.svg) no-repeat}.ke-menu-grey .ke-menu-item .ke-menu-item-left .ke-icon-tableinsert{background-position:0 -903px;width:18px!important}.ke-menu-grey .ke-menu-item .ke-menu-item-left .ke-icon-tabledelete{background-position:0 -1428px}.ke-menu-grey .ke-menu-item .ke-menu-item-left .ke-icon-tablecolinsertleft{background-position:0 -1176px;width:18px!important}.ke-menu-grey .ke-menu-item .ke-menu-item-left .ke-icon-tablecolinsertright{background-position:0 -1323px;width:18px!important}.ke-menu-grey .ke-menu-item .ke-menu-item-left .ke-icon-tablerowinsertabove{background-position:0 -1302px;width:22px!important}.ke-menu-grey .ke-menu-item .ke-menu-item-left .ke-icon-tablerowinsertbelow{background-position:0 -1155px;width:22px!important}.ke-menu-grey .ke-menu-item .ke-menu-item-left .ke-icon-tablecoldelete{background-position:0 -1239px}.ke-menu-grey .ke-menu-item .ke-menu-item-left .ke-icon-tablerowdelete{background-position:0 -1260px}.ke-menu-grey .ke-menu-item .ke-menu-item-left .ke-icon-tablecellprop{background-position:0 -1218px}.ke-menu-grey .ke-menu-item .ke-menu-item-left .ke-icon-tableprop{background-position:0 -1134px}.ke-menu-grey .ke-menu-item .ke-menu-item-left .ke-icon-tablecellsplit{background-position:0 -1088px;width:16px;height:16px}.ke-menu-grey .ke-menu-item .ke-menu-item-left .ke-icon-tablerowmerge{background-position:-1px -1197px}.ke-menu-grey .ke-menu-item .ke-menu-item-left .ke-icon-tablerowsplit{background-position:0 -1344px}.ke-menu-grey .ke-menu-item .ke-menu-item-left .ke-icon-tablecolmerge{background-position:-4px -1365px}.ke-menu-grey .ke-menu-item .ke-menu-item-left .ke-icon-tablecolsplit{background-position:0 -1344px}.ke-menu-grey .ke-menu-item .ke-menu-item-left .ke-icon-image{background-position:0 -777px}.ke-menu-grey .ke-menu-item .ke-menu-item-left .ke-icon-flash{background-position:0 -840px}.ke-menu-grey .ke-menu-item .ke-menu-item-left .ke-icon-media{background-position:0 -861px}.ke-menu-grey .ke-menu-item .ke-menu-item-left .ke-icon-link{background-position:0 -1008px}.ke-menu-grey .ke-menu-item .ke-menu-item-left .ke-icon-checked{background-position:0 -1407px} \ No newline at end of file diff --git a/tools/NKeditor/themes/grey/editor.scss b/tools/NKeditor/themes/grey/editor.scss new file mode 100644 index 00000000..95498397 --- /dev/null +++ b/tools/NKeditor/themes/grey/editor.scss @@ -0,0 +1,387 @@ +@import "../common/common"; + +.ke-container-grey { + .ke-toolbar { + + border-top: 5px solid #8a8a8a; + box-shadow: 0 1px 3px rgba(0, 0, 0, 0.12), 0 1px 1px 1px rgba(0, 0, 0, 0.16); + background-clip: padding-box; + text-rendering: optimizelegibility; + + .ke-toolbar-icon { + *background-image: url(images/nkeditor.png); + background: url(images/nkeditor.svg) no-repeat; + } + + .ke-icon-source { + background-position: 0 0px; + } + .ke-icon-preview { + background-position: 0 -63px; + } + .ke-icon-print { + background-position: 0 -84px; + } + .ke-icon-undo { + background-position: 0 -21px; + } + + .ke-icon-redo { + background-position: 0 -42px; + } + + .ke-icon-template { + background-position: 0 -105px; + } + + .ke-icon-cut { + background-position: 0 -147px; + } + + .ke-icon-copy { + background-position: 0 -168px; + } + + .ke-icon-paste { + background-position: 0 -189px; + } + + .ke-icon-selectall { + background-position: 0 -483px; + } + + .ke-icon-justifyleft { + background-position: 0 -252px; + } + + .ke-icon-justifycenter { + background-position: 0 -273px; + } + + .ke-icon-justifyright { + background-position: 0 -294px; + } + + .ke-icon-justifyfull { + background-position: 0 -315px; + } + + .ke-icon-insertorderedlist { + background-position: 0 -336px; + } + + .ke-icon-insertunorderedlist { + background-position: 0 -357px; + } + + .ke-icon-indent { + background-position: 0 -378px; + } + + .ke-icon-outdent { + background-position: 0 -399px; + } + + .ke-icon-subscript { + background-position: 0 -420px; + } + + .ke-icon-superscript { + background-position: 0 -441px; + } + + .ke-icon-date { + background-position: 0px -304px; + width: 25px; + height: 16px; + } + + .ke-icon-time { + background-position: 0px -320px; + width: 25px; + height: 16px; + } + + .ke-icon-formatblock { + background-position: 0 -546px; + } + + .ke-icon-fontname { + background-position: 0 -567px; + } + + .ke-icon-fontsize { + background-position: 0 -588px; + } + + .ke-icon-forecolor { + background-position: 0 -609px; + } + + .ke-icon-hilitecolor { + background-position: 0 -630px; + } + + .ke-icon-bold { + background-position: 0 -651px; + } + + .ke-icon-italic { + background-position: 0 -672px; + } + + .ke-icon-underline { + background-position: 0 -693px; + } + + .ke-icon-strikethrough { + background-position: 0 -714px; + } + + .ke-icon-removeformat { + background-position: 0 -756px; + } + + .ke-icon-image { + background-position: 0 -777px; + } + + .ke-icon-flash { + background-position: 0 -840px; + } + + .ke-icon-media { + background-position: 0 -861px; + } + + .ke-icon-div { + background-position: 0px -544px; + width: 16px; + height: 16px; + } + + .ke-icon-formula { + background-position: 0px -576px; + width: 16px; + height: 16px; + } + + .ke-icon-hr { + background-position: 0 -924px; + } + + .ke-icon-emoticons { + background-position: 0 -945px; + } + + .ke-icon-link { + background-position: 0 -1008px; + } + + .ke-icon-unlink { + background-position: 0 -1029px; + } + + .ke-icon-fullscreen { + background-position: 0 -525px; + } + + .ke-icon-about { + background-position: 0 -1092px; + } + + .ke-icon-quote { + background-position: 0 -1114px; + } + + .ke-icon-plainpaste { + background-position: 0 -210px; + } + + .ke-icon-wordpaste { + background-position: 0 -231px; + } + + .ke-icon-table { + background-position: 0px -903px; + width: 18px !important; + } + + .ke-icon-tablemenu { + background-position: 0px -768px; + width: 16px; + height: 16px; + } + + .ke-icon-code { + background-position: 0 -126px; + } + + .ke-icon-map { + background-position: 0px -976px; + width: 16px; + height: 16px; + } + + .ke-icon-baidumap { + background-position: 0 -1050px; + } + + .ke-icon-lineheight { + background-position: 0 -735px; + } + + .ke-icon-clearhtml { + background-position: 0 -462px; + } + + .ke-icon-pagebreak { + background-position: 0 -966px; + } + + .ke-icon-insertfile { + background-position: 0 -882px; + } + + .ke-icon-quickformat { + background-position: 0 -504px; + } + + .ke-icon-anchor { + background-position: 0 -987px; + } + + .ke-icon-search { + background-position: 0px -1184px; + width: 16px; + height: 16px; + } + + .ke-icon-new { + background-position: 0px -1200px; + width: 16px; + height: 16px; + } + + .ke-icon-specialchar { + background-position: 0px -1216px; + width: 16px; + height: 16px; + } + + .ke-icon-multiimage { + background-position: 0 -798px; + } + + .ke-icon-graft { + background-position: 0 -819px; + } + } +} + +/** + menu 右键菜单 + */ +.ke-menu-grey { + + .ke-menu-item { + + .ke-menu-item-left { + width: 27px; + text-align: center; + overflow: hidden; + + .ke-toolbar-icon { + @include ke-toolbar-icon; + *background-image: url(images/nkeditor.png); + background: url(images/nkeditor.svg) no-repeat; + } + + .ke-icon-tableinsert { + background-position: 0 -903px; + width: 18px !important; + } + + .ke-icon-tabledelete { + background-position: 0 -1428px; + } + + .ke-icon-tablecolinsertleft { + background-position: 0 -1176px; + width: 18px !important; + } + + .ke-icon-tablecolinsertright { + background-position: 0 -1323px; + width: 18px !important; + } + + .ke-icon-tablerowinsertabove { + background-position: 0 -1302px; + width: 22px !important; + } + + .ke-icon-tablerowinsertbelow { + background-position: 0 -1155px; + width: 22px !important; + } + + .ke-icon-tablecoldelete { + background-position: 0 -1239px; + } + + .ke-icon-tablerowdelete { + background-position: 0 -1260px; + } + + .ke-icon-tablecellprop { + background-position: 0 -1218px; + } + + .ke-icon-tableprop { + background-position: 0 -1134px; + } + .ke-icon-tablecellsplit { + background-position: 0px -1088px; + width: 16px; + height: 16px; + } + + .ke-icon-tablerowmerge { + background-position: -1px -1197px; + } + + .ke-icon-tablerowsplit { + background-position: 0 -1344px; + } + + .ke-icon-tablecolmerge { + background-position: -4px -1365px; + } + + .ke-icon-tablecolsplit { + background-position: 0 -1344px; + } + + //图片,视频右键菜单 + .ke-icon-image { + background-position: 0 -777px; + } + .ke-icon-flash { + background-position: 0 -840px; + } + .ke-icon-media { + background-position: 0 -861px; + } + .ke-icon-link { + background-position: 0 -1008px; + } + + .ke-icon-checked { + background-position: 0 -1407px; + } + + } + } +} +//menu end \ No newline at end of file diff --git a/tools/NKeditor/themes/grey/images/nkeditor.png b/tools/NKeditor/themes/grey/images/nkeditor.png new file mode 100644 index 00000000..3e12962d Binary files /dev/null and b/tools/NKeditor/themes/grey/images/nkeditor.png differ diff --git a/tools/NKeditor/themes/grey/images/nkeditor.svg b/tools/NKeditor/themes/grey/images/nkeditor.svg new file mode 100644 index 00000000..7a5b61d3 --- /dev/null +++ b/tools/NKeditor/themes/grey/images/nkeditor.svg @@ -0,0 +1,260 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tools/NKeditor/themes/primary/editor.css b/tools/NKeditor/themes/primary/editor.css new file mode 100644 index 00000000..33f3788f --- /dev/null +++ b/tools/NKeditor/themes/primary/editor.css @@ -0,0 +1,822 @@ +@charset "UTF-8"; +/** +公共样式 +*/ +.ke-clearfix { + zoom: 1; + clear: both; } + +.ke-clearfix:after { + content: "."; + display: block; + clear: both; + font-size: 0; + height: 0; + line-height: 0; + visibility: hidden; } + +.ke-animated { + animation: zoomIn; + animation-duration: 0.3s; + animation-fill-mode: both; } + +@keyframes zoomIn { + from { + opacity: 0; + transform: scale3d(0.3, 0.3, 0.3); } + 50% { + opacity: 1; } } +.ke-dialog-mask { + background-color: #FFF; + filter: alpha(opacity=50); + opacity: 0.5; } + +.ke-dialog-lock { + background-color: #FFF; + filter: alpha(opacity=50); + opacity: 0.5; + z-index: 811213; + left: 0; + top: 0; + position: absolute; } + +/** +编辑器样式开始 + */ +.ke-container { + display: block; + background-color: #FFF; + overflow: hidden; + margin: 0; + padding: 0; + box-shadow: 0 1px 3px rgba(0, 0, 0, 0.12), 0 1px 1px 1px rgba(0, 0, 0, 0.16); + /** + 通用样式 + */ + /** + toolbar 样式 + */ + /** + ke-edit + */ + /** + statusbar start + */ } + .ke-container .ke-shadow { + box-shadow: 1px 1px 3px #A0A0A0; + -moz-box-shadow: 1px 1px 3px #A0A0A0; + -webkit-box-shadow: 1px 1px 3px #A0A0A0; + filter: progid:DXImageTransform.Microsoft.Shadow(color='#A0A0A0', Direction=135, Strength=3); + background-color: #F0F0EE; } + .ke-container .ke-menu a, + .ke-container .ke-menu a:hover, + .ke-container .ke-dialog a, + .ke-container .ke-dialog a:hover { + color: #337FE5; + text-decoration: none; } + .ke-container .ke-toolbar { + text-align: left; + overflow: hidden; + zoom: 1; + padding: 0px 5px; } + .ke-container .ke-toolbar .ke-outline { + padding: 10px 5px; + font-size: 0; + line-height: 0; + cursor: pointer; + display: block; + float: left; + /** + * 按钮通用样式 + */ } + .ke-container .ke-toolbar .ke-outline .ke-toolbar-icon { + font-size: 0; + line-height: 0; + overflow: hidden; + display: block; + width: 16px; + height: 16px; + margin: 0px 2px; } + .ke-container .ke-toolbar .ke-on { + background: #ebebeb; } + .ke-container .ke-toolbar .ke-selected { + background-color: #ebebeb; } + .ke-container .ke-toolbar .ke-disabled { + cursor: default; } + .ke-container .ke-toolbar .ke-separator { + height: 16px; + margin: 2px 3px; + border-left: 1px solid #A0A0A0; + border-right: 1px solid #FFFFFF; + border-top: 0; + border-bottom: 0; + width: 0; + font-size: 0; + line-height: 0; + overflow: hidden; + display: block; + float: left; } + .ke-container .ke-toolbar .ke-hr { + clear: both; + height: 1px; + width: calc(100% - (2 * 2px)); + background: #ebebeb; } + .ke-container .ke-edit { + padding: 0; } + .ke-container .ke-edit .ke-edit-iframe, + .ke-container .ke-edit .ke-edit-textarea { + border: 0; + margin: 0; + padding: 0; + overflow: auto; } + .ke-container .ke-edit .ke-edit-textarea { + font: 12px/1.5 "Consolas", "Monaco", "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; + color: #000; + overflow: auto; + resize: none; } + .ke-container .ke-edit .ke-edit-textarea:focus { + outline: none; } + .ke-container .ke-statusbar { + position: relative; + background-color: #f5f5f5; + border-top: 1px solid #e1e1e1; + font-size: 0; + line-height: 0; + *height: 12px; + overflow: hidden; + text-align: center; + cursor: s-resize; + display: none; } + .ke-container .ke-statusbar .ke-statusbar-center-icon { + background-position: -0px -754px; + width: 15px; + height: 11px; } + .ke-container .ke-statusbar .ke-statusbar-right-icon { + position: absolute; + right: 0; + bottom: 0; + cursor: se-resize; + width: 11px; + height: 11px; } + +/** + menu 右键菜单 + */ +.ke-menu { + border: 1px solid #cccccc; + background-color: #f5f5f5; + color: #222222; + padding: 2px; + font-family: "sans serif", tahoma, verdana, helvetica; + font-size: 12px; + text-align: left; + overflow: hidden; + /** + 表情插件 + */ } + .ke-menu .ke-menu-item { + border: 1px solid #F1F1F1; + background-color: #F1F1F1; + color: #222222; + height: 24px; + overflow: hidden; + cursor: pointer; } + .ke-menu .ke-menu-item .ke-inline-block { + display: -moz-inline-stack; + display: inline-block; + vertical-align: middle; + zoom: 1; + *display: inline; } + .ke-menu .ke-menu-item .ke-inline-block .ke-inline-block { + display: -moz-inline-stack; + display: inline-block; + vertical-align: middle; + zoom: 1; + *display: inline; } + .ke-menu .ke-menu-item .ke-menu-item-left { + width: 27px; + text-align: center; + overflow: hidden; } + .ke-menu .ke-menu-item .ke-menu-item-center { + width: 0; + height: 24px; + border-left: 1px solid #E3E3E3; + border-right: 1px solid #FFFFFF; + border-top: 0; + border-bottom: 0; } + .ke-menu .ke-menu-item .ke-menu-item-center-on { + border-left: 1px solid #E9EFF6; + border-right: 1px solid #E9EFF6; } + .ke-menu .ke-menu-item .ke-menu-item-right { + border: 0; + padding: 0 0 0 5px; + line-height: 24px; + text-align: left; + overflow: hidden; } + .ke-menu .ke-menu-item .ke-menu-separator { + margin: 2px 0; + height: 0; + overflow: hidden; + border-top: 1px solid #e1e1e1; + border-bottom: 1px solid #FFFFFF; + border-left: 0; + border-right: 0; } + .ke-menu .ke-menu-item-on { + border: 1px solid #5690D2; + background-color: #E9EFF6; } + .ke-menu .ke-plugin-emoticons { + position: relative; } + .ke-menu .ke-plugin-emoticons .ke-preview { + position: absolute; + text-align: center; + margin: 2px; + padding: 10px; + top: 0; + border: 1px solid #A0A0A0; + background-color: #FFFFFF; + display: none; } + .ke-menu .ke-plugin-emoticons .ke-preview .ke-preview-img { + border: 0; + margin: 0; + padding: 0; } + .ke-menu .ke-plugin-emoticons .ke-table { + border: 0; + margin: 0; + padding: 0; + border-collapse: separate; } + .ke-menu .ke-plugin-emoticons .ke-table .ke-cell { + margin: 0; + padding: 1px; + border: 1px solid #f5f5f5; + cursor: pointer; } + .ke-menu .ke-plugin-emoticons .ke-table .ke-cell .ke-img { + display: block; + background-repeat: no-repeat; + overflow: hidden; + margin: 2px; + width: 24px; + height: 24px; + margin: 0; + padding: 0; + border: 0; } + .ke-menu .ke-plugin-emoticons .ke-table .ke-on { + border: 1px solid #5690D2; + background-color: #E9EFF6; } + .ke-menu .ke-plugin-emoticons .ke-page { + text-align: right; + margin: 5px; + padding: 0; + border: 0; + font: 12px/1 "sans serif", tahoma, verdana, helvetica; + color: #333; + text-decoration: none; } + +/** + colorpicker + */ +.ke-colorpicker { + border: 1px solid #A0A0A0; + background-color: #F1F1F1; + color: #222222; + padding: 2px; } + .ke-colorpicker .ke-colorpicker-table { + border: 0; + margin: 0; + padding: 0; + border-collapse: separate; } + .ke-colorpicker .ke-colorpicker-table .ke-colorpicker-cell { + font-size: 0; + line-height: 0; + border: 1px solid #F0F0EE; + cursor: pointer; + margin: 3px; + padding: 0; } + .ke-colorpicker .ke-colorpicker-table .ke-colorpicker-cell .ke-colorpicker-cell-color { + width: 14px; + height: 14px; + margin: 3px; + padding: 0; + border: 0; } + .ke-colorpicker .ke-colorpicker-table .ke-colorpicker-cell-top { + font-family: "sans serif", tahoma, verdana, helvetica; + font-size: 12px; + line-height: 24px; + border: 1px solid #F1F1F1; + cursor: pointer; + margin: 0; + padding: 0; + text-align: center; } + .ke-colorpicker .ke-colorpicker-table .ke-colorpicker-cell-on { + border: 1px solid #5690D2; } + .ke-colorpicker .ke-colorpicker-table .ke-colorpicker-cell-selected { + border: 1px solid #2446AB; } + +/** + dialog + */ +.ke-dialog { + margin: 0; + padding: 0; + border: 1px solid #cccccc; + zoom: 1; + box-shadow: 1px 1px 3px #A0A0A0; + -moz-box-shadow: 1px 1px 3px #A0A0A0; + -webkit-box-shadow: 1px 1px 3px #A0A0A0; + filter: progid:DXImageTransform.Microsoft.Shadow(color='#A0A0A0', Direction=135, Strength=3); + border-radius: 5px; + -moz-border-radius: 5px; + -webkit-border-radius: 5px; + overflow: hidden; } + .ke-dialog .ke-dialog-header { + border: 0; + margin: 0; + font-weight: bold; + font-size: 14px; + height: 30px; + line-height: 30px; + padding: 0px 10px; + text-align: left; + color: #222; + cursor: move; + border-top-left-radius: 6px; + border-top-right-radius: 6px; + border-bottom: 1px solid #c6c6c6; + background: transparent url(../common/dialog-title-bg.png) repeat-x scroll 0 0; + position: relative; + cursor: move; } + .ke-dialog .ke-dialog-header .ke-dialog-icon-close { + height: 20px; + width: 20px; + cursor: pointer; + background: url("../common/icons-all.gif") 0 -59px; + position: absolute; + right: 5px; + top: 4px; } + .ke-dialog .ke-dialog-header .ke-dialog-icon-close:hover { + background-position: 0px -89px; } + .ke-dialog .ke-dialog-content { + background-color: #FFF; + width: 100%; + height: 100%; + color: #333; + outline: 0; + zoom: 1; } + .ke-dialog .ke-dialog-content .ke-dialog-body { + font: 12px/1.5 "sans serif", tahoma, verdana, helvetica; + text-align: left; + overflow: hidden; + width: 100%; } + .ke-dialog .ke-dialog-content .ke-dialog-body .ke-textarea { + display: block; + width: 408px; + height: 260px; + font-family: "sans serif", tahoma, verdana, helvetica; + font-size: 12px; + border: 1px solid #cccccc; } + .ke-dialog .ke-dialog-content .ke-dialog-body .ke-textarea:focus { + border-color: #66afe9; + outline: none; } + .ke-dialog .ke-dialog-content .ke-dialog-body .ke-select { + display: -moz-inline-stack; + display: inline-block; + vertical-align: middle; + zoom: 1; + *display: inline; + width: auto; + border: 1px solid #cccccc; + height: 30px; } + .ke-dialog .ke-dialog-content .ke-dialog-body .ke-form { + margin: 0; + padding: 0; } + .ke-dialog .ke-dialog-content .ke-dialog-body .ke-input-number { + width: 50px; } + .ke-dialog .ke-dialog-content .ke-dialog-body .ke-input-checkbox { + position: relative; + top: 6px; } + .ke-dialog .ke-dialog-content .ke-dialog-body textarea { + display: block; + overflow: auto; + padding: 0; + resize: none; } + .ke-dialog .ke-dialog-content .ke-dialog-body textarea:focus { + outline: none; } + .ke-dialog .ke-dialog-content .ke-dialog-body .ke-input-text { + display: inline-block !important; + max-width: 400px; + height: 30px; + line-height: 30px; + border: 1px solid #cccccc; + font-size: 14px; + margin: 0; + outline: 0; + padding: 0px 10px; + *display: inline; } + .ke-dialog .ke-dialog-content .ke-dialog-body .ke-input-text:focus { + border-color: #66afe9; } + .ke-dialog .ke-dialog-content .ke-dialog-body .ke-input-color { + border: 1px solid #e1e1e1; + background-color: #FFFFFF; + font-size: 12px; + width: 60px; + height: 30px; + line-height: 30px; + padding-left: 5px; + overflow: hidden; + cursor: pointer; + display: -moz-inline-stack; + display: inline-block; + vertical-align: middle; + zoom: 1; + *display: inline; } + .ke-dialog .ke-dialog-content .ke-dialog-body .ke-upload-area { + position: relative; + overflow: hidden; + margin: 0; + padding: 0; + top: -1px; + position: relative; + *height: 25px; } + .ke-dialog .ke-dialog-content .ke-dialog-body .ke-upload-area .ke-upload-file { + position: absolute; + font-size: 60px; + top: 0; + right: 0; + padding: 0; + margin: 0; + z-index: 811212; + border: 0 none; + opacity: 0; + cursor: pointer; + width: 62px; + height: 30px; + filter: alpha(opacity=0); } + .ke-dialog .ke-dialog-content .ke-dialog-body .ke-upload-area .ke-button-common { + top: -1px; } + .ke-dialog .ke-dialog-content .ke-dialog-body .ke-upload-area .ke-button { + padding: 8px 15px; } + .ke-dialog .ke-dialog-content .ke-dialog-body .ke-dialog-content-inner { + padding: 10px 20px 0px 20px; + /** + tabs + */ } + .ke-dialog .ke-dialog-content .ke-dialog-body .ke-dialog-content-inner .ke-dialog-row { + border: 1px solid #FFFFFF; + margin-bottom: 10px; + overflow: hidden; } + .ke-dialog .ke-dialog-content .ke-dialog-body .ke-dialog-content-inner .ke-dialog-row .row-left { + float: left; + height: 30px; + line-height: 30px; + width: 60px; + text-align: right; } + .ke-dialog .ke-dialog-content .ke-dialog-body .ke-dialog-content-inner .ke-dialog-row .row-right { + float: left; + text-align: left; } + .ke-dialog .ke-dialog-content .ke-dialog-body .ke-dialog-content-inner .ke-dialog-row .row-right .ke-inline-block { + display: -moz-inline-stack; + display: inline-block; + vertical-align: middle; + zoom: 1; + *display: inline; } + .ke-dialog .ke-dialog-content .ke-dialog-body .ke-dialog-content-inner .ke-dialog-row .row-right .ke-inline-block .ke-upload-button { + position: relative; + top: -1px; } + .ke-dialog .ke-dialog-content .ke-dialog-body .ke-dialog-content-inner .ke-dialog-row .row-right label { + cursor: pointer; + display: -moz-inline-stack; + display: inline-block; + vertical-align: middle; + text-align: right; + zoom: 1; + *display: inline; } + .ke-dialog .ke-dialog-content .ke-dialog-body .ke-dialog-content-inner .ke-dialog-row .row-right label img { + display: -moz-inline-stack; + display: inline-block; + vertical-align: middle; + zoom: 1; + *display: inline; } + .ke-dialog .ke-dialog-content .ke-dialog-body .ke-dialog-content-inner .ke-header { + height: 30px; + line-height: 30px; } + .ke-dialog .ke-dialog-content .ke-dialog-body .ke-dialog-content-inner .ke-header .ke-input-text { + height: 22px; + line-height: 22px; } + .ke-dialog .ke-dialog-content .ke-dialog-body .ke-dialog-content-inner .ke-header .ke-button { + padding: 3px 10px; } + .ke-dialog .ke-dialog-content .ke-dialog-body .ke-dialog-content-inner .ke-header .checkbox { + margin-left: 10px; } + .ke-dialog .ke-dialog-content .ke-dialog-body .ke-dialog-content-inner .ke-tabs { + font: 12px/1 "sans serif", tahoma, verdana, helvetica; + border-bottom: 1px solid #e1e1e1; + margin-bottom: 20px; } + .ke-dialog .ke-dialog-content .ke-dialog-body .ke-dialog-content-inner .ke-tabs .ke-tabs-ul { + list-style: none outside none; + margin: 0; + padding: 0; } + .ke-dialog .ke-dialog-content .ke-dialog-body .ke-dialog-content-inner .ke-tabs .ke-tabs-ul .ke-tabs-li { + position: relative; + margin: 0 2px -1px 0; + padding: 0 20px; + float: left; + line-height: 25px; + text-align: center; + color: #337ab7; + cursor: pointer; } + .ke-dialog .ke-dialog-content .ke-dialog-body .ke-dialog-content-inner .ke-tabs .ke-tabs-ul .ke-tabs-li-selected { + background-color: #FFF; + border: 1px solid #e1e1e1; + border-bottom: 1px solid #FFF; + color: #555555; + cursor: default; + border-top-left-radius: 3px; + border-top-right-radius: 3px; } + .ke-dialog .ke-dialog-content .ke-dialog-body .ke-dialog-content-inner .ke-tabs .ke-tabs-ul .ke-tabs-li-on { + background-color: #FFF; + color: #000; } + .ke-dialog .ke-dialog-content .ke-dialog-loading { + position: absolute; + top: 0; + left: 1px; + z-index: 1; + text-align: center; } + .ke-dialog .ke-dialog-content .ke-dialog-loading .ke-dialog-loading-content { + background: url("../common/loading.gif") no-repeat center; + color: #666; + font-size: 14px; + font-weight: bold; + height: 31px; + line-height: 31px; + padding-left: 36px; } + .ke-dialog .ke-dialog-footer { + font: 12px/1 "sans serif", tahoma, verdana, helvetica; + text-align: right; + padding: 0 15px 5px 0; + background-color: #FFF; + height: 40px; } + .ke-dialog .ke-dialog-footer .ke-dialog-yes { + margin: 5px; } + .ke-dialog .ke-dialog-footer .ke-dialog-no { + margin: 5px 10px 5px 5px; } + .ke-dialog .ke-button-common { + display: inline-block; + text-align: center; + background: none; + border: none; + padding: 0; + cursor: pointer; } + .ke-dialog .ke-button-outer { + background-position: 0 -25px; + padding: 0; + display: -moz-inline-stack; + display: inline-block; + vertical-align: middle; + zoom: 1; + *display: inline; } + .ke-dialog .ke-button { + color: #333; + font-size: 12px; + border: 1px solid #e6e6e6; + background-color: #e6e6e6; + padding: 7px 10px; + margin-top: -4px; + color: #444; + text-decoration: none; + transition: background-color .3s ease-out, border-color .3s ease-out; } + .ke-dialog .ke-button:hover { + border: 1px solid #e1e1e1; + background-color: #e1e1e1; } + .ke-dialog .ke-dialog-btn { + font-size: 12px; + margin: 5px; + background: #2e8ded; + color: #fff !important; + padding: 8px 12px; + display: inline-block; + border-radius: 2px; + cursor: pointer; + text-decoration: none; + transition: .3s ease-out; } + .ke-dialog .ke-dialog-btn:hover { + filter: alpha(opacity=80); + box-shadow: none; + box-shadow: none; + opacity: .8; } + +.ke-container-primary .ke-toolbar { + border-top: 5px solid #009688; + box-shadow: 0 1px 3px rgba(0, 0, 0, 0.12), 0 1px 1px 1px rgba(0, 0, 0, 0.16); + background-clip: padding-box; + text-rendering: optimizelegibility; } + .ke-container-primary .ke-toolbar .ke-toolbar-icon { + *background-image: url(images/nkeditor.png); + background: url(images/nkeditor.svg) no-repeat; } + .ke-container-primary .ke-toolbar .ke-icon-source { + background-position: 0 0px; } + .ke-container-primary .ke-toolbar .ke-icon-preview { + background-position: 0 -63px; } + .ke-container-primary .ke-toolbar .ke-icon-print { + background-position: 0 -84px; } + .ke-container-primary .ke-toolbar .ke-icon-undo { + background-position: 0 -21px; } + .ke-container-primary .ke-toolbar .ke-icon-redo { + background-position: 0 -42px; } + .ke-container-primary .ke-toolbar .ke-icon-template { + background-position: 0 -105px; } + .ke-container-primary .ke-toolbar .ke-icon-cut { + background-position: 0 -147px; } + .ke-container-primary .ke-toolbar .ke-icon-copy { + background-position: 0 -168px; } + .ke-container-primary .ke-toolbar .ke-icon-paste { + background-position: 0 -189px; } + .ke-container-primary .ke-toolbar .ke-icon-selectall { + background-position: 0 -483px; } + .ke-container-primary .ke-toolbar .ke-icon-justifyleft { + background-position: 0 -252px; } + .ke-container-primary .ke-toolbar .ke-icon-justifycenter { + background-position: 0 -273px; } + .ke-container-primary .ke-toolbar .ke-icon-justifyright { + background-position: 0 -294px; } + .ke-container-primary .ke-toolbar .ke-icon-justifyfull { + background-position: 0 -315px; } + .ke-container-primary .ke-toolbar .ke-icon-insertorderedlist { + background-position: 0 -336px; } + .ke-container-primary .ke-toolbar .ke-icon-insertunorderedlist { + background-position: 0 -357px; } + .ke-container-primary .ke-toolbar .ke-icon-indent { + background-position: 0 -378px; } + .ke-container-primary .ke-toolbar .ke-icon-outdent { + background-position: 0 -399px; } + .ke-container-primary .ke-toolbar .ke-icon-subscript { + background-position: 0 -420px; } + .ke-container-primary .ke-toolbar .ke-icon-superscript { + background-position: 0 -441px; } + .ke-container-primary .ke-toolbar .ke-icon-date { + background-position: 0px -304px; + width: 25px; + height: 16px; } + .ke-container-primary .ke-toolbar .ke-icon-time { + background-position: 0px -320px; + width: 25px; + height: 16px; } + .ke-container-primary .ke-toolbar .ke-icon-formatblock { + background-position: 0 -546px; } + .ke-container-primary .ke-toolbar .ke-icon-fontname { + background-position: 0 -567px; } + .ke-container-primary .ke-toolbar .ke-icon-fontsize { + background-position: 0 -588px; } + .ke-container-primary .ke-toolbar .ke-icon-forecolor { + background-position: 0 -609px; } + .ke-container-primary .ke-toolbar .ke-icon-hilitecolor { + background-position: 0 -630px; } + .ke-container-primary .ke-toolbar .ke-icon-bold { + background-position: 0 -651px; } + .ke-container-primary .ke-toolbar .ke-icon-italic { + background-position: 0 -672px; } + .ke-container-primary .ke-toolbar .ke-icon-underline { + background-position: 0 -693px; } + .ke-container-primary .ke-toolbar .ke-icon-strikethrough { + background-position: 0 -714px; } + .ke-container-primary .ke-toolbar .ke-icon-removeformat { + background-position: 0 -756px; } + .ke-container-primary .ke-toolbar .ke-icon-image { + background-position: 0 -777px; } + .ke-container-primary .ke-toolbar .ke-icon-flash { + background-position: 0 -840px; } + .ke-container-primary .ke-toolbar .ke-icon-media { + background-position: 0 -861px; } + .ke-container-primary .ke-toolbar .ke-icon-div { + background-position: 0px -544px; + width: 16px; + height: 16px; } + .ke-container-primary .ke-toolbar .ke-icon-formula { + background-position: 0px -576px; + width: 16px; + height: 16px; } + .ke-container-primary .ke-toolbar .ke-icon-hr { + background-position: 0 -924px; } + .ke-container-primary .ke-toolbar .ke-icon-emoticons { + background-position: 0 -945px; } + .ke-container-primary .ke-toolbar .ke-icon-link { + background-position: 0 -1008px; } + .ke-container-primary .ke-toolbar .ke-icon-unlink { + background-position: 0 -1029px; } + .ke-container-primary .ke-toolbar .ke-icon-fullscreen { + background-position: 0 -525px; } + .ke-container-primary .ke-toolbar .ke-icon-about { + background-position: 0 -1092px; } + .ke-container-primary .ke-toolbar .ke-icon-quote { + background-position: 0 -1114px; } + .ke-container-primary .ke-toolbar .ke-icon-plainpaste { + background-position: 0 -210px; } + .ke-container-primary .ke-toolbar .ke-icon-wordpaste { + background-position: 0 -231px; } + .ke-container-primary .ke-toolbar .ke-icon-table { + background-position: 0px -903px; + width: 18px !important; } + .ke-container-primary .ke-toolbar .ke-icon-tablemenu { + background-position: 0px -768px; + width: 16px; + height: 16px; } + .ke-container-primary .ke-toolbar .ke-icon-code { + background-position: 0 -126px; } + .ke-container-primary .ke-toolbar .ke-icon-map { + background-position: 0px -976px; + width: 16px; + height: 16px; } + .ke-container-primary .ke-toolbar .ke-icon-baidumap { + background-position: 0 -1050px; } + .ke-container-primary .ke-toolbar .ke-icon-lineheight { + background-position: 0 -735px; } + .ke-container-primary .ke-toolbar .ke-icon-clearhtml { + background-position: 0 -462px; } + .ke-container-primary .ke-toolbar .ke-icon-pagebreak { + background-position: 0 -966px; } + .ke-container-primary .ke-toolbar .ke-icon-insertfile { + background-position: 0 -882px; } + .ke-container-primary .ke-toolbar .ke-icon-quickformat { + background-position: 0 -504px; } + .ke-container-primary .ke-toolbar .ke-icon-anchor { + background-position: 0 -987px; } + .ke-container-primary .ke-toolbar .ke-icon-search { + background-position: 0px -1184px; + width: 16px; + height: 16px; } + .ke-container-primary .ke-toolbar .ke-icon-new { + background-position: 0px -1200px; + width: 16px; + height: 16px; } + .ke-container-primary .ke-toolbar .ke-icon-specialchar { + background-position: 0px -1216px; + width: 16px; + height: 16px; } + .ke-container-primary .ke-toolbar .ke-icon-multiimage { + background-position: 0 -798px; } + .ke-container-primary .ke-toolbar .ke-icon-graft { + background-position: 0 -819px; } + +/** + menu 右键菜单 + */ +.ke-menu-primary .ke-menu-item .ke-menu-item-left { + width: 27px; + text-align: center; + overflow: hidden; } + .ke-menu-primary .ke-menu-item .ke-menu-item-left .ke-toolbar-icon { + font-size: 0; + line-height: 0; + overflow: hidden; + display: block; + width: 16px; + height: 16px; + margin: 0px 2px; + *background-image: url(images/nkeditor.png); + background: url(images/nkeditor.svg) no-repeat; } + .ke-menu-primary .ke-menu-item .ke-menu-item-left .ke-icon-tableinsert { + background-position: 0 -903px; + width: 18px !important; } + .ke-menu-primary .ke-menu-item .ke-menu-item-left .ke-icon-tabledelete { + background-position: 0 -1428px; } + .ke-menu-primary .ke-menu-item .ke-menu-item-left .ke-icon-tablecolinsertleft { + background-position: 0 -1176px; + width: 18px !important; } + .ke-menu-primary .ke-menu-item .ke-menu-item-left .ke-icon-tablecolinsertright { + background-position: 0 -1323px; + width: 18px !important; } + .ke-menu-primary .ke-menu-item .ke-menu-item-left .ke-icon-tablerowinsertabove { + background-position: 0 -1302px; + width: 22px !important; } + .ke-menu-primary .ke-menu-item .ke-menu-item-left .ke-icon-tablerowinsertbelow { + background-position: 0 -1155px; + width: 22px !important; } + .ke-menu-primary .ke-menu-item .ke-menu-item-left .ke-icon-tablecoldelete { + background-position: 0 -1239px; } + .ke-menu-primary .ke-menu-item .ke-menu-item-left .ke-icon-tablerowdelete { + background-position: 0 -1260px; } + .ke-menu-primary .ke-menu-item .ke-menu-item-left .ke-icon-tablecellprop { + background-position: 0 -1218px; } + .ke-menu-primary .ke-menu-item .ke-menu-item-left .ke-icon-tableprop { + background-position: 0 -1134px; } + .ke-menu-primary .ke-menu-item .ke-menu-item-left .ke-icon-tablecellsplit { + background-position: 0px -1088px; + width: 16px; + height: 16px; } + .ke-menu-primary .ke-menu-item .ke-menu-item-left .ke-icon-tablerowmerge { + background-position: -1px -1197px; } + .ke-menu-primary .ke-menu-item .ke-menu-item-left .ke-icon-tablerowsplit { + background-position: 0 -1344px; } + .ke-menu-primary .ke-menu-item .ke-menu-item-left .ke-icon-tablecolmerge { + background-position: -4px -1365px; } + .ke-menu-primary .ke-menu-item .ke-menu-item-left .ke-icon-tablecolsplit { + background-position: 0 -1344px; } + .ke-menu-primary .ke-menu-item .ke-menu-item-left .ke-icon-image { + background-position: 0 -777px; } + .ke-menu-primary .ke-menu-item .ke-menu-item-left .ke-icon-flash { + background-position: 0 -840px; } + .ke-menu-primary .ke-menu-item .ke-menu-item-left .ke-icon-media { + background-position: 0 -861px; } + .ke-menu-primary .ke-menu-item .ke-menu-item-left .ke-icon-link { + background-position: 0 -1008px; } + .ke-menu-primary .ke-menu-item .ke-menu-item-left .ke-icon-checked { + background-position: 0 -1407px; } + +/*# sourceMappingURL=editor.css.map */ diff --git a/tools/NKeditor/themes/primary/editor.css.map b/tools/NKeditor/themes/primary/editor.css.map new file mode 100644 index 00000000..268b7c79 --- /dev/null +++ b/tools/NKeditor/themes/primary/editor.css.map @@ -0,0 +1,7 @@ +{ +"version": 3, +"mappings": "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", +"sources": ["../common/common.scss","editor.scss"], +"names": [], +"file": "editor.css" +} \ No newline at end of file diff --git a/tools/NKeditor/themes/primary/editor.min.css b/tools/NKeditor/themes/primary/editor.min.css new file mode 100644 index 00000000..62d52031 --- /dev/null +++ b/tools/NKeditor/themes/primary/editor.min.css @@ -0,0 +1 @@ +@charset "UTF-8";.ke-clearfix{zoom:1;clear:both}.ke-clearfix:after{content:".";display:block;clear:both;font-size:0;height:0;line-height:0;visibility:hidden}.ke-animated{animation:zoomIn;animation-duration:.3s;animation-fill-mode:both}@keyframes zoomIn{from{opacity:0;transform:scale3d(.3,.3,.3)}50%{opacity:1}}.ke-dialog-mask{background-color:#fff;opacity:.5}.ke-dialog-lock{background-color:#fff;opacity:.5;z-index:811213;left:0;top:0;position:absolute}.ke-container{display:block;background-color:#fff;overflow:hidden;margin:0;padding:0;box-shadow:0 1px 3px rgba(0,0,0,.12),0 1px 1px 1px rgba(0,0,0,.16)}.ke-container .ke-shadow{box-shadow:1px 1px 3px #a0a0a0;-moz-box-shadow:1px 1px 3px #a0a0a0;-webkit-box-shadow:1px 1px 3px #a0a0a0;background-color:#f0f0ee}.ke-container .ke-dialog a,.ke-container .ke-dialog a:hover,.ke-container .ke-menu a,.ke-container .ke-menu a:hover{color:#337fe5;text-decoration:none}.ke-container .ke-toolbar{text-align:left;overflow:hidden;zoom:1;padding:0 5px}.ke-container .ke-toolbar .ke-outline{padding:10px 5px;font-size:0;line-height:0;cursor:pointer;display:block;float:left}.ke-container .ke-toolbar .ke-outline .ke-toolbar-icon{font-size:0;line-height:0;overflow:hidden;display:block;width:16px;height:16px;margin:0 2px}.ke-container .ke-toolbar .ke-on{background:#ebebeb}.ke-container .ke-toolbar .ke-selected{background-color:#ebebeb}.ke-container .ke-toolbar .ke-disabled{cursor:default}.ke-container .ke-toolbar .ke-separator{height:16px;margin:2px 3px;border-left:1px solid #a0a0a0;border-right:1px solid #fff;border-top:0;border-bottom:0;width:0;font-size:0;line-height:0;overflow:hidden;display:block;float:left}.ke-container .ke-toolbar .ke-hr{clear:both;height:1px;width:calc(100% - (2 * 2px));background:#ebebeb}.ke-container .ke-edit{padding:0}.ke-container .ke-edit .ke-edit-iframe,.ke-container .ke-edit .ke-edit-textarea{border:0;margin:0;padding:0;overflow:auto}.ke-container .ke-edit .ke-edit-textarea{font:12px/1.5 Consolas,Monaco,"Bitstream Vera Sans Mono","Courier New",Courier,monospace;color:#000;overflow:auto;resize:none}.ke-container .ke-edit .ke-edit-textarea:focus{outline:0}.ke-container .ke-statusbar{position:relative;background-color:#f5f5f5;border-top:1px solid #e1e1e1;font-size:0;line-height:0;overflow:hidden;text-align:center;cursor:s-resize;display:none}.ke-container .ke-statusbar .ke-statusbar-center-icon{background-position:0 -754px;width:15px;height:11px}.ke-container .ke-statusbar .ke-statusbar-right-icon{position:absolute;right:0;bottom:0;cursor:se-resize;width:11px;height:11px}.ke-menu{border:1px solid #ccc;background-color:#f5f5f5;color:#222;padding:2px;font-family:"sans serif",tahoma,verdana,helvetica;font-size:12px;text-align:left;overflow:hidden}.ke-menu .ke-menu-item{border:1px solid #f1f1f1;background-color:#f1f1f1;color:#222;height:24px;overflow:hidden;cursor:pointer}.ke-menu .ke-menu-item .ke-inline-block{display:-moz-inline-stack;display:inline-block;vertical-align:middle;zoom:1}.ke-menu .ke-menu-item .ke-inline-block .ke-inline-block{display:-moz-inline-stack;display:inline-block;vertical-align:middle;zoom:1}.ke-menu .ke-menu-item .ke-menu-item-left{width:27px;text-align:center;overflow:hidden}.ke-menu .ke-menu-item .ke-menu-item-center{width:0;height:24px;border-left:1px solid #e3e3e3;border-right:1px solid #fff;border-top:0;border-bottom:0}.ke-menu .ke-menu-item .ke-menu-item-center-on{border-left:1px solid #e9eff6;border-right:1px solid #e9eff6}.ke-menu .ke-menu-item .ke-menu-item-right{border:0;padding:0 0 0 5px;line-height:24px;text-align:left;overflow:hidden}.ke-menu .ke-menu-item .ke-menu-separator{margin:2px 0;height:0;overflow:hidden;border-top:1px solid #e1e1e1;border-bottom:1px solid #fff;border-left:0;border-right:0}.ke-menu .ke-menu-item-on{border:1px solid #5690d2;background-color:#e9eff6}.ke-menu .ke-plugin-emoticons{position:relative}.ke-menu .ke-plugin-emoticons .ke-preview{position:absolute;text-align:center;margin:2px;padding:10px;top:0;border:1px solid #a0a0a0;background-color:#fff;display:none}.ke-menu .ke-plugin-emoticons .ke-preview .ke-preview-img{border:0;margin:0;padding:0}.ke-menu .ke-plugin-emoticons .ke-table{border:0;margin:0;padding:0;border-collapse:separate}.ke-menu .ke-plugin-emoticons .ke-table .ke-cell{margin:0;padding:1px;border:1px solid #f5f5f5;cursor:pointer}.ke-menu .ke-plugin-emoticons .ke-table .ke-cell .ke-img{display:block;background-repeat:no-repeat;overflow:hidden;margin:2px;width:24px;height:24px;margin:0;padding:0;border:0}.ke-menu .ke-plugin-emoticons .ke-table .ke-on{border:1px solid #5690d2;background-color:#e9eff6}.ke-menu .ke-plugin-emoticons .ke-page{text-align:right;margin:5px;padding:0;border:0;font:12px/1 "sans serif",tahoma,verdana,helvetica;color:#333;text-decoration:none}.ke-colorpicker{border:1px solid #a0a0a0;background-color:#f1f1f1;color:#222;padding:2px}.ke-colorpicker .ke-colorpicker-table{border:0;margin:0;padding:0;border-collapse:separate}.ke-colorpicker .ke-colorpicker-table .ke-colorpicker-cell{font-size:0;line-height:0;border:1px solid #f0f0ee;cursor:pointer;margin:3px;padding:0}.ke-colorpicker .ke-colorpicker-table .ke-colorpicker-cell .ke-colorpicker-cell-color{width:14px;height:14px;margin:3px;padding:0;border:0}.ke-colorpicker .ke-colorpicker-table .ke-colorpicker-cell-top{font-family:"sans serif",tahoma,verdana,helvetica;font-size:12px;line-height:24px;border:1px solid #f1f1f1;cursor:pointer;margin:0;padding:0;text-align:center}.ke-colorpicker .ke-colorpicker-table .ke-colorpicker-cell-on{border:1px solid #5690d2}.ke-colorpicker .ke-colorpicker-table .ke-colorpicker-cell-selected{border:1px solid #2446ab}.ke-dialog{margin:0;padding:0;border:1px solid #ccc;zoom:1;box-shadow:1px 1px 3px #a0a0a0;-moz-box-shadow:1px 1px 3px #a0a0a0;-webkit-box-shadow:1px 1px 3px #a0a0a0;border-radius:5px;-moz-border-radius:5px;-webkit-border-radius:5px;overflow:hidden}.ke-dialog .ke-dialog-header{border:0;margin:0;font-weight:700;font-size:14px;height:30px;line-height:30px;padding:0 10px;text-align:left;color:#222;cursor:move;border-top-left-radius:6px;border-top-right-radius:6px;border-bottom:1px solid #c6c6c6;background:transparent url(../common/dialog-title-bg.png) repeat-x scroll 0 0;position:relative;cursor:move}.ke-dialog .ke-dialog-header .ke-dialog-icon-close{height:20px;width:20px;cursor:pointer;background:url(../common/icons-all.gif) 0 -59px;position:absolute;right:5px;top:4px}.ke-dialog .ke-dialog-header .ke-dialog-icon-close:hover{background-position:0 -89px}.ke-dialog .ke-dialog-content{background-color:#fff;width:100%;height:100%;color:#333;outline:0;zoom:1}.ke-dialog .ke-dialog-content .ke-dialog-body{font:12px/1.5 "sans serif",tahoma,verdana,helvetica;text-align:left;overflow:hidden;width:100%}.ke-dialog .ke-dialog-content .ke-dialog-body .ke-textarea{display:block;width:408px;height:260px;font-family:"sans serif",tahoma,verdana,helvetica;font-size:12px;border:1px solid #ccc}.ke-dialog .ke-dialog-content .ke-dialog-body .ke-textarea:focus{border-color:#66afe9;outline:0}.ke-dialog .ke-dialog-content .ke-dialog-body .ke-select{display:-moz-inline-stack;display:inline-block;vertical-align:middle;zoom:1;width:auto;border:1px solid #ccc;height:30px}.ke-dialog .ke-dialog-content .ke-dialog-body .ke-form{margin:0;padding:0}.ke-dialog .ke-dialog-content .ke-dialog-body .ke-input-number{width:50px}.ke-dialog .ke-dialog-content .ke-dialog-body .ke-input-checkbox{position:relative;top:6px}.ke-dialog .ke-dialog-content .ke-dialog-body textarea{display:block;overflow:auto;padding:0;resize:none}.ke-dialog .ke-dialog-content .ke-dialog-body textarea:focus{outline:0}.ke-dialog .ke-dialog-content .ke-dialog-body .ke-input-text{display:inline-block!important;max-width:400px;height:30px;line-height:30px;border:1px solid #ccc;font-size:14px;margin:0;outline:0;padding:0 10px}.ke-dialog .ke-dialog-content .ke-dialog-body .ke-input-text:focus{border-color:#66afe9}.ke-dialog .ke-dialog-content .ke-dialog-body .ke-input-color{border:1px solid #e1e1e1;background-color:#fff;font-size:12px;width:60px;height:30px;line-height:30px;padding-left:5px;overflow:hidden;cursor:pointer;display:-moz-inline-stack;display:inline-block;vertical-align:middle;zoom:1}.ke-dialog .ke-dialog-content .ke-dialog-body .ke-upload-area{position:relative;overflow:hidden;margin:0;padding:0;top:-1px;position:relative}.ke-dialog .ke-dialog-content .ke-dialog-body .ke-upload-area .ke-upload-file{position:absolute;font-size:60px;top:0;right:0;padding:0;margin:0;z-index:811212;border:0 none;opacity:0;cursor:pointer;width:62px;height:30px}.ke-dialog .ke-dialog-content .ke-dialog-body .ke-upload-area .ke-button-common{top:-1px}.ke-dialog .ke-dialog-content .ke-dialog-body .ke-upload-area .ke-button{padding:8px 15px}.ke-dialog .ke-dialog-content .ke-dialog-body .ke-dialog-content-inner{padding:10px 20px 0 20px}.ke-dialog .ke-dialog-content .ke-dialog-body .ke-dialog-content-inner .ke-dialog-row{border:1px solid #fff;margin-bottom:10px;overflow:hidden}.ke-dialog .ke-dialog-content .ke-dialog-body .ke-dialog-content-inner .ke-dialog-row .row-left{float:left;height:30px;line-height:30px;width:60px;text-align:right}.ke-dialog .ke-dialog-content .ke-dialog-body .ke-dialog-content-inner .ke-dialog-row .row-right{float:left;text-align:left}.ke-dialog .ke-dialog-content .ke-dialog-body .ke-dialog-content-inner .ke-dialog-row .row-right .ke-inline-block{display:-moz-inline-stack;display:inline-block;vertical-align:middle;zoom:1}.ke-dialog .ke-dialog-content .ke-dialog-body .ke-dialog-content-inner .ke-dialog-row .row-right .ke-inline-block .ke-upload-button{position:relative;top:-1px}.ke-dialog .ke-dialog-content .ke-dialog-body .ke-dialog-content-inner .ke-dialog-row .row-right label{cursor:pointer;display:-moz-inline-stack;display:inline-block;vertical-align:middle;text-align:right;zoom:1}.ke-dialog .ke-dialog-content .ke-dialog-body .ke-dialog-content-inner .ke-dialog-row .row-right label img{display:-moz-inline-stack;display:inline-block;vertical-align:middle;zoom:1}.ke-dialog .ke-dialog-content .ke-dialog-body .ke-dialog-content-inner .ke-header{height:30px;line-height:30px}.ke-dialog .ke-dialog-content .ke-dialog-body .ke-dialog-content-inner .ke-header .ke-input-text{height:22px;line-height:22px}.ke-dialog .ke-dialog-content .ke-dialog-body .ke-dialog-content-inner .ke-header .ke-button{padding:3px 10px}.ke-dialog .ke-dialog-content .ke-dialog-body .ke-dialog-content-inner .ke-header .checkbox{margin-left:10px}.ke-dialog .ke-dialog-content .ke-dialog-body .ke-dialog-content-inner .ke-tabs{font:12px/1 "sans serif",tahoma,verdana,helvetica;border-bottom:1px solid #e1e1e1;margin-bottom:20px}.ke-dialog .ke-dialog-content .ke-dialog-body .ke-dialog-content-inner .ke-tabs .ke-tabs-ul{list-style:none outside none;margin:0;padding:0}.ke-dialog .ke-dialog-content .ke-dialog-body .ke-dialog-content-inner .ke-tabs .ke-tabs-ul .ke-tabs-li{position:relative;margin:0 2px -1px 0;padding:0 20px;float:left;line-height:25px;text-align:center;color:#337ab7;cursor:pointer}.ke-dialog .ke-dialog-content .ke-dialog-body .ke-dialog-content-inner .ke-tabs .ke-tabs-ul .ke-tabs-li-selected{background-color:#fff;border:1px solid #e1e1e1;border-bottom:1px solid #fff;color:#555;cursor:default;border-top-left-radius:3px;border-top-right-radius:3px}.ke-dialog .ke-dialog-content .ke-dialog-body .ke-dialog-content-inner .ke-tabs .ke-tabs-ul .ke-tabs-li-on{background-color:#fff;color:#000}.ke-dialog .ke-dialog-content .ke-dialog-loading{position:absolute;top:0;left:1px;z-index:1;text-align:center}.ke-dialog .ke-dialog-content .ke-dialog-loading .ke-dialog-loading-content{background:url(../common/loading.gif) no-repeat center;color:#666;font-size:14px;font-weight:700;height:31px;line-height:31px;padding-left:36px}.ke-dialog .ke-dialog-footer{font:12px/1 "sans serif",tahoma,verdana,helvetica;text-align:right;padding:0 15px 5px 0;background-color:#fff;height:40px}.ke-dialog .ke-dialog-footer .ke-dialog-yes{margin:5px}.ke-dialog .ke-dialog-footer .ke-dialog-no{margin:5px 10px 5px 5px}.ke-dialog .ke-button-common{display:inline-block;text-align:center;background:0 0;border:none;padding:0;cursor:pointer}.ke-dialog .ke-button-outer{background-position:0 -25px;padding:0;display:-moz-inline-stack;display:inline-block;vertical-align:middle;zoom:1}.ke-dialog .ke-button{color:#333;font-size:12px;border:1px solid #e6e6e6;background-color:#e6e6e6;padding:7px 10px;margin-top:-4px;color:#444;text-decoration:none;transition:background-color .3s ease-out,border-color .3s ease-out}.ke-dialog .ke-button:hover{border:1px solid #e1e1e1;background-color:#e1e1e1}.ke-dialog .ke-dialog-btn{font-size:12px;margin:5px;background:#2e8ded;color:#fff!important;padding:8px 12px;display:inline-block;border-radius:2px;cursor:pointer;text-decoration:none;transition:.3s ease-out}.ke-dialog .ke-dialog-btn:hover{box-shadow:none;box-shadow:none;opacity:.8}.ke-container-primary .ke-toolbar{border-top:5px solid #009688;box-shadow:0 1px 3px rgba(0,0,0,.12),0 1px 1px 1px rgba(0,0,0,.16);background-clip:padding-box;text-rendering:optimizelegibility}.ke-container-primary .ke-toolbar .ke-toolbar-icon{background:url(images/nkeditor.svg) no-repeat}.ke-container-primary .ke-toolbar .ke-icon-source{background-position:0 0}.ke-container-primary .ke-toolbar .ke-icon-preview{background-position:0 -63px}.ke-container-primary .ke-toolbar .ke-icon-print{background-position:0 -84px}.ke-container-primary .ke-toolbar .ke-icon-undo{background-position:0 -21px}.ke-container-primary .ke-toolbar .ke-icon-redo{background-position:0 -42px}.ke-container-primary .ke-toolbar .ke-icon-template{background-position:0 -105px}.ke-container-primary .ke-toolbar .ke-icon-cut{background-position:0 -147px}.ke-container-primary .ke-toolbar .ke-icon-copy{background-position:0 -168px}.ke-container-primary .ke-toolbar .ke-icon-paste{background-position:0 -189px}.ke-container-primary .ke-toolbar .ke-icon-selectall{background-position:0 -483px}.ke-container-primary .ke-toolbar .ke-icon-justifyleft{background-position:0 -252px}.ke-container-primary .ke-toolbar .ke-icon-justifycenter{background-position:0 -273px}.ke-container-primary .ke-toolbar .ke-icon-justifyright{background-position:0 -294px}.ke-container-primary .ke-toolbar .ke-icon-justifyfull{background-position:0 -315px}.ke-container-primary .ke-toolbar .ke-icon-insertorderedlist{background-position:0 -336px}.ke-container-primary .ke-toolbar .ke-icon-insertunorderedlist{background-position:0 -357px}.ke-container-primary .ke-toolbar .ke-icon-indent{background-position:0 -378px}.ke-container-primary .ke-toolbar .ke-icon-outdent{background-position:0 -399px}.ke-container-primary .ke-toolbar .ke-icon-subscript{background-position:0 -420px}.ke-container-primary .ke-toolbar .ke-icon-superscript{background-position:0 -441px}.ke-container-primary .ke-toolbar .ke-icon-date{background-position:0 -304px;width:25px;height:16px}.ke-container-primary .ke-toolbar .ke-icon-time{background-position:0 -320px;width:25px;height:16px}.ke-container-primary .ke-toolbar .ke-icon-formatblock{background-position:0 -546px}.ke-container-primary .ke-toolbar .ke-icon-fontname{background-position:0 -567px}.ke-container-primary .ke-toolbar .ke-icon-fontsize{background-position:0 -588px}.ke-container-primary .ke-toolbar .ke-icon-forecolor{background-position:0 -609px}.ke-container-primary .ke-toolbar .ke-icon-hilitecolor{background-position:0 -630px}.ke-container-primary .ke-toolbar .ke-icon-bold{background-position:0 -651px}.ke-container-primary .ke-toolbar .ke-icon-italic{background-position:0 -672px}.ke-container-primary .ke-toolbar .ke-icon-underline{background-position:0 -693px}.ke-container-primary .ke-toolbar .ke-icon-strikethrough{background-position:0 -714px}.ke-container-primary .ke-toolbar .ke-icon-removeformat{background-position:0 -756px}.ke-container-primary .ke-toolbar .ke-icon-image{background-position:0 -777px}.ke-container-primary .ke-toolbar .ke-icon-flash{background-position:0 -840px}.ke-container-primary .ke-toolbar .ke-icon-media{background-position:0 -861px}.ke-container-primary .ke-toolbar .ke-icon-div{background-position:0 -544px;width:16px;height:16px}.ke-container-primary .ke-toolbar .ke-icon-formula{background-position:0 -576px;width:16px;height:16px}.ke-container-primary .ke-toolbar .ke-icon-hr{background-position:0 -924px}.ke-container-primary .ke-toolbar .ke-icon-emoticons{background-position:0 -945px}.ke-container-primary .ke-toolbar .ke-icon-link{background-position:0 -1008px}.ke-container-primary .ke-toolbar .ke-icon-unlink{background-position:0 -1029px}.ke-container-primary .ke-toolbar .ke-icon-fullscreen{background-position:0 -525px}.ke-container-primary .ke-toolbar .ke-icon-about{background-position:0 -1092px}.ke-container-primary .ke-toolbar .ke-icon-quote{background-position:0 -1114px}.ke-container-primary .ke-toolbar .ke-icon-plainpaste{background-position:0 -210px}.ke-container-primary .ke-toolbar .ke-icon-wordpaste{background-position:0 -231px}.ke-container-primary .ke-toolbar .ke-icon-table{background-position:0 -903px;width:18px!important}.ke-container-primary .ke-toolbar .ke-icon-tablemenu{background-position:0 -768px;width:16px;height:16px}.ke-container-primary .ke-toolbar .ke-icon-code{background-position:0 -126px}.ke-container-primary .ke-toolbar .ke-icon-map{background-position:0 -976px;width:16px;height:16px}.ke-container-primary .ke-toolbar .ke-icon-baidumap{background-position:0 -1050px}.ke-container-primary .ke-toolbar .ke-icon-lineheight{background-position:0 -735px}.ke-container-primary .ke-toolbar .ke-icon-clearhtml{background-position:0 -462px}.ke-container-primary .ke-toolbar .ke-icon-pagebreak{background-position:0 -966px}.ke-container-primary .ke-toolbar .ke-icon-insertfile{background-position:0 -882px}.ke-container-primary .ke-toolbar .ke-icon-quickformat{background-position:0 -504px}.ke-container-primary .ke-toolbar .ke-icon-anchor{background-position:0 -987px}.ke-container-primary .ke-toolbar .ke-icon-search{background-position:0 -1184px;width:16px;height:16px}.ke-container-primary .ke-toolbar .ke-icon-new{background-position:0 -1200px;width:16px;height:16px}.ke-container-primary .ke-toolbar .ke-icon-specialchar{background-position:0 -1216px;width:16px;height:16px}.ke-container-primary .ke-toolbar .ke-icon-multiimage{background-position:0 -798px}.ke-container-primary .ke-toolbar .ke-icon-graft{background-position:0 -819px}.ke-menu-primary .ke-menu-item .ke-menu-item-left{width:27px;text-align:center;overflow:hidden}.ke-menu-primary .ke-menu-item .ke-menu-item-left .ke-toolbar-icon{font-size:0;line-height:0;overflow:hidden;display:block;width:16px;height:16px;margin:0 2px;background:url(images/nkeditor.svg) no-repeat}.ke-menu-primary .ke-menu-item .ke-menu-item-left .ke-icon-tableinsert{background-position:0 -903px;width:18px!important}.ke-menu-primary .ke-menu-item .ke-menu-item-left .ke-icon-tabledelete{background-position:0 -1428px}.ke-menu-primary .ke-menu-item .ke-menu-item-left .ke-icon-tablecolinsertleft{background-position:0 -1176px;width:18px!important}.ke-menu-primary .ke-menu-item .ke-menu-item-left .ke-icon-tablecolinsertright{background-position:0 -1323px;width:18px!important}.ke-menu-primary .ke-menu-item .ke-menu-item-left .ke-icon-tablerowinsertabove{background-position:0 -1302px;width:22px!important}.ke-menu-primary .ke-menu-item .ke-menu-item-left .ke-icon-tablerowinsertbelow{background-position:0 -1155px;width:22px!important}.ke-menu-primary .ke-menu-item .ke-menu-item-left .ke-icon-tablecoldelete{background-position:0 -1239px}.ke-menu-primary .ke-menu-item .ke-menu-item-left .ke-icon-tablerowdelete{background-position:0 -1260px}.ke-menu-primary .ke-menu-item .ke-menu-item-left .ke-icon-tablecellprop{background-position:0 -1218px}.ke-menu-primary .ke-menu-item .ke-menu-item-left .ke-icon-tableprop{background-position:0 -1134px}.ke-menu-primary .ke-menu-item .ke-menu-item-left .ke-icon-tablecellsplit{background-position:0 -1088px;width:16px;height:16px}.ke-menu-primary .ke-menu-item .ke-menu-item-left .ke-icon-tablerowmerge{background-position:-1px -1197px}.ke-menu-primary .ke-menu-item .ke-menu-item-left .ke-icon-tablerowsplit{background-position:0 -1344px}.ke-menu-primary .ke-menu-item .ke-menu-item-left .ke-icon-tablecolmerge{background-position:-4px -1365px}.ke-menu-primary .ke-menu-item .ke-menu-item-left .ke-icon-tablecolsplit{background-position:0 -1344px}.ke-menu-primary .ke-menu-item .ke-menu-item-left .ke-icon-image{background-position:0 -777px}.ke-menu-primary .ke-menu-item .ke-menu-item-left .ke-icon-flash{background-position:0 -840px}.ke-menu-primary .ke-menu-item .ke-menu-item-left .ke-icon-media{background-position:0 -861px}.ke-menu-primary .ke-menu-item .ke-menu-item-left .ke-icon-link{background-position:0 -1008px}.ke-menu-primary .ke-menu-item .ke-menu-item-left .ke-icon-checked{background-position:0 -1407px} \ No newline at end of file diff --git a/tools/NKeditor/themes/primary/editor.scss b/tools/NKeditor/themes/primary/editor.scss new file mode 100644 index 00000000..c20d945c --- /dev/null +++ b/tools/NKeditor/themes/primary/editor.scss @@ -0,0 +1,387 @@ +@import "../common/common"; + +.ke-container-primary { + .ke-toolbar { + + border-top: 5px solid #009688; + box-shadow: 0 1px 3px rgba(0, 0, 0, 0.12), 0 1px 1px 1px rgba(0, 0, 0, 0.16); + background-clip: padding-box; + text-rendering: optimizelegibility; + + .ke-toolbar-icon { + *background-image: url(images/nkeditor.png); + background: url(images/nkeditor.svg) no-repeat; + } + + .ke-icon-source { + background-position: 0 0px; + } + .ke-icon-preview { + background-position: 0 -63px; + } + .ke-icon-print { + background-position: 0 -84px; + } + .ke-icon-undo { + background-position: 0 -21px; + } + + .ke-icon-redo { + background-position: 0 -42px; + } + + .ke-icon-template { + background-position: 0 -105px; + } + + .ke-icon-cut { + background-position: 0 -147px; + } + + .ke-icon-copy { + background-position: 0 -168px; + } + + .ke-icon-paste { + background-position: 0 -189px; + } + + .ke-icon-selectall { + background-position: 0 -483px; + } + + .ke-icon-justifyleft { + background-position: 0 -252px; + } + + .ke-icon-justifycenter { + background-position: 0 -273px; + } + + .ke-icon-justifyright { + background-position: 0 -294px; + } + + .ke-icon-justifyfull { + background-position: 0 -315px; + } + + .ke-icon-insertorderedlist { + background-position: 0 -336px; + } + + .ke-icon-insertunorderedlist { + background-position: 0 -357px; + } + + .ke-icon-indent { + background-position: 0 -378px; + } + + .ke-icon-outdent { + background-position: 0 -399px; + } + + .ke-icon-subscript { + background-position: 0 -420px; + } + + .ke-icon-superscript { + background-position: 0 -441px; + } + + .ke-icon-date { + background-position: 0px -304px; + width: 25px; + height: 16px; + } + + .ke-icon-time { + background-position: 0px -320px; + width: 25px; + height: 16px; + } + + .ke-icon-formatblock { + background-position: 0 -546px; + } + + .ke-icon-fontname { + background-position: 0 -567px; + } + + .ke-icon-fontsize { + background-position: 0 -588px; + } + + .ke-icon-forecolor { + background-position: 0 -609px; + } + + .ke-icon-hilitecolor { + background-position: 0 -630px; + } + + .ke-icon-bold { + background-position: 0 -651px; + } + + .ke-icon-italic { + background-position: 0 -672px; + } + + .ke-icon-underline { + background-position: 0 -693px; + } + + .ke-icon-strikethrough { + background-position: 0 -714px; + } + + .ke-icon-removeformat { + background-position: 0 -756px; + } + + .ke-icon-image { + background-position: 0 -777px; + } + + .ke-icon-flash { + background-position: 0 -840px; + } + + .ke-icon-media { + background-position: 0 -861px; + } + + .ke-icon-div { + background-position: 0px -544px; + width: 16px; + height: 16px; + } + + .ke-icon-formula { + background-position: 0px -576px; + width: 16px; + height: 16px; + } + + .ke-icon-hr { + background-position: 0 -924px; + } + + .ke-icon-emoticons { + background-position: 0 -945px; + } + + .ke-icon-link { + background-position: 0 -1008px; + } + + .ke-icon-unlink { + background-position: 0 -1029px; + } + + .ke-icon-fullscreen { + background-position: 0 -525px; + } + + .ke-icon-about { + background-position: 0 -1092px; + } + + .ke-icon-quote { + background-position: 0 -1114px; + } + + .ke-icon-plainpaste { + background-position: 0 -210px; + } + + .ke-icon-wordpaste { + background-position: 0 -231px; + } + + .ke-icon-table { + background-position: 0px -903px; + width: 18px !important; + } + + .ke-icon-tablemenu { + background-position: 0px -768px; + width: 16px; + height: 16px; + } + + .ke-icon-code { + background-position: 0 -126px; + } + + .ke-icon-map { + background-position: 0px -976px; + width: 16px; + height: 16px; + } + + .ke-icon-baidumap { + background-position: 0 -1050px; + } + + .ke-icon-lineheight { + background-position: 0 -735px; + } + + .ke-icon-clearhtml { + background-position: 0 -462px; + } + + .ke-icon-pagebreak { + background-position: 0 -966px; + } + + .ke-icon-insertfile { + background-position: 0 -882px; + } + + .ke-icon-quickformat { + background-position: 0 -504px; + } + + .ke-icon-anchor { + background-position: 0 -987px; + } + + .ke-icon-search { + background-position: 0px -1184px; + width: 16px; + height: 16px; + } + + .ke-icon-new { + background-position: 0px -1200px; + width: 16px; + height: 16px; + } + + .ke-icon-specialchar { + background-position: 0px -1216px; + width: 16px; + height: 16px; + } + + .ke-icon-multiimage { + background-position: 0 -798px; + } + + .ke-icon-graft { + background-position: 0 -819px; + } + } +} + +/** + menu 右键菜单 + */ +.ke-menu-primary { + + .ke-menu-item { + + .ke-menu-item-left { + width: 27px; + text-align: center; + overflow: hidden; + + .ke-toolbar-icon { + @include ke-toolbar-icon; + *background-image: url(images/nkeditor.png); + background: url(images/nkeditor.svg) no-repeat; + } + + .ke-icon-tableinsert { + background-position: 0 -903px; + width: 18px !important; + } + + .ke-icon-tabledelete { + background-position: 0 -1428px; + } + + .ke-icon-tablecolinsertleft { + background-position: 0 -1176px; + width: 18px !important; + } + + .ke-icon-tablecolinsertright { + background-position: 0 -1323px; + width: 18px !important; + } + + .ke-icon-tablerowinsertabove { + background-position: 0 -1302px; + width: 22px !important; + } + + .ke-icon-tablerowinsertbelow { + background-position: 0 -1155px; + width: 22px !important; + } + + .ke-icon-tablecoldelete { + background-position: 0 -1239px; + } + + .ke-icon-tablerowdelete { + background-position: 0 -1260px; + } + + .ke-icon-tablecellprop { + background-position: 0 -1218px; + } + + .ke-icon-tableprop { + background-position: 0 -1134px; + } + .ke-icon-tablecellsplit { + background-position: 0px -1088px; + width: 16px; + height: 16px; + } + + .ke-icon-tablerowmerge { + background-position: -1px -1197px; + } + + .ke-icon-tablerowsplit { + background-position: 0 -1344px; + } + + .ke-icon-tablecolmerge { + background-position: -4px -1365px; + } + + .ke-icon-tablecolsplit { + background-position: 0 -1344px; + } + + //图片,视频右键菜单 + .ke-icon-image { + background-position: 0 -777px; + } + .ke-icon-flash { + background-position: 0 -840px; + } + .ke-icon-media { + background-position: 0 -861px; + } + .ke-icon-link { + background-position: 0 -1008px; + } + + .ke-icon-checked { + background-position: 0 -1407px; + } + + } + } +} +//menu end \ No newline at end of file diff --git a/tools/NKeditor/themes/primary/images/nkeditor.png b/tools/NKeditor/themes/primary/images/nkeditor.png new file mode 100644 index 00000000..2bd53f20 Binary files /dev/null and b/tools/NKeditor/themes/primary/images/nkeditor.png differ diff --git a/tools/NKeditor/themes/primary/images/nkeditor.svg b/tools/NKeditor/themes/primary/images/nkeditor.svg new file mode 100644 index 00000000..3c83f022 --- /dev/null +++ b/tools/NKeditor/themes/primary/images/nkeditor.svg @@ -0,0 +1,260 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +