rails_kindeditor 0.3.2 → 0.3.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/app/uploaders/kindeditor/asset_uploader.rb +1 -1
- data/lib/rails_kindeditor/engine.rb +1 -1
- data/lib/rails_kindeditor/version.rb +1 -1
- data/rails_kindeditor.gemspec +0 -1
- data/vendor/assets/javascripts/kindeditor/kindeditor.js +122 -58
- data/vendor/assets/javascripts/kindeditor/lang/ar.js +16 -0
- data/vendor/assets/javascripts/kindeditor/lang/en.js +16 -0
- data/vendor/assets/javascripts/kindeditor/lang/zh_CN.js +23 -7
- data/vendor/assets/javascripts/kindeditor/lang/zh_TW.js +17 -1
- data/vendor/assets/javascripts/kindeditor/plugins/anchor/anchor.js +1 -1
- data/vendor/assets/javascripts/kindeditor/plugins/baidumap/baidumap.js +77 -0
- data/vendor/assets/javascripts/kindeditor/plugins/baidumap/map.html +43 -0
- data/vendor/assets/javascripts/kindeditor/plugins/code/prettify.css +13 -13
- data/vendor/assets/javascripts/kindeditor/plugins/code/prettify.js +28 -28
- data/vendor/assets/javascripts/kindeditor/plugins/filemanager/filemanager.js +1 -1
- data/vendor/assets/javascripts/kindeditor/plugins/filemanager/images/file-64.gif +0 -0
- data/vendor/assets/javascripts/kindeditor/plugins/filemanager/images/folder-64.gif +0 -0
- data/vendor/assets/javascripts/kindeditor/plugins/flash/flash.js +8 -4
- data/vendor/assets/javascripts/kindeditor/plugins/image/image.js +61 -40
- data/vendor/assets/javascripts/kindeditor/plugins/insertfile/insertfile.js +8 -5
- data/vendor/assets/javascripts/kindeditor/plugins/link/link.js +5 -5
- data/vendor/assets/javascripts/kindeditor/plugins/media/media.js +8 -3
- data/vendor/assets/javascripts/kindeditor/plugins/multiimage/images/image.png +0 -0
- data/vendor/assets/javascripts/kindeditor/plugins/multiimage/images/select-files-en.png +0 -0
- data/vendor/assets/javascripts/kindeditor/plugins/multiimage/images/select-files-zh_CN.png +0 -0
- data/vendor/assets/javascripts/kindeditor/plugins/multiimage/images/swfupload.swf +0 -0
- data/vendor/assets/javascripts/kindeditor/plugins/multiimage/multiimage.js +1368 -0
- data/vendor/assets/javascripts/kindeditor/plugins/table/table.js +2 -4
- data/vendor/assets/javascripts/kindeditor/plugins/template/html/1.html +13 -13
- data/vendor/assets/javascripts/kindeditor/plugins/template/html/2.html +41 -41
- data/vendor/assets/javascripts/kindeditor/plugins/template/html/3.html +35 -35
- data/vendor/assets/javascripts/kindeditor/themes/default/default.css +124 -5
- data/vendor/assets/javascripts/kindeditor/themes/default/default.png +0 -0
- data/vendor/assets/javascripts/kindeditor/themes/qq/editor.gif +0 -0
- data/vendor/assets/javascripts/kindeditor/themes/qq/qq.css +143 -0
- data/vendor/assets/javascripts/kindeditor/themes/simple/simple.css +100 -100
- metadata +12 -3
| @@ -68,7 +68,7 @@ class Kindeditor::AssetUploader < CarrierWave::Uploader::Base | |
| 68 68 | 
             
              end
         | 
| 69 69 |  | 
| 70 70 | 
             
              def filename
         | 
| 71 | 
            -
                @name ||= Time.now.to_s(:number)
         | 
| 71 | 
            +
                @name ||= "#{Time.now.to_s(:number)}#{rand(100000)}"
         | 
| 72 72 | 
             
                "#{@name}#{File.extname(original_filename).downcase}" if original_filename
         | 
| 73 73 | 
             
              end
         | 
| 74 74 |  | 
| @@ -15,7 +15,7 @@ module RailsKindeditor | |
| 15 15 |  | 
| 16 16 | 
             
                initializer "rails_kindeditor.simple_form_and_formtastic" do
         | 
| 17 17 | 
             
                  require "rails_kindeditor/simple_form" if Object.const_defined?("SimpleForm")
         | 
| 18 | 
            -
                  require " | 
| 18 | 
            +
                  require "rails_kindeditor/formtastic" if Object.const_defined?("Formtastic")
         | 
| 19 19 | 
             
                end
         | 
| 20 20 |  | 
| 21 21 | 
             
                initializer "rails_kindeditor.helper_and_builder" do
         | 
    
        data/rails_kindeditor.gemspec
    CHANGED
    
    
| @@ -5,7 +5,7 @@ | |
| 5 5 | 
             
            * @author Roddy <luolonghao@gmail.com>
         | 
| 6 6 | 
             
            * @website http://www.kindsoft.net/
         | 
| 7 7 | 
             
            * @licence http://www.kindsoft.net/license.php
         | 
| 8 | 
            -
            * @version 4. | 
| 8 | 
            +
            * @version 4.1.1 (2012-06-10)
         | 
| 9 9 | 
             
            *******************************************************************************/
         | 
| 10 10 | 
             
            (function (window, undefined) {
         | 
| 11 11 | 
             
            	if (window.KindEditor) {
         | 
| @@ -17,7 +17,7 @@ if (!window.console) { | |
| 17 17 | 
             
            if (!console.log) {
         | 
| 18 18 | 
             
            	console.log = function () {};
         | 
| 19 19 | 
             
            }
         | 
| 20 | 
            -
            var _VERSION = '4. | 
| 20 | 
            +
            var _VERSION = '4.1.1 (2012-06-10)',
         | 
| 21 21 | 
             
            	_ua = navigator.userAgent.toLowerCase(),
         | 
| 22 22 | 
             
            	_IE = _ua.indexOf('msie') > -1 && _ua.indexOf('opera') == -1,
         | 
| 23 23 | 
             
            	_GECKO = _ua.indexOf('gecko') > -1 && _ua.indexOf('khtml') == -1,
         | 
| @@ -226,7 +226,7 @@ K.basePath = '/assets/kindeditor/'; //_getBasePath(); ##### Modified by Macrow # | |
| 226 226 | 
             
            K.options = {
         | 
| 227 227 | 
             
            	designMode : true,
         | 
| 228 228 | 
             
            	fullscreenMode : false,
         | 
| 229 | 
            -
            	filterMode :  | 
| 229 | 
            +
            	filterMode : true,
         | 
| 230 230 | 
             
            	wellFormatMode : true,
         | 
| 231 231 | 
             
            	shadowMode : true,
         | 
| 232 232 | 
             
            	loadStyleMode : true,
         | 
| @@ -243,6 +243,7 @@ K.options = { | |
| 243 243 | 
             
            	pasteType : 2,
         | 
| 244 244 | 
             
            	dialogAlignType : 'page',
         | 
| 245 245 | 
             
            	useContextmenu : true,
         | 
| 246 | 
            +
            	fullscreenShortcut : true,
         | 
| 246 247 | 
             
            	bodyClass : 'ke-content',
         | 
| 247 248 | 
             
            	indentChar : '\t',
         | 
| 248 249 | 
             
            	cssPath : '',
         | 
| @@ -251,13 +252,14 @@ K.options = { | |
| 251 252 | 
             
            	minHeight : 100,
         | 
| 252 253 | 
             
            	minChangeSize : 5,
         | 
| 253 254 | 
             
            	items : [
         | 
| 254 | 
            -
            		'source', '|', 'undo', 'redo', '|', 'preview', 'print', 'template', 'cut', 'copy', 'paste',
         | 
| 255 | 
            +
            		'source', '|', 'undo', 'redo', '|', 'preview', 'print', 'template', 'code', 'cut', 'copy', 'paste',
         | 
| 255 256 | 
             
            		'plainpaste', 'wordpaste', '|', 'justifyleft', 'justifycenter', 'justifyright',
         | 
| 256 257 | 
             
            		'justifyfull', 'insertorderedlist', 'insertunorderedlist', 'indent', 'outdent', 'subscript',
         | 
| 257 258 | 
             
            		'superscript', 'clearhtml', 'quickformat', 'selectall', '|', 'fullscreen', '/',
         | 
| 258 259 | 
             
            		'formatblock', 'fontname', 'fontsize', '|', 'forecolor', 'hilitecolor', 'bold',
         | 
| 259 | 
            -
            		'italic', 'underline', 'strikethrough', 'lineheight', 'removeformat', '|', 'image',
         | 
| 260 | 
            -
            		'flash', 'media', 'insertfile', 'table', 'hr', 'emoticons', ' | 
| 260 | 
            +
            		'italic', 'underline', 'strikethrough', 'lineheight', 'removeformat', '|', 'image', 'multiimage',
         | 
| 261 | 
            +
            		'flash', 'media', 'insertfile', 'table', 'hr', 'emoticons', 'baidumap', 'pagebreak',
         | 
| 262 | 
            +
            		'anchor', 'link', 'unlink', '|', 'about'
         | 
| 261 263 | 
             
            	],
         | 
| 262 264 | 
             
            	noDisableItems : ['source', 'fullscreen'],
         | 
| 263 265 | 
             
            	colorTable : [
         | 
| @@ -634,6 +636,7 @@ function _formatCss(css) { | |
| 634 636 | 
             
            }
         | 
| 635 637 | 
             
            function _formatUrl(url, mode, host, pathname) {
         | 
| 636 638 | 
             
            	mode = _undef(mode, '').toLowerCase();
         | 
| 639 | 
            +
            	url = url.replace(/([^:])\/\//g, '$1/');
         | 
| 637 640 | 
             
            	if (_inArray(mode, ['absolute', 'relative', 'domain']) < 0) {
         | 
| 638 641 | 
             
            		return url;
         | 
| 639 642 | 
             
            	}
         | 
| @@ -724,7 +727,7 @@ function _formatHtml(html, htmlTags, urlType, wellFormatted, indentChar) { | |
| 724 727 | 
             
            			html = html.replace(/(<(?:style|style\s[^>]*)>)([\s\S]*?)(<\/style>)/ig, '');
         | 
| 725 728 | 
             
            		}
         | 
| 726 729 | 
             
            	}
         | 
| 727 | 
            -
            	var re = /(\ | 
| 730 | 
            +
            	var re = /([ \t\n\r]*)<(\/)?([\w\-:]+)((?:\s+|(?:\s+[\w\-:]+)|(?:\s+[\w\-:]+=[^\s"'<>]+)|(?:\s+[\w\-:"]+="[^"]*")|(?:\s+[\w\-:"]+='[^']*'))*)(\/)?>([ \t\n\r]*)/g;
         | 
| 728 731 | 
             
            	var tagStack = [];
         | 
| 729 732 | 
             
            	html = html.replace(re, function($0, $1, $2, $3, $4, $5, $6) {
         | 
| 730 733 | 
             
            		var full = $0,
         | 
| @@ -925,6 +928,19 @@ function _mediaImg(blankPath, attrs) { | |
| 925 928 | 
             
            	html += 'data-ke-tag="' + escape(srcTag) + '" alt="" />';
         | 
| 926 929 | 
             
            	return html;
         | 
| 927 930 | 
             
            }
         | 
| 931 | 
            +
            function _tmpl(str, data) {
         | 
| 932 | 
            +
            	var fn = new Function("obj",
         | 
| 933 | 
            +
            		"var p=[],print=function(){p.push.apply(p,arguments);};" +
         | 
| 934 | 
            +
            		"with(obj){p.push('" +
         | 
| 935 | 
            +
            		str.replace(/[\r\t\n]/g, " ")
         | 
| 936 | 
            +
            			.split("<%").join("\t")
         | 
| 937 | 
            +
            			.replace(/((^|%>)[^\t]*)'/g, "$1\r")
         | 
| 938 | 
            +
            			.replace(/\t=(.*?)%>/g, "',$1,'")
         | 
| 939 | 
            +
            			.split("\t").join("');")
         | 
| 940 | 
            +
            			.split("%>").join("p.push('")
         | 
| 941 | 
            +
            			.split("\r").join("\\'") + "');}return p.join('');");
         | 
| 942 | 
            +
            	return data ? fn(data) : fn;
         | 
| 943 | 
            +
            }
         | 
| 928 944 | 
             
            K.formatUrl = _formatUrl;
         | 
| 929 945 | 
             
            K.formatHtml = _formatHtml;
         | 
| 930 946 | 
             
            K.getCssList = _getCssList;
         | 
| @@ -934,6 +950,7 @@ K.mediaAttrs = _mediaAttrs; | |
| 934 950 | 
             
            K.mediaEmbed = _mediaEmbed;
         | 
| 935 951 | 
             
            K.mediaImg = _mediaImg;
         | 
| 936 952 | 
             
            K.clearMsWord = _clearMsWord;
         | 
| 953 | 
            +
            K.tmpl = _tmpl;
         | 
| 937 954 | 
             
            function _contains(nodeA, nodeB) {
         | 
| 938 955 | 
             
            	if (nodeA.nodeType == 9 && nodeB.nodeType != 9) {
         | 
| 939 956 | 
             
            		return true;
         | 
| @@ -1249,10 +1266,15 @@ function KNode(node) { | |
| 1249 1266 | 
             
            _extend(KNode, {
         | 
| 1250 1267 | 
             
            	init : function(node) {
         | 
| 1251 1268 | 
             
            		var self = this;
         | 
| 1269 | 
            +
            		node = _isArray(node) ? node : [node];
         | 
| 1270 | 
            +
            		var length = 0;
         | 
| 1252 1271 | 
             
            		for (var i = 0, len = node.length; i < len; i++) {
         | 
| 1253 | 
            -
            			 | 
| 1272 | 
            +
            			if (node[i]) {
         | 
| 1273 | 
            +
            				self[i] = node[i].constructor === KNode ? node[i][0] : node[i];
         | 
| 1274 | 
            +
            				length++;
         | 
| 1275 | 
            +
            			}
         | 
| 1254 1276 | 
             
            		}
         | 
| 1255 | 
            -
            		self.length =  | 
| 1277 | 
            +
            		self.length = length;
         | 
| 1256 1278 | 
             
            		self.doc = _getDoc(self[0]);
         | 
| 1257 1279 | 
             
            		self.name = _getNodeName(self[0]);
         | 
| 1258 1280 | 
             
            		self.type = self.length > 0 ? self[0].nodeType : null;
         | 
| @@ -1329,7 +1351,7 @@ _extend(KNode, { | |
| 1329 1351 | 
             
            		if (this.length < 1) {
         | 
| 1330 1352 | 
             
            			return null;
         | 
| 1331 1353 | 
             
            		}
         | 
| 1332 | 
            -
            		return new KNode( | 
| 1354 | 
            +
            		return this[i] ? new KNode(this[i]) : null;
         | 
| 1333 1355 | 
             
            	},
         | 
| 1334 1356 | 
             
            	hasClass : function(cls) {
         | 
| 1335 1357 | 
             
            		if (this.length < 1) {
         | 
| @@ -1479,7 +1501,7 @@ _extend(KNode, { | |
| 1479 1501 | 
             
            		if (this.length < 1) {
         | 
| 1480 1502 | 
             
            			return new KNode([]);
         | 
| 1481 1503 | 
             
            		}
         | 
| 1482 | 
            -
            		return new KNode( | 
| 1504 | 
            +
            		return new KNode(this[0].cloneNode(bool));
         | 
| 1483 1505 | 
             
            	},
         | 
| 1484 1506 | 
             
            	append : function(expr) {
         | 
| 1485 1507 | 
             
            		this.each(function() {
         | 
| @@ -1601,28 +1623,28 @@ _extend(KNode, { | |
| 1601 1623 | 
             
            			return null;
         | 
| 1602 1624 | 
             
            		}
         | 
| 1603 1625 | 
             
            		var node = this[0].parentNode;
         | 
| 1604 | 
            -
            		return node ? new KNode( | 
| 1626 | 
            +
            		return node ? new KNode(node) : null;
         | 
| 1605 1627 | 
             
            	},
         | 
| 1606 1628 | 
             
            	children : function() {
         | 
| 1607 1629 | 
             
            		if (this.length < 1) {
         | 
| 1608 | 
            -
            			return [];
         | 
| 1630 | 
            +
            			return new KNode([]);
         | 
| 1609 1631 | 
             
            		}
         | 
| 1610 1632 | 
             
            		var list = [], child = this[0].firstChild;
         | 
| 1611 1633 | 
             
            		while (child) {
         | 
| 1612 1634 | 
             
            			if (child.nodeType != 3 || _trim(child.nodeValue) !== '') {
         | 
| 1613 | 
            -
            				list.push( | 
| 1635 | 
            +
            				list.push(child);
         | 
| 1614 1636 | 
             
            			}
         | 
| 1615 1637 | 
             
            			child = child.nextSibling;
         | 
| 1616 1638 | 
             
            		}
         | 
| 1617 | 
            -
            		return list;
         | 
| 1639 | 
            +
            		return new KNode(list);
         | 
| 1618 1640 | 
             
            	},
         | 
| 1619 1641 | 
             
            	first : function() {
         | 
| 1620 1642 | 
             
            		var list = this.children();
         | 
| 1621 | 
            -
            		return list.length > 0 ? list | 
| 1643 | 
            +
            		return list.length > 0 ? list.eq(0) : null;
         | 
| 1622 1644 | 
             
            	},
         | 
| 1623 1645 | 
             
            	last : function() {
         | 
| 1624 1646 | 
             
            		var list = this.children();
         | 
| 1625 | 
            -
            		return list.length > 0 ? list | 
| 1647 | 
            +
            		return list.length > 0 ? list.eq(list.length - 1) : null;
         | 
| 1626 1648 | 
             
            	},
         | 
| 1627 1649 | 
             
            	index : function() {
         | 
| 1628 1650 | 
             
            		if (this.length < 1) {
         | 
| @@ -1640,14 +1662,14 @@ _extend(KNode, { | |
| 1640 1662 | 
             
            			return null;
         | 
| 1641 1663 | 
             
            		}
         | 
| 1642 1664 | 
             
            		var node = this[0].previousSibling;
         | 
| 1643 | 
            -
            		return node ? new KNode( | 
| 1665 | 
            +
            		return node ? new KNode(node) : null;
         | 
| 1644 1666 | 
             
            	},
         | 
| 1645 1667 | 
             
            	next : function() {
         | 
| 1646 1668 | 
             
            		if (this.length < 1) {
         | 
| 1647 1669 | 
             
            			return null;
         | 
| 1648 1670 | 
             
            		}
         | 
| 1649 1671 | 
             
            		var node = this[0].nextSibling;
         | 
| 1650 | 
            -
            		return node ? new KNode( | 
| 1672 | 
            +
            		return node ? new KNode(node) : null;
         | 
| 1651 1673 | 
             
            	},
         | 
| 1652 1674 | 
             
            	scan : function(fn, order) {
         | 
| 1653 1675 | 
             
            		if (this.length < 1) {
         | 
| @@ -2095,7 +2117,7 @@ _extend(KRange, { | |
| 2095 2117 | 
             
            		}
         | 
| 2096 2118 | 
             
            		var children = knode.children();
         | 
| 2097 2119 | 
             
            		if (children.length > 0) {
         | 
| 2098 | 
            -
            			return this.setStartBefore(children[0] | 
| 2120 | 
            +
            			return this.setStartBefore(children[0]).setEndAfter(children[children.length - 1]);
         | 
| 2099 2121 | 
             
            		}
         | 
| 2100 2122 | 
             
            		return this.setStart(node, 0).setEnd(node, 0);
         | 
| 2101 2123 | 
             
            	},
         | 
| @@ -2281,10 +2303,10 @@ _extend(KRange, { | |
| 2281 2303 | 
             
            			}
         | 
| 2282 2304 | 
             
            			var left, right, child, offset;
         | 
| 2283 2305 | 
             
            			if (pos > 0) {
         | 
| 2284 | 
            -
            				left = children | 
| 2306 | 
            +
            				left = children.eq(pos - 1);
         | 
| 2285 2307 | 
             
            			}
         | 
| 2286 2308 | 
             
            			if (pos < children.length) {
         | 
| 2287 | 
            -
            				right = children | 
| 2309 | 
            +
            				right = children.eq(pos);
         | 
| 2288 2310 | 
             
            			}
         | 
| 2289 2311 | 
             
            			if (left && left.type == 3) {
         | 
| 2290 2312 | 
             
            				child = left[0];
         | 
| @@ -3454,9 +3476,14 @@ function _iframeDoc(iframe) { | |
| 3454 3476 | 
             
            	iframe = _get(iframe);
         | 
| 3455 3477 | 
             
            	return iframe.contentDocument || iframe.contentWindow.document;
         | 
| 3456 3478 | 
             
            }
         | 
| 3479 | 
            +
            var html, _direction = '';
         | 
| 3480 | 
            +
            if ((html = document.getElementsByTagName('html'))) {
         | 
| 3481 | 
            +
            	_direction = html[0].dir;
         | 
| 3482 | 
            +
            }
         | 
| 3457 3483 | 
             
            function _getInitHtml(themesPath, bodyClass, cssPath, cssData) {
         | 
| 3458 3484 | 
             
            	var arr = [
         | 
| 3459 | 
            -
            		'<html | 
| 3485 | 
            +
            		(_direction === '' ? '<html>' : '<html dir="' + _direction + '">'),
         | 
| 3486 | 
            +
            		'<head><meta charset="utf-8" /><title></title>',
         | 
| 3460 3487 | 
             
            		'<style>',
         | 
| 3461 3488 | 
             
            		'html {margin:0;padding:0;}',
         | 
| 3462 3489 | 
             
            		'body {margin:0;padding:5px;}',
         | 
| @@ -3465,6 +3492,7 @@ function _getInitHtml(themesPath, bodyClass, cssPath, cssData) { | |
| 3465 3492 | 
             
            		'p {margin:5px 0;}',
         | 
| 3466 3493 | 
             
            		'table {border-collapse:collapse;}',
         | 
| 3467 3494 | 
             
            		'img {border:0;}',
         | 
| 3495 | 
            +
            		'noscript {display:none;}',
         | 
| 3468 3496 | 
             
            		'table.ke-zeroborder td {border:1px dotted #AAA;}',
         | 
| 3469 3497 | 
             
            		'img.ke-flash {',
         | 
| 3470 3498 | 
             
            		'	border:1px solid #AAA;',
         | 
| @@ -3495,7 +3523,7 @@ function _getInitHtml(themesPath, bodyClass, cssPath, cssData) { | |
| 3495 3523 | 
             
            		'	width:16px;',
         | 
| 3496 3524 | 
             
            		'	height:16px;',
         | 
| 3497 3525 | 
             
            		'}',
         | 
| 3498 | 
            -
            		'.ke-script {',
         | 
| 3526 | 
            +
            		'.ke-script, .ke-noscript {',
         | 
| 3499 3527 | 
             
            		'	display:none;',
         | 
| 3500 3528 | 
             
            		'	font-size:0;',
         | 
| 3501 3529 | 
             
            		'	width:0;',
         | 
| @@ -4037,27 +4065,34 @@ _extend(KUploadButton, { | |
| 4037 4065 | 
             
            			fieldName = options.fieldName || 'file',
         | 
| 4038 4066 | 
             
            			url = options.url || '',
         | 
| 4039 4067 | 
             
            			title = button.val(),
         | 
| 4068 | 
            +
            			extraParams = options.extraParams || {},
         | 
| 4040 4069 | 
             
            			cls = button[0].className || '',
         | 
| 4041 | 
            -
            			target = 'kindeditor_upload_iframe_' + new Date().getTime();
         | 
| 4070 | 
            +
            			target = options.target || 'kindeditor_upload_iframe_' + new Date().getTime();
         | 
| 4042 4071 | 
             
            		options.afterError = options.afterError || function(str) {
         | 
| 4043 4072 | 
             
            			alert(str);
         | 
| 4044 4073 | 
             
            		};
         | 
| 4074 | 
            +
            		var hiddenElements = [];
         | 
| 4075 | 
            +
            		for(var k in extraParams){
         | 
| 4076 | 
            +
            			hiddenElements.push('<input type="hidden" name="' + k + '" value="' + extraParams[k] + '" />');
         | 
| 4077 | 
            +
            		}
         | 
| 4045 4078 | 
             
            		var html = [
         | 
| 4046 4079 | 
             
            			'<div class="ke-inline-block ' + cls + '">',
         | 
| 4047 | 
            -
            			'<iframe name="' + target + '" style="display:none;"></iframe>',
         | 
| 4048 | 
            -
            			'<form class="ke-upload-area ke-form" method="post" enctype="multipart/form-data" target="' + target + '" action="' + url + '">',
         | 
| 4080 | 
            +
            			(options.target ? '' : '<iframe name="' + target + '" style="display:none;"></iframe>'),
         | 
| 4081 | 
            +
            			(options.form ? '<div class="ke-upload-area">' : '<form class="ke-upload-area ke-form" method="post" enctype="multipart/form-data" target="' + target + '" action="' + url + '">'),
         | 
| 4049 4082 | 
             
            			'<span class="ke-button-common">',
         | 
| 4083 | 
            +
            			hiddenElements.join(''),
         | 
| 4050 4084 | 
             
            			'<input type="button" class="ke-button-common ke-button" value="' + title + '" />',
         | 
| 4051 4085 | 
             
            			'</span>',
         | 
| 4052 4086 | 
             
            			'<input type="file" class="ke-upload-file" name="' + fieldName + '" tabindex="-1" />',
         | 
| 4053 | 
            -
            			'</ | 
| 4087 | 
            +
            			(options.form ? '</div>' : '</form>'),
         | 
| 4088 | 
            +
            			'</div>'].join('');
         | 
| 4054 4089 | 
             
            		var div = K(html, button.doc);
         | 
| 4055 4090 | 
             
            		button.hide();
         | 
| 4056 4091 | 
             
            		button.before(div);
         | 
| 4057 4092 | 
             
            		self.div = div;
         | 
| 4058 4093 | 
             
            		self.button = button;
         | 
| 4059 | 
            -
            		self.iframe = K('iframe', div);
         | 
| 4060 | 
            -
            		self.form = K('form', div);
         | 
| 4094 | 
            +
            		self.iframe = options.target ? K('iframe[name="' + target + '"]') : K('iframe', div);
         | 
| 4095 | 
            +
            		self.form = options.form ? K(options.form) : K('form', div);
         | 
| 4061 4096 | 
             
            		var width = options.width || K('.ke-button-common', div).width();
         | 
| 4062 4097 | 
             
            		self.fileBox = K('.ke-upload-file', div).width(width);
         | 
| 4063 4098 | 
             
            		self.options = options;
         | 
| @@ -4195,6 +4230,7 @@ _extend(KDialog, KWidget, { | |
| 4195 4230 | 
             
            		self.footerDiv = footerDiv;
         | 
| 4196 4231 | 
             
            		self.bodyDiv = bodyDiv;
         | 
| 4197 4232 | 
             
            		self.headerDiv = headerDiv;
         | 
| 4233 | 
            +
            		self.isLoading = false;
         | 
| 4198 4234 | 
             
            	},
         | 
| 4199 4235 | 
             
            	setMaskIndex : function(z) {
         | 
| 4200 4236 | 
             
            		var self = this;
         | 
| @@ -4207,11 +4243,13 @@ _extend(KDialog, KWidget, { | |
| 4207 4243 | 
             
            			.width(body.width()).height(body.height())
         | 
| 4208 4244 | 
             
            			.css('top', self.headerDiv.height() + 'px');
         | 
| 4209 4245 | 
             
            		body.css('visibility', 'hidden').after(self.loading);
         | 
| 4246 | 
            +
            		self.isLoading = true;
         | 
| 4210 4247 | 
             
            		return self;
         | 
| 4211 4248 | 
             
            	},
         | 
| 4212 4249 | 
             
            	hideLoading : function() {
         | 
| 4213 4250 | 
             
            		this.loading && this.loading.remove();
         | 
| 4214 4251 | 
             
            		this.bodyDiv.css('visibility', 'visible');
         | 
| 4252 | 
            +
            		this.isLoading = false;
         | 
| 4215 4253 | 
             
            		return this;
         | 
| 4216 4254 | 
             
            	},
         | 
| 4217 4255 | 
             
            	remove : function() {
         | 
| @@ -4490,7 +4528,7 @@ function _bindNewlineEvent() { | |
| 4490 4528 | 
             
            	if (_GECKO && _V < 3 && newlineTag !== 'p') {
         | 
| 4491 4529 | 
             
            		return;
         | 
| 4492 4530 | 
             
            	}
         | 
| 4493 | 
            -
            	if (_OPERA) {
         | 
| 4531 | 
            +
            	if (_OPERA && _V < 9) {
         | 
| 4494 4532 | 
             
            		return;
         | 
| 4495 4533 | 
             
            	}
         | 
| 4496 4534 | 
             
            	var brSkipTagMap = _toMap('h1,h2,h3,h4,h5,h6,pre,li'),
         | 
| @@ -4516,7 +4554,7 @@ function _bindNewlineEvent() { | |
| 4516 4554 | 
             
            		}
         | 
| 4517 4555 | 
             
            		if (newlineTag === 'br' && !brSkipTagMap[tagName]) {
         | 
| 4518 4556 | 
             
            			e.preventDefault();
         | 
| 4519 | 
            -
            			self.insertHtml('<br />');
         | 
| 4557 | 
            +
            			self.insertHtml('<br />' + (_IE && _V < 9 ? '' : '\u200B'));
         | 
| 4520 4558 | 
             
            			return;
         | 
| 4521 4559 | 
             
            		}
         | 
| 4522 4560 | 
             
            		if (!pSkipTagMap[tagName]) {
         | 
| @@ -4650,6 +4688,13 @@ function KEditor(options) { | |
| 4650 4688 | 
             
            			setOption(key, val);
         | 
| 4651 4689 | 
             
            		}
         | 
| 4652 4690 | 
             
            	});
         | 
| 4691 | 
            +
            	var se = K(self.srcElement || '<textarea/>');
         | 
| 4692 | 
            +
            	if (!self.width) {
         | 
| 4693 | 
            +
            		self.width = se[0].style.width || se.width();
         | 
| 4694 | 
            +
            	}
         | 
| 4695 | 
            +
            	if (!self.height) {
         | 
| 4696 | 
            +
            		self.height = se[0].style.height || se.height();
         | 
| 4697 | 
            +
            	}
         | 
| 4653 4698 | 
             
            	setOption('width', _undef(self.width, self.minWidth));
         | 
| 4654 4699 | 
             
            	setOption('height', _undef(self.height, self.minHeight));
         | 
| 4655 4700 | 
             
            	setOption('width', _addUnit(self.width));
         | 
| @@ -4657,7 +4702,6 @@ function KEditor(options) { | |
| 4657 4702 | 
             
            	if (_MOBILE && (!_IOS || _V < 534)) {
         | 
| 4658 4703 | 
             
            		self.designMode = false;
         | 
| 4659 4704 | 
             
            	}
         | 
| 4660 | 
            -
            	var se = K(self.srcElement || '<textarea/>');
         | 
| 4661 4705 | 
             
            	self.srcElement = se;
         | 
| 4662 4706 | 
             
            	self.initContent = '';
         | 
| 4663 4707 | 
             
            	self.plugin = {};
         | 
| @@ -5251,6 +5295,7 @@ KEditor.prototype = { | |
| 5251 5295 | 
             
            function _editor(options) {
         | 
| 5252 5296 | 
             
            	return new KEditor(options);
         | 
| 5253 5297 | 
             
            }
         | 
| 5298 | 
            +
            _instances = [];
         | 
| 5254 5299 | 
             
            function _create(expr, options) {
         | 
| 5255 5300 | 
             
            	options = options || {};
         | 
| 5256 5301 | 
             
            	options.basePath = _undef(options.basePath, K.basePath);
         | 
| @@ -5272,19 +5317,20 @@ function _create(expr, options) { | |
| 5272 5317 | 
             
            	if (!knode) {
         | 
| 5273 5318 | 
             
            		return;
         | 
| 5274 5319 | 
             
            	}
         | 
| 5275 | 
            -
            	 | 
| 5276 | 
            -
             | 
| 5277 | 
            -
             | 
| 5278 | 
            -
             | 
| 5279 | 
            -
             | 
| 5280 | 
            -
            		options.height = knode[0].style.height || knode.height();
         | 
| 5320 | 
            +
            	if (knode.length > 1) {
         | 
| 5321 | 
            +
            		knode.each(function() {
         | 
| 5322 | 
            +
            			_create(this, options);
         | 
| 5323 | 
            +
            		});
         | 
| 5324 | 
            +
            		return _instances[0];
         | 
| 5281 5325 | 
             
            	}
         | 
| 5326 | 
            +
            	options.srcElement = knode[0];
         | 
| 5282 5327 | 
             
            	var editor = new KEditor(options);
         | 
| 5328 | 
            +
            	_instances.push(editor);
         | 
| 5283 5329 | 
             
            	if (_language[editor.langType]) {
         | 
| 5284 5330 | 
             
            		return create(editor);
         | 
| 5285 5331 | 
             
            	}
         | 
| 5286 5332 | 
             
            	_loadScript(editor.langPath + editor.langType + '.js?ver=' + encodeURIComponent(K.DEBUG ? _TIME : _VERSION), function() {
         | 
| 5287 | 
            -
            		 | 
| 5333 | 
            +
            		create(editor);
         | 
| 5288 5334 | 
             
            	});
         | 
| 5289 5335 | 
             
            	return editor;
         | 
| 5290 5336 | 
             
            }
         | 
| @@ -5294,6 +5340,7 @@ if (_IE && _V < 7) { | |
| 5294 5340 | 
             
            K.EditorClass = KEditor;
         | 
| 5295 5341 | 
             
            K.editor = _editor;
         | 
| 5296 5342 | 
             
            K.create = _create;
         | 
| 5343 | 
            +
            K.instances = _instances;
         | 
| 5297 5344 | 
             
            K.plugin = _plugin;
         | 
| 5298 5345 | 
             
            K.lang = _lang;
         | 
| 5299 5346 | 
             
            _plugin('core', function(K) {
         | 
| @@ -5355,25 +5402,27 @@ _plugin('core', function(K) { | |
| 5355 5402 | 
             
            	self.clickToolbar('fullscreen', function() {
         | 
| 5356 5403 | 
             
            		self.fullscreen();
         | 
| 5357 5404 | 
             
            	});
         | 
| 5358 | 
            -
            	 | 
| 5359 | 
            -
             | 
| 5360 | 
            -
            		 | 
| 5361 | 
            -
            			 | 
| 5362 | 
            -
            				 | 
| 5363 | 
            -
            					 | 
| 5364 | 
            -
             | 
| 5405 | 
            +
            	if (self.fullscreenShortcut) {
         | 
| 5406 | 
            +
            		var loaded = false;
         | 
| 5407 | 
            +
            		self.afterCreate(function() {
         | 
| 5408 | 
            +
            			K(self.edit.doc, self.edit.textarea).keyup(function(e) {
         | 
| 5409 | 
            +
            				if (e.which == 27) {
         | 
| 5410 | 
            +
            					setTimeout(function() {
         | 
| 5411 | 
            +
            						self.fullscreen();
         | 
| 5412 | 
            +
            					}, 0);
         | 
| 5413 | 
            +
            				}
         | 
| 5414 | 
            +
            			});
         | 
| 5415 | 
            +
            			if (loaded) {
         | 
| 5416 | 
            +
            				if (_IE && !self.designMode) {
         | 
| 5417 | 
            +
            					return;
         | 
| 5418 | 
            +
            				}
         | 
| 5419 | 
            +
            				self.focus();
         | 
| 5365 5420 | 
             
            			}
         | 
| 5366 | 
            -
             | 
| 5367 | 
            -
             | 
| 5368 | 
            -
            			if (_IE && !self.designMode) {
         | 
| 5369 | 
            -
            				return;
         | 
| 5421 | 
            +
            			if (!loaded) {
         | 
| 5422 | 
            +
            				loaded = true;
         | 
| 5370 5423 | 
             
            			}
         | 
| 5371 | 
            -
             | 
| 5372 | 
            -
             | 
| 5373 | 
            -
            		if (!loaded) {
         | 
| 5374 | 
            -
            			loaded = true;
         | 
| 5375 | 
            -
            		}
         | 
| 5376 | 
            -
            	});
         | 
| 5424 | 
            +
            		});
         | 
| 5425 | 
            +
            	}
         | 
| 5377 5426 | 
             
            	_each('undo,redo'.split(','), function(i, name) {
         | 
| 5378 5427 | 
             
            		if (shortcutKeys[name]) {
         | 
| 5379 5428 | 
             
            			self.afterCreate(function() {
         | 
| @@ -5575,6 +5624,12 @@ _plugin('core', function(K) { | |
| 5575 5624 | 
             
            					K(this).after('<br />').remove(true);
         | 
| 5576 5625 | 
             
            				});
         | 
| 5577 5626 | 
             
            				K('span.Apple-style-span', div).remove(true);
         | 
| 5627 | 
            +
            				K('span.Apple-tab-span', div).remove(true);
         | 
| 5628 | 
            +
            				K('span[style]', div).each(function() {
         | 
| 5629 | 
            +
            					if (K(this).css('white-space') == 'nowrap') {
         | 
| 5630 | 
            +
            						K(this).remove(true);
         | 
| 5631 | 
            +
            					}
         | 
| 5632 | 
            +
            				});
         | 
| 5578 5633 | 
             
            				K('meta', div).remove();
         | 
| 5579 5634 | 
             
            			}
         | 
| 5580 5635 | 
             
            			var html = div[0].innerHTML;
         | 
| @@ -5646,7 +5701,10 @@ _plugin('core', function(K) { | |
| 5646 5701 | 
             
            		});
         | 
| 5647 5702 | 
             
            	});
         | 
| 5648 5703 | 
             
            	self.beforeGetHtml(function(html) {
         | 
| 5649 | 
            -
            		return html.replace( | 
| 5704 | 
            +
            		return html.replace(/(<(?:noscript|noscript\s[^>]*)>)([\s\S]*?)(<\/noscript>)/ig, function($0, $1, $2, $3) {
         | 
| 5705 | 
            +
            			return $1 + _unescape($2).replace(/\s+/g, ' ') + $3;
         | 
| 5706 | 
            +
            		})
         | 
| 5707 | 
            +
            		.replace(/<img[^>]*class="?ke-(flash|rm|media)"?[^>]*>/ig, function(full) {
         | 
| 5650 5708 | 
             
            			var imgAttrs = _getAttrList(full),
         | 
| 5651 5709 | 
             
            				styles = _getCssList(imgAttrs.style || ''),
         | 
| 5652 5710 | 
             
            				attrs = _mediaAttrs(imgAttrs['data-ke-tag']);
         | 
| @@ -5661,6 +5719,9 @@ _plugin('core', function(K) { | |
| 5661 5719 | 
             
            		.replace(/<div\s+[^>]*data-ke-script-attr="([^"]*)"[^>]*>([\s\S]*?)<\/div>/ig, function(full, attr, code) {
         | 
| 5662 5720 | 
             
            			return '<script' + unescape(attr) + '>' + unescape(code) + '</script>';
         | 
| 5663 5721 | 
             
            		})
         | 
| 5722 | 
            +
            		.replace(/<div\s+[^>]*data-ke-noscript-attr="([^"]*)"[^>]*>([\s\S]*?)<\/div>/ig, function(full, attr, code) {
         | 
| 5723 | 
            +
            			return '<noscript' + unescape(attr) + '>' + unescape(code) + '</noscript>';
         | 
| 5724 | 
            +
            		})
         | 
| 5664 5725 | 
             
            		.replace(/(<[^>]*)data-ke-src="([^"]*)"([^>]*>)/ig, function(full, start, src, end) {
         | 
| 5665 5726 | 
             
            			full = full.replace(/(\s+(?:href|src)=")[^"]*(")/i, '$1' + src + '$2');
         | 
| 5666 5727 | 
             
            			full = full.replace(/\s+data-ke-src="[^"]*"/i, '');
         | 
| @@ -5688,6 +5749,9 @@ _plugin('core', function(K) { | |
| 5688 5749 | 
             
            		.replace(/<script([^>]*)>([\s\S]*?)<\/script>/ig, function(full, attr, code) {
         | 
| 5689 5750 | 
             
            			return '<div class="ke-script" data-ke-script-attr="' + escape(attr) + '">' + escape(code) + '</div>';
         | 
| 5690 5751 | 
             
            		})
         | 
| 5752 | 
            +
            		.replace(/<noscript([^>]*)>([\s\S]*?)<\/noscript>/ig, function(full, attr, code) {
         | 
| 5753 | 
            +
            			return '<div class="ke-noscript" data-ke-noscript-attr="' + escape(attr) + '">' + escape(code) + '</div>';
         | 
| 5754 | 
            +
            		})
         | 
| 5691 5755 | 
             
            		.replace(/(<[^>]*)(href|src)="([^"]*)"([^>]*>)/ig, function(full, start, key, src, end) {
         | 
| 5692 5756 | 
             
            			if (full.match(/\sdata-ke-src="[^"]*"/i)) {
         | 
| 5693 5757 | 
             
            				return full;
         |