rails_kindeditor 0.4.5 → 0.4.6
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/README.md +26 -0
- data/lib/generators/rails_kindeditor/install/templates/rails_kindeditor.rb +10 -0
- data/lib/rails_kindeditor.rb +9 -3
- data/lib/rails_kindeditor/helper.rb +3 -1
- data/lib/rails_kindeditor/version.rb +1 -1
- data/vendor/assets/javascripts/kindeditor/kindeditor.js +3950 -11
- data/vendor/assets/javascripts/kindeditor/lang/ar.js +9 -0
- data/vendor/assets/javascripts/kindeditor/lang/en.js +9 -0
- data/vendor/assets/javascripts/kindeditor/lang/ko.js +246 -237
- data/vendor/assets/javascripts/kindeditor/lang/ru.js +242 -0
- data/vendor/assets/javascripts/kindeditor/lang/{zh_CN.js → zh-CN.js} +3 -1
- data/vendor/assets/javascripts/kindeditor/lang/{zh_TW.js → zh-TW.js} +243 -235
- data/vendor/assets/javascripts/kindeditor/plugins/anchor/anchor.js +46 -46
- data/vendor/assets/javascripts/kindeditor/plugins/autoheight/autoheight.js +54 -54
- data/vendor/assets/javascripts/kindeditor/plugins/baidumap/baidumap.js +93 -93
- data/vendor/assets/javascripts/kindeditor/plugins/baidumap/index.html +82 -82
- data/vendor/assets/javascripts/kindeditor/plugins/baidumap/map.html +43 -43
- 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/fixtoolbar/fixtoolbar.js +35 -0
- data/vendor/assets/javascripts/kindeditor/plugins/map/map.html +1 -1
- data/vendor/assets/javascripts/kindeditor/plugins/multiimage/images/{select-files-zh_CN.png → select-files-zh-CN.png} +0 -0
- data/vendor/assets/javascripts/kindeditor/plugins/multiimage/multiimage.js +1384 -1384
- 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/background.png +0 -0
- data/vendor/assets/javascripts/kindeditor/themes/default/default.css +1147 -1149
- data/vendor/assets/javascripts/kindeditor/themes/qq/qq.css +143 -143
- data/vendor/assets/javascripts/kindeditor/themes/simple/simple.css +100 -100
- metadata +15 -14
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 34a1caa64fbe3191d4baf1d8e46e0c534ae01515
|
4
|
+
data.tar.gz: 161088b41104740736b8de6c40e020651e046b34
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 622feef63934646240973a3c750bb0591ab63763c5ddab7de72fb5c9c8a813c0877725d9904faefc94134c84d73a720f3c88e94ebf606f47f3fb7497c05028fe
|
7
|
+
data.tar.gz: e39d0698e0c0191d5ee179458db002be90a0e3c24d4f17cb01237908fed1922dfb12943061adb4bd8b22783a2c5f3ab483d66cd359e6fc3c927f2249943cb1cf
|
data/README.md
CHANGED
@@ -184,6 +184,19 @@ You can customize some option for uploading.
|
|
184
184
|
# config.image_resize_to_limit = [800, 800]
|
185
185
|
```
|
186
186
|
|
187
|
+
## Asset host options configuration
|
188
|
+
|
189
|
+
```ruby
|
190
|
+
# if you have config in your rails application like this:
|
191
|
+
# /config/enviroments/production.rb
|
192
|
+
# # config.action_controller.asset_host = "http://asset.example.com"
|
193
|
+
# # config.assets.prefix = "assets_prefx"
|
194
|
+
# then you should:
|
195
|
+
#
|
196
|
+
config.asset_url_prefix = "http://asset.example.com/assets_prefx/" if Rails.env.production?
|
197
|
+
```
|
198
|
+
|
199
|
+
|
187
200
|
## Save upload file information into database(optional)
|
188
201
|
|
189
202
|
rails_kindeditor can save upload file information into database.
|
@@ -431,6 +444,19 @@ f.kindeditor :content, owner_id: @article.id, data: {upload: kindeditor_upload_j
|
|
431
444
|
# config.image_resize_to_limit = [800, 800]
|
432
445
|
```
|
433
446
|
|
447
|
+
## 静态资源地址配置
|
448
|
+
|
449
|
+
```ruby
|
450
|
+
# if you have config in your rails application like this:
|
451
|
+
# /config/enviroments/production.rb
|
452
|
+
# # config.action_controller.asset_host = "http://asset.example.com"
|
453
|
+
# # config.assets.prefix = "assets_prefx"
|
454
|
+
# then you should:
|
455
|
+
#
|
456
|
+
config.asset_url_prefix = "http://asset.example.com/assets_prefx/" if Rails.env.production?
|
457
|
+
```
|
458
|
+
|
459
|
+
|
434
460
|
## 将上传文件信息记录入数据库(可选)
|
435
461
|
|
436
462
|
rails_kindeditor 可以将上传文件信息记录入数据库,以便扩展应用.
|
@@ -16,4 +16,14 @@ RailsKindeditor.setup do |config|
|
|
16
16
|
# 400x400 => 400x400 # No Change
|
17
17
|
# config.image_resize_to_limit = [800, 800]
|
18
18
|
|
19
|
+
# if you have config in your rails application like this:
|
20
|
+
# /config/enviroments/production.rb
|
21
|
+
# # config.action_controller.asset_host = "http://asset.example.com"
|
22
|
+
# # config.assets.prefix = "assets_prefx"
|
23
|
+
# then you should:
|
24
|
+
#
|
25
|
+
# config.asset_url_prefix = "http://asset.example.com/assets_prefx/" if Rails.env.production?
|
26
|
+
|
27
|
+
|
28
|
+
|
19
29
|
end
|
data/lib/rails_kindeditor.rb
CHANGED
@@ -22,14 +22,20 @@ module RailsKindeditor
|
|
22
22
|
@@upload_file_ext = %w[doc docx xls xlsx ppt htm html txt zip rar gz bz2]
|
23
23
|
|
24
24
|
mattr_accessor :image_resize_to_limit
|
25
|
-
|
25
|
+
|
26
|
+
mattr_accessor :asset_url_prefix
|
27
|
+
|
28
|
+
def self.base_path
|
29
|
+
self.asset_url_prefix ? "#{self.asset_url_prefix}/kindeditor/" : '/assets/kindeditor/'
|
30
|
+
end
|
31
|
+
|
26
32
|
def self.root_path
|
27
33
|
@root_path ||= Pathname.new(File.dirname(File.expand_path('../', __FILE__)))
|
28
34
|
end
|
29
|
-
|
35
|
+
|
30
36
|
def self.assets
|
31
37
|
Dir[root_path.join('vendor/assets/javascripts/kindeditor/**', '*.{js,css}')].inject([]) do |assets, path|
|
32
|
-
assets << Pathname.new(path).relative_path_from(root_path.join('vendor/assets/javascripts'))
|
38
|
+
assets << Pathname.new(path).relative_path_from(root_path.join('vendor/assets/javascripts')).to_s
|
33
39
|
end
|
34
40
|
end
|
35
41
|
|
@@ -44,11 +44,13 @@ module RailsKindeditor
|
|
44
44
|
"var old_onload_#{random_name};
|
45
45
|
if(typeof window.onload == 'function') old_onload_#{random_name} = window.onload;
|
46
46
|
window.onload = function() {
|
47
|
+
KindEditor.basePath='#{RailsKindeditor.base_path}';
|
47
48
|
#{editor_id}KindEditor.create('##{dom_id}', #{get_options(options).to_json});
|
48
49
|
if(old_onload_#{random_name}) old_onload_#{random_name}();
|
49
50
|
}"
|
50
51
|
else
|
51
|
-
"KindEditor.
|
52
|
+
"KindEditor.basePath='#{RailsKindeditor.base_path}';
|
53
|
+
KindEditor.ready(function(K){
|
52
54
|
#{editor_id}K.create('##{dom_id}', #{get_options(options).to_json});
|
53
55
|
});"
|
54
56
|
end
|
@@ -1,23 +1,25 @@
|
|
1
1
|
/*******************************************************************************
|
2
2
|
* KindEditor - WYSIWYG HTML Editor for Internet
|
3
|
-
* Copyright (C) 2006-
|
3
|
+
* Copyright (C) 2006-2016 kindsoft.net
|
4
4
|
*
|
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.1.
|
8
|
+
* @version 4.1.11 (2016-03-31)
|
9
9
|
*******************************************************************************/
|
10
10
|
(function (window, undefined) {
|
11
11
|
if (window.KindEditor) {
|
12
12
|
return;
|
13
13
|
}
|
14
|
+
|
15
|
+
|
14
16
|
if (!window.console) {
|
15
17
|
window.console = {};
|
16
18
|
}
|
17
19
|
if (!console.log) {
|
18
20
|
console.log = function () {};
|
19
21
|
}
|
20
|
-
var _VERSION = '4.1.
|
22
|
+
var _VERSION = '4.1.11 (2016-03-31)',
|
21
23
|
_ua = navigator.userAgent.toLowerCase(),
|
22
24
|
_IE = _ua.indexOf('msie') > -1 && _ua.indexOf('opera') == -1,
|
23
25
|
_NEWIE = _ua.indexOf('msie') == -1 && _ua.indexOf('trident') > -1,
|
@@ -77,7 +79,7 @@ function _inString(val, str, delimiter) {
|
|
77
79
|
}
|
78
80
|
function _addUnit(val, unit) {
|
79
81
|
unit = unit || 'px';
|
80
|
-
return val &&
|
82
|
+
return val && /^-?\d+(?:\.\d+)?$/.test(val) ? val + unit : val;
|
81
83
|
}
|
82
84
|
function _removeUnit(val) {
|
83
85
|
var match;
|
@@ -154,6 +156,8 @@ function _extend(child, parent, proto) {
|
|
154
156
|
child.prototype = childProto;
|
155
157
|
child.parent = parent ? parent.prototype : null;
|
156
158
|
}
|
159
|
+
|
160
|
+
|
157
161
|
function _json(text) {
|
158
162
|
var match;
|
159
163
|
if ((match = /\{[\s\S]*\}|\[[\s\S]*\]/.exec(text))) {
|
@@ -214,6 +218,7 @@ var _INLINE_TAG_MAP = _toMap('a,abbr,acronym,b,basefont,bdo,big,br,button,cite,c
|
|
214
218
|
_AUTOCLOSE_TAG_MAP = _toMap('colgroup,dd,dt,li,options,p,td,tfoot,th,thead,tr'),
|
215
219
|
_FILL_ATTR_MAP = _toMap('checked,compact,declare,defer,disabled,ismap,multiple,nohref,noresize,noshade,nowrap,readonly,selected'),
|
216
220
|
_VALUE_TAG_MAP = _toMap('input,button,textarea,select');
|
221
|
+
|
217
222
|
// Begining of modification by Macrow
|
218
223
|
function _getBasePath() {
|
219
224
|
var refPath = '/assets/kindeditor/';
|
@@ -240,7 +245,7 @@ K.options = {
|
|
240
245
|
langPath : K.basePath + 'lang/',
|
241
246
|
pluginsPath : K.basePath + 'plugins/',
|
242
247
|
themeType : 'default',
|
243
|
-
langType : '
|
248
|
+
langType : 'zh-CN',
|
244
249
|
urlType : '',
|
245
250
|
newlineTag : 'p',
|
246
251
|
resizeType : 2,
|
@@ -298,7 +303,7 @@ K.options = {
|
|
298
303
|
'.font-style', '.text-decoration', '.vertical-align', '.background', '.border'
|
299
304
|
],
|
300
305
|
a : ['id', 'class', 'href', 'target', 'name'],
|
301
|
-
embed : ['id', 'class', 'src', 'width', 'height', 'type', 'loop', 'autostart', 'quality', '.width', '.height', 'align', 'allowscriptaccess'],
|
306
|
+
embed : ['id', 'class', 'src', 'width', 'height', 'type', 'loop', 'autostart', 'quality', '.width', '.height', 'align', 'allowscriptaccess', 'wmode'],
|
302
307
|
img : ['id', 'class', 'src', 'width', 'height', 'border', 'alt', 'title', 'align', '.width', '.height', '.border'],
|
303
308
|
'p,ol,ul,li,blockquote,h1,h2,h3,h4,h5,h6' : [
|
304
309
|
'id', 'class', 'align', '.text-align', '.color', '.background-color', '.font-size', '.font-family', '.background',
|
@@ -311,9 +316,15 @@ K.options = {
|
|
311
316
|
},
|
312
317
|
layout : '<div class="container"><div class="toolbar"></div><div class="edit"></div><div class="statusbar"></div></div>'
|
313
318
|
};
|
319
|
+
|
320
|
+
|
314
321
|
var _useCapture = false;
|
322
|
+
|
323
|
+
|
315
324
|
var _INPUT_KEY_MAP = _toMap('8,9,13,32,46,48..57,59,61,65..90,106,109..111,188,190..192,219..222');
|
325
|
+
|
316
326
|
var _CURSORMOVE_KEY_MAP = _toMap('33..40');
|
327
|
+
|
317
328
|
var _CHANGE_KEY_MAP = {};
|
318
329
|
_each(_INPUT_KEY_MAP, function(key, val) {
|
319
330
|
_CHANGE_KEY_MAP[key] = val;
|
@@ -321,6 +332,8 @@ _each(_INPUT_KEY_MAP, function(key, val) {
|
|
321
332
|
_each(_CURSORMOVE_KEY_MAP, function(key, val) {
|
322
333
|
_CHANGE_KEY_MAP[key] = val;
|
323
334
|
});
|
335
|
+
|
336
|
+
|
324
337
|
function _bindEvent(el, type, fn) {
|
325
338
|
if (el.addEventListener){
|
326
339
|
el.addEventListener(type, fn, _useCapture);
|
@@ -328,6 +341,7 @@ function _bindEvent(el, type, fn) {
|
|
328
341
|
el.attachEvent('on' + type, fn);
|
329
342
|
}
|
330
343
|
}
|
344
|
+
|
331
345
|
function _unbindEvent(el, type, fn) {
|
332
346
|
if (el.removeEventListener){
|
333
347
|
el.removeEventListener(type, fn, _useCapture);
|
@@ -338,6 +352,8 @@ function _unbindEvent(el, type, fn) {
|
|
338
352
|
var _EVENT_PROPS = ('altKey,attrChange,attrName,bubbles,button,cancelable,charCode,clientX,clientY,ctrlKey,currentTarget,' +
|
339
353
|
'data,detail,eventPhase,fromElement,handler,keyCode,metaKey,newValue,offsetX,offsetY,originalTarget,pageX,' +
|
340
354
|
'pageY,prevValue,relatedNode,relatedTarget,screenX,screenY,shiftKey,srcElement,target,toElement,view,wheelDelta,which').split(',');
|
355
|
+
|
356
|
+
|
341
357
|
function KEvent(el, event) {
|
342
358
|
this.init(el, event);
|
343
359
|
}
|
@@ -595,7 +611,7 @@ function _ready(fn) {
|
|
595
611
|
}
|
596
612
|
_bind(window, 'load', readyFunc);
|
597
613
|
}
|
598
|
-
if (
|
614
|
+
if (window.attachEvent) {
|
599
615
|
window.attachEvent('onunload', function() {
|
600
616
|
_each(_eventData, function(key, events) {
|
601
617
|
if (events.el) {
|
@@ -606,6 +622,7 @@ if (_IE) {
|
|
606
622
|
}
|
607
623
|
K.ctrl = _ctrl;
|
608
624
|
K.ready = _ready;
|
625
|
+
|
609
626
|
function _getCssList(css) {
|
610
627
|
var list = {},
|
611
628
|
reg = /\s*([\w\-]+)\s*:([^;]*)(;|$)/g,
|
@@ -734,6 +751,8 @@ function _formatHtml(html, htmlTags, urlType, wellFormatted, indentChar) {
|
|
734
751
|
html = html.replace(/\u200B/g, '');
|
735
752
|
html = html.replace(/\u00A9/g, '©');
|
736
753
|
html = html.replace(/\u00AE/g, '®');
|
754
|
+
html = html.replace(/\u2003/g, ' ');
|
755
|
+
html = html.replace(/\u3000/g, ' ');
|
737
756
|
html = html.replace(/<[^>]+/g, function($0) {
|
738
757
|
return $0.replace(/\s+/g, ' ');
|
739
758
|
});
|
@@ -892,6 +911,7 @@ function _formatHtml(html, htmlTags, urlType, wellFormatted, indentChar) {
|
|
892
911
|
html = html.replace(/<span id="__kindeditor_pre_newline__">\n/g, '\n');
|
893
912
|
return _trim(html);
|
894
913
|
}
|
914
|
+
|
895
915
|
function _clearMsWord(html, htmlTags) {
|
896
916
|
html = html.replace(/<meta[\s\S]*?>/ig, '')
|
897
917
|
.replace(/<![\s\S]*?>/ig, '')
|
@@ -905,6 +925,7 @@ function _clearMsWord(html, htmlTags) {
|
|
905
925
|
});
|
906
926
|
return _formatHtml(html, htmlTags);
|
907
927
|
}
|
928
|
+
|
908
929
|
function _mediaType(src) {
|
909
930
|
if (/\.(rm|rmvb)(\?|$)/i.test(src)) {
|
910
931
|
return 'audio/x-pn-realaudio-plugin';
|
@@ -914,6 +935,7 @@ function _mediaType(src) {
|
|
914
935
|
}
|
915
936
|
return 'video/x-ms-asf-plugin';
|
916
937
|
}
|
938
|
+
|
917
939
|
function _mediaClass(type) {
|
918
940
|
if (/realaudio/i.test(type)) {
|
919
941
|
return 'ke-rm';
|
@@ -957,6 +979,10 @@ function _mediaImg(blankPath, attrs) {
|
|
957
979
|
html += 'data-ke-tag="' + escape(srcTag) + '" alt="" />';
|
958
980
|
return html;
|
959
981
|
}
|
982
|
+
|
983
|
+
|
984
|
+
|
985
|
+
|
960
986
|
function _tmpl(str, data) {
|
961
987
|
var fn = new Function("obj",
|
962
988
|
"var p=[],print=function(){p.push.apply(p,arguments);};" +
|
@@ -980,6 +1006,8 @@ K.mediaEmbed = _mediaEmbed;
|
|
980
1006
|
K.mediaImg = _mediaImg;
|
981
1007
|
K.clearMsWord = _clearMsWord;
|
982
1008
|
K.tmpl = _tmpl;
|
1009
|
+
|
1010
|
+
|
983
1011
|
function _contains(nodeA, nodeB) {
|
984
1012
|
if (nodeA.nodeType == 9 && nodeB.nodeType != 9) {
|
985
1013
|
return true;
|
@@ -1198,6 +1226,8 @@ function _query(expr, root) {
|
|
1198
1226
|
}
|
1199
1227
|
K.query = _query;
|
1200
1228
|
K.queryAll = _queryAll;
|
1229
|
+
|
1230
|
+
|
1201
1231
|
function _get(val) {
|
1202
1232
|
return K(val)[0];
|
1203
1233
|
}
|
@@ -1289,6 +1319,8 @@ function _getScrollPos(doc) {
|
|
1289
1319
|
}
|
1290
1320
|
return {x : x, y : y};
|
1291
1321
|
}
|
1322
|
+
|
1323
|
+
|
1292
1324
|
function KNode(node) {
|
1293
1325
|
this.init(node);
|
1294
1326
|
}
|
@@ -1795,6 +1827,8 @@ _each(_K, function(key, val) {
|
|
1795
1827
|
});
|
1796
1828
|
K.NodeClass = KNode;
|
1797
1829
|
window.KindEditor = K;
|
1830
|
+
|
1831
|
+
|
1798
1832
|
var _START_TO_START = 0,
|
1799
1833
|
_START_TO_END = 1,
|
1800
1834
|
_END_TO_END = 2,
|
@@ -1923,6 +1957,7 @@ function _copyAndDelete(range, isCopy, isDelete) {
|
|
1923
1957
|
}
|
1924
1958
|
return isCopy ? frag : range;
|
1925
1959
|
}
|
1960
|
+
|
1926
1961
|
function _moveToElementText(range, el) {
|
1927
1962
|
var node = el;
|
1928
1963
|
while (node) {
|
@@ -1936,6 +1971,7 @@ function _moveToElementText(range, el) {
|
|
1936
1971
|
range.moveToElementText(el);
|
1937
1972
|
} catch(e) {}
|
1938
1973
|
}
|
1974
|
+
|
1939
1975
|
function _getStartEnd(rng, isStart) {
|
1940
1976
|
var doc = rng.parentElement().ownerDocument,
|
1941
1977
|
pointRange = rng.duplicate();
|
@@ -2001,6 +2037,7 @@ function _getStartEnd(rng, isStart) {
|
|
2001
2037
|
}
|
2002
2038
|
return {node: startNode, offset: startPos};
|
2003
2039
|
}
|
2040
|
+
|
2004
2041
|
function _getEndRange(node, offset) {
|
2005
2042
|
var doc = node.ownerDocument || node,
|
2006
2043
|
range = doc.body.createTextRange();
|
@@ -2058,6 +2095,7 @@ function _getEndRange(node, offset) {
|
|
2058
2095
|
K(dummy).remove();
|
2059
2096
|
return range;
|
2060
2097
|
}
|
2098
|
+
|
2061
2099
|
function _toRange(rng) {
|
2062
2100
|
var doc, range;
|
2063
2101
|
function tr2td(start) {
|
@@ -2090,6 +2128,8 @@ function _toRange(rng) {
|
|
2090
2128
|
range.setEnd(rng.endContainer, rng.endOffset);
|
2091
2129
|
return range;
|
2092
2130
|
}
|
2131
|
+
|
2132
|
+
|
2093
2133
|
function KRange(doc) {
|
2094
2134
|
this.init(doc);
|
2095
2135
|
}
|
@@ -2506,11 +2546,15 @@ K.START_TO_START = _START_TO_START;
|
|
2506
2546
|
K.START_TO_END = _START_TO_END;
|
2507
2547
|
K.END_TO_END = _END_TO_END;
|
2508
2548
|
K.END_TO_START = _END_TO_START;
|
2549
|
+
|
2550
|
+
|
2551
|
+
|
2509
2552
|
function _nativeCommand(doc, key, val) {
|
2510
2553
|
try {
|
2511
2554
|
doc.execCommand(key, false, val);
|
2512
2555
|
} catch(e) {}
|
2513
2556
|
}
|
2557
|
+
|
2514
2558
|
function _nativeCommandValue(doc, key) {
|
2515
2559
|
var val = '';
|
2516
2560
|
try {
|
@@ -2521,10 +2565,12 @@ function _nativeCommandValue(doc, key) {
|
|
2521
2565
|
}
|
2522
2566
|
return val;
|
2523
2567
|
}
|
2568
|
+
|
2524
2569
|
function _getSel(doc) {
|
2525
2570
|
var win = _getWin(doc);
|
2526
2571
|
return _IERANGE ? doc.selection : win.getSelection();
|
2527
2572
|
}
|
2573
|
+
|
2528
2574
|
function _getRng(doc) {
|
2529
2575
|
var sel = _getSel(doc), rng;
|
2530
2576
|
try {
|
@@ -2539,6 +2585,7 @@ function _getRng(doc) {
|
|
2539
2585
|
}
|
2540
2586
|
return rng;
|
2541
2587
|
}
|
2588
|
+
|
2542
2589
|
function _singleKeyMap(map) {
|
2543
2590
|
var newMap = {}, arr, v;
|
2544
2591
|
_each(map, function(key, val) {
|
@@ -2550,6 +2597,7 @@ function _singleKeyMap(map) {
|
|
2550
2597
|
});
|
2551
2598
|
return newMap;
|
2552
2599
|
}
|
2600
|
+
|
2553
2601
|
function _hasAttrOrCss(knode, map) {
|
2554
2602
|
return _hasAttrOrCssByKey(knode, map, '*') || _hasAttrOrCssByKey(knode, map);
|
2555
2603
|
}
|
@@ -2581,6 +2629,7 @@ function _hasAttrOrCssByKey(knode, map, mapKey) {
|
|
2581
2629
|
}
|
2582
2630
|
return false;
|
2583
2631
|
}
|
2632
|
+
|
2584
2633
|
function _removeAttrOrCss(knode, map) {
|
2585
2634
|
if (knode.type != 1) {
|
2586
2635
|
return;
|
@@ -2619,6 +2668,7 @@ function _removeAttrOrCssByKey(knode, map, mapKey) {
|
|
2619
2668
|
knode.remove(true);
|
2620
2669
|
}
|
2621
2670
|
}
|
2671
|
+
|
2622
2672
|
function _getInnerNode(knode) {
|
2623
2673
|
var inner = knode;
|
2624
2674
|
while (inner.first()) {
|
@@ -2626,12 +2676,17 @@ function _getInnerNode(knode) {
|
|
2626
2676
|
}
|
2627
2677
|
return inner;
|
2628
2678
|
}
|
2679
|
+
|
2629
2680
|
function _isEmptyNode(knode) {
|
2630
2681
|
if (knode.type != 1 || knode.isSingle()) {
|
2631
2682
|
return false;
|
2632
2683
|
}
|
2633
2684
|
return knode.html().replace(/<[^>]+>/g, '') === '';
|
2634
2685
|
}
|
2686
|
+
|
2687
|
+
|
2688
|
+
|
2689
|
+
|
2635
2690
|
function _mergeWrapper(a, b) {
|
2636
2691
|
a = a.clone(true);
|
2637
2692
|
var lastA = _getInnerNode(a), childA = a, merged = false;
|
@@ -2651,6 +2706,7 @@ function _mergeWrapper(a, b) {
|
|
2651
2706
|
}
|
2652
2707
|
return a;
|
2653
2708
|
}
|
2709
|
+
|
2654
2710
|
function _wrapNode(knode, wrapper) {
|
2655
2711
|
wrapper = wrapper.clone(true);
|
2656
2712
|
if (knode.type == 3) {
|
@@ -2675,6 +2731,7 @@ function _wrapNode(knode, wrapper) {
|
|
2675
2731
|
nodeWrapper.replaceWith(wrapper);
|
2676
2732
|
return wrapper;
|
2677
2733
|
}
|
2734
|
+
|
2678
2735
|
function _mergeAttrs(knode, attrs, styles) {
|
2679
2736
|
_each(attrs, function(key, val) {
|
2680
2737
|
if (key !== 'style') {
|
@@ -2685,6 +2742,7 @@ function _mergeAttrs(knode, attrs, styles) {
|
|
2685
2742
|
knode.css(key, val);
|
2686
2743
|
});
|
2687
2744
|
}
|
2745
|
+
|
2688
2746
|
function _inPreElement(knode) {
|
2689
2747
|
while (knode && knode.name != 'body') {
|
2690
2748
|
if (_PRE_TAG_MAP[knode.name] || knode.name == 'div' && knode.hasClass('ke-script')) {
|
@@ -2694,6 +2752,7 @@ function _inPreElement(knode) {
|
|
2694
2752
|
}
|
2695
2753
|
return false;
|
2696
2754
|
}
|
2755
|
+
|
2697
2756
|
function KCmd(range) {
|
2698
2757
|
this.init(range);
|
2699
2758
|
}
|
@@ -3308,6 +3367,8 @@ function _cmd(mixed) {
|
|
3308
3367
|
}
|
3309
3368
|
K.CmdClass = KCmd;
|
3310
3369
|
K.cmd = _cmd;
|
3370
|
+
|
3371
|
+
|
3311
3372
|
function _drag(options) {
|
3312
3373
|
var moveEl = options.moveEl,
|
3313
3374
|
moveFn = options.moveFn,
|
@@ -3334,6 +3395,9 @@ function _drag(options) {
|
|
3334
3395
|
});
|
3335
3396
|
}
|
3336
3397
|
clickEl.mousedown(function(e) {
|
3398
|
+
if(e.button !== 0 && e.button !== 1) {
|
3399
|
+
return;
|
3400
|
+
}
|
3337
3401
|
e.stopPropagation();
|
3338
3402
|
var self = clickEl.get(),
|
3339
3403
|
x = _removeUnit(moveEl.css('left')),
|
@@ -3372,6 +3436,8 @@ function _drag(options) {
|
|
3372
3436
|
}
|
3373
3437
|
});
|
3374
3438
|
}
|
3439
|
+
|
3440
|
+
|
3375
3441
|
function KWidget(options) {
|
3376
3442
|
this.init(options);
|
3377
3443
|
}
|
@@ -3520,6 +3586,8 @@ function _widget(options) {
|
|
3520
3586
|
}
|
3521
3587
|
K.WidgetClass = KWidget;
|
3522
3588
|
K.widget = _widget;
|
3589
|
+
|
3590
|
+
|
3523
3591
|
function _iframeDoc(iframe) {
|
3524
3592
|
iframe = _get(iframe);
|
3525
3593
|
return iframe.contentDocument || iframe.contentWindow.document;
|
@@ -3609,6 +3677,8 @@ function _elementVal(knode, val) {
|
|
3609
3677
|
}
|
3610
3678
|
return knode.html(val);
|
3611
3679
|
}
|
3680
|
+
|
3681
|
+
|
3612
3682
|
function KEdit(options) {
|
3613
3683
|
this.init(options);
|
3614
3684
|
}
|
@@ -3748,7 +3818,6 @@ _extend(KEdit, KWidget, {
|
|
3748
3818
|
}
|
3749
3819
|
_elementVal(self.srcElement, self.html());
|
3750
3820
|
self.srcElement.show();
|
3751
|
-
doc.write('');
|
3752
3821
|
self.iframe.unbind();
|
3753
3822
|
self.textarea.unbind();
|
3754
3823
|
KEdit.parent.remove.call(self);
|
@@ -3795,9 +3864,15 @@ _extend(KEdit, KWidget, {
|
|
3795
3864
|
if (!self.designMode) {
|
3796
3865
|
val = self.html();
|
3797
3866
|
self.designMode = true;
|
3798
|
-
self.html(val);
|
3799
3867
|
self.textarea.hide();
|
3800
|
-
self.
|
3868
|
+
self.html(val);
|
3869
|
+
var iframe = self.iframe;
|
3870
|
+
var height = _removeUnit(self.height);
|
3871
|
+
iframe.height(height - 2);
|
3872
|
+
iframe.show();
|
3873
|
+
setTimeout(function() {
|
3874
|
+
iframe.height(height);
|
3875
|
+
}, 0);
|
3801
3876
|
}
|
3802
3877
|
} else {
|
3803
3878
|
if (self.designMode) {
|
@@ -3852,6 +3927,8 @@ function _edit(options) {
|
|
3852
3927
|
K.EditClass = KEdit;
|
3853
3928
|
K.edit = _edit;
|
3854
3929
|
K.iframeDoc = _iframeDoc;
|
3930
|
+
|
3931
|
+
|
3855
3932
|
function _selectToolbar(name, fn) {
|
3856
3933
|
var self = this,
|
3857
3934
|
knode = self.get(name);
|
@@ -3862,6 +3939,8 @@ function _selectToolbar(name, fn) {
|
|
3862
3939
|
fn(knode);
|
3863
3940
|
}
|
3864
3941
|
}
|
3942
|
+
|
3943
|
+
|
3865
3944
|
function KToolbar(options) {
|
3866
3945
|
this.init(options);
|
3867
3946
|
}
|
@@ -3980,6 +4059,9 @@ function _toolbar(options) {
|
|
3980
4059
|
}
|
3981
4060
|
K.ToolbarClass = KToolbar;
|
3982
4061
|
K.toolbar = _toolbar;
|
4062
|
+
|
4063
|
+
|
4064
|
+
|
3983
4065
|
function KMenu(options) {
|
3984
4066
|
this.init(options);
|
3985
4067
|
}
|
@@ -4061,6 +4143,9 @@ function _menu(options) {
|
|
4061
4143
|
}
|
4062
4144
|
K.MenuClass = KMenu;
|
4063
4145
|
K.menu = _menu;
|
4146
|
+
|
4147
|
+
|
4148
|
+
|
4064
4149
|
function KColorPicker(options) {
|
4065
4150
|
this.init(options);
|
4066
4151
|
}
|
@@ -4136,6 +4221,8 @@ function _colorpicker(options) {
|
|
4136
4221
|
}
|
4137
4222
|
K.ColorPickerClass = KColorPicker;
|
4138
4223
|
K.colorpicker = _colorpicker;
|
4224
|
+
|
4225
|
+
|
4139
4226
|
function KUploadButton(options) {
|
4140
4227
|
this.init(options);
|
4141
4228
|
}
|
@@ -4227,6 +4314,8 @@ function _uploadbutton(options) {
|
|
4227
4314
|
}
|
4228
4315
|
K.UploadButtonClass = KUploadButton;
|
4229
4316
|
K.uploadbutton = _uploadbutton;
|
4317
|
+
|
4318
|
+
|
4230
4319
|
function _createButton(arg) {
|
4231
4320
|
arg = arg || {};
|
4232
4321
|
var name = arg.name || '',
|
@@ -4238,6 +4327,8 @@ function _createButton(arg) {
|
|
4238
4327
|
span.append(btn);
|
4239
4328
|
return span;
|
4240
4329
|
}
|
4330
|
+
|
4331
|
+
|
4241
4332
|
function KDialog(options) {
|
4242
4333
|
this.init(options);
|
4243
4334
|
}
|
@@ -4362,6 +4453,8 @@ function _dialog(options) {
|
|
4362
4453
|
}
|
4363
4454
|
K.DialogClass = KDialog;
|
4364
4455
|
K.dialog = _dialog;
|
4456
|
+
|
4457
|
+
|
4365
4458
|
function _tabs(options) {
|
4366
4459
|
var self = _widget(options),
|
4367
4460
|
remove = self.remove,
|
@@ -4416,6 +4509,8 @@ function _tabs(options) {
|
|
4416
4509
|
return self;
|
4417
4510
|
}
|
4418
4511
|
K.tabs = _tabs;
|
4512
|
+
|
4513
|
+
|
4419
4514
|
function _loadScript(url, fn) {
|
4420
4515
|
var head = document.getElementsByTagName('head')[0] || (_QUIRKS ? document.body : document.documentElement),
|
4421
4516
|
script = document.createElement('script');
|
@@ -4432,6 +4527,8 @@ function _loadScript(url, fn) {
|
|
4432
4527
|
}
|
4433
4528
|
};
|
4434
4529
|
}
|
4530
|
+
|
4531
|
+
|
4435
4532
|
function _chopQuery(url) {
|
4436
4533
|
var index = url.indexOf('?');
|
4437
4534
|
return index > 0 ? url.substr(0, index) : url;
|
@@ -4482,6 +4579,8 @@ function _ajax(url, fn, method, param, dataType) {
|
|
4482
4579
|
K.loadScript = _loadScript;
|
4483
4580
|
K.loadStyle = _loadStyle;
|
4484
4581
|
K.ajax = _ajax;
|
4582
|
+
|
4583
|
+
|
4485
4584
|
var _plugins = {};
|
4486
4585
|
function _plugin(name, fn) {
|
4487
4586
|
if (name === undefined) {
|
@@ -4525,6 +4624,8 @@ function _lang(mixed, langType) {
|
|
4525
4624
|
_language[langType][obj.ns][obj.key] = val;
|
4526
4625
|
});
|
4527
4626
|
}
|
4627
|
+
|
4628
|
+
|
4528
4629
|
function _getImageFromRange(range, fn) {
|
4529
4630
|
if (range.collapsed) {
|
4530
4631
|
return;
|
@@ -4735,6 +4836,9 @@ function _addBookmarkToStack(stack, bookmark) {
|
|
4735
4836
|
stack.push(bookmark);
|
4736
4837
|
}
|
4737
4838
|
}
|
4839
|
+
|
4840
|
+
|
4841
|
+
|
4738
4842
|
function _undoToRedo(fromStack, toStack) {
|
4739
4843
|
var self = this, edit = self.edit,
|
4740
4844
|
body = edit.doc.body,
|
@@ -4816,6 +4920,10 @@ KEditor.prototype = {
|
|
4816
4920
|
},
|
4817
4921
|
loadPlugin : function(name, fn) {
|
4818
4922
|
var self = this;
|
4923
|
+
var _pluginStatus = this._pluginStatus;
|
4924
|
+
if (!_pluginStatus) {
|
4925
|
+
_pluginStatus = this._pluginStatus = {};
|
4926
|
+
}
|
4819
4927
|
if (_plugins[name]) {
|
4820
4928
|
if (!_isFunction(_plugins[name])) {
|
4821
4929
|
setTimeout(function() {
|
@@ -4823,7 +4931,10 @@ KEditor.prototype = {
|
|
4823
4931
|
}, 100);
|
4824
4932
|
return self;
|
4825
4933
|
}
|
4826
|
-
|
4934
|
+
if(!_pluginStatus[name]) {
|
4935
|
+
_plugins[name].call(self, KindEditor);
|
4936
|
+
_pluginStatus[name] = 'inited';
|
4937
|
+
}
|
4827
4938
|
if (fn) {
|
4828
4939
|
fn.call(self);
|
4829
4940
|
}
|
@@ -5421,6 +5532,10 @@ function _create(expr, options) {
|
|
5421
5532
|
_each(_plugins, function(name, fn) {
|
5422
5533
|
if (_isFunction(fn)) {
|
5423
5534
|
fn.call(editor, KindEditor);
|
5535
|
+
if (!editor._pluginStatus) {
|
5536
|
+
editor._pluginStatus = {};
|
5537
|
+
}
|
5538
|
+
editor._pluginStatus[name] = 'inited';
|
5424
5539
|
}
|
5425
5540
|
});
|
5426
5541
|
return editor.create();
|
@@ -5482,6 +5597,8 @@ K.appendHtml = function(expr, val) {
|
|
5482
5597
|
this.appendHtml(val);
|
5483
5598
|
});
|
5484
5599
|
};
|
5600
|
+
|
5601
|
+
|
5485
5602
|
if (_IE && _V < 7) {
|
5486
5603
|
_nativeCommand(document, 'BackgroundImageCache', true);
|
5487
5604
|
}
|
@@ -5491,6 +5608,8 @@ K.create = _create;
|
|
5491
5608
|
K.instances = _instances;
|
5492
5609
|
K.plugin = _plugin;
|
5493
5610
|
K.lang = _lang;
|
5611
|
+
|
5612
|
+
|
5494
5613
|
_plugin('core', function(K) {
|
5495
5614
|
var self = this,
|
5496
5615
|
shortcutKeys = {
|
@@ -5852,6 +5971,8 @@ _plugin('core', function(K) {
|
|
5852
5971
|
} else {
|
5853
5972
|
cmd.range.selectNodeContents(div[0]);
|
5854
5973
|
cmd.select();
|
5974
|
+
div[0].tabIndex = -1;
|
5975
|
+
div[0].focus();
|
5855
5976
|
}
|
5856
5977
|
setTimeout(function() {
|
5857
5978
|
movePastedData();
|
@@ -5960,4 +6081,3822 @@ _plugin('core', function(K) {
|
|
5960
6081
|
});
|
5961
6082
|
});
|
5962
6083
|
});
|
6084
|
+
|
6085
|
+
|
5963
6086
|
})(window);
|
6087
|
+
|
6088
|
+
/*******************************************************************************
|
6089
|
+
* KindEditor - WYSIWYG HTML Editor for Internet
|
6090
|
+
* Copyright (C) 2006-2011 kindsoft.net
|
6091
|
+
*
|
6092
|
+
* @author Roddy <luolonghao@gmail.com>
|
6093
|
+
* @site http://www.kindsoft.net/
|
6094
|
+
* @licence http://www.kindsoft.net/license.php
|
6095
|
+
*******************************************************************************/
|
6096
|
+
KindEditor.lang({
|
6097
|
+
source : 'HTML代码',
|
6098
|
+
preview : '预览',
|
6099
|
+
undo : '后退(Ctrl+Z)',
|
6100
|
+
redo : '前进(Ctrl+Y)',
|
6101
|
+
cut : '剪切(Ctrl+X)',
|
6102
|
+
copy : '复制(Ctrl+C)',
|
6103
|
+
paste : '粘贴(Ctrl+V)',
|
6104
|
+
plainpaste : '粘贴为无格式文本',
|
6105
|
+
wordpaste : '从Word粘贴',
|
6106
|
+
selectall : '全选(Ctrl+A)',
|
6107
|
+
justifyleft : '左对齐',
|
6108
|
+
justifycenter : '居中',
|
6109
|
+
justifyright : '右对齐',
|
6110
|
+
justifyfull : '两端对齐',
|
6111
|
+
insertorderedlist : '编号',
|
6112
|
+
insertunorderedlist : '项目符号',
|
6113
|
+
indent : '增加缩进',
|
6114
|
+
outdent : '减少缩进',
|
6115
|
+
subscript : '下标',
|
6116
|
+
superscript : '上标',
|
6117
|
+
formatblock : '段落',
|
6118
|
+
fontname : '字体',
|
6119
|
+
fontsize : '文字大小',
|
6120
|
+
forecolor : '文字颜色',
|
6121
|
+
hilitecolor : '文字背景',
|
6122
|
+
bold : '粗体(Ctrl+B)',
|
6123
|
+
italic : '斜体(Ctrl+I)',
|
6124
|
+
underline : '下划线(Ctrl+U)',
|
6125
|
+
strikethrough : '删除线',
|
6126
|
+
removeformat : '删除格式',
|
6127
|
+
image : '图片',
|
6128
|
+
multiimage : '批量图片上传',
|
6129
|
+
flash : 'Flash',
|
6130
|
+
media : '视音频',
|
6131
|
+
table : '表格',
|
6132
|
+
tablecell : '单元格',
|
6133
|
+
hr : '插入横线',
|
6134
|
+
emoticons : '插入表情',
|
6135
|
+
link : '超级链接',
|
6136
|
+
unlink : '取消超级链接',
|
6137
|
+
fullscreen : '全屏显示',
|
6138
|
+
about : '关于',
|
6139
|
+
print : '打印(Ctrl+P)',
|
6140
|
+
filemanager : '文件空间',
|
6141
|
+
code : '插入程序代码',
|
6142
|
+
map : 'Google地图',
|
6143
|
+
baidumap : '百度地图',
|
6144
|
+
lineheight : '行距',
|
6145
|
+
clearhtml : '清理HTML代码',
|
6146
|
+
pagebreak : '插入分页符',
|
6147
|
+
quickformat : '一键排版',
|
6148
|
+
insertfile : '插入文件',
|
6149
|
+
template : '插入模板',
|
6150
|
+
anchor : '锚点',
|
6151
|
+
yes : '确定',
|
6152
|
+
no : '取消',
|
6153
|
+
close : '关闭',
|
6154
|
+
editImage : '图片属性',
|
6155
|
+
deleteImage : '删除图片',
|
6156
|
+
editFlash : 'Flash属性',
|
6157
|
+
deleteFlash : '删除Flash',
|
6158
|
+
editMedia : '视音频属性',
|
6159
|
+
deleteMedia : '删除视音频',
|
6160
|
+
editLink : '超级链接属性',
|
6161
|
+
deleteLink : '取消超级链接',
|
6162
|
+
editAnchor : '锚点属性',
|
6163
|
+
deleteAnchor : '删除锚点',
|
6164
|
+
tableprop : '表格属性',
|
6165
|
+
tablecellprop : '单元格属性',
|
6166
|
+
tableinsert : '插入表格',
|
6167
|
+
tabledelete : '删除表格',
|
6168
|
+
tablecolinsertleft : '左侧插入列',
|
6169
|
+
tablecolinsertright : '右侧插入列',
|
6170
|
+
tablerowinsertabove : '上方插入行',
|
6171
|
+
tablerowinsertbelow : '下方插入行',
|
6172
|
+
tablerowmerge : '向下合并单元格',
|
6173
|
+
tablecolmerge : '向右合并单元格',
|
6174
|
+
tablerowsplit : '拆分行',
|
6175
|
+
tablecolsplit : '拆分列',
|
6176
|
+
tablecoldelete : '删除列',
|
6177
|
+
tablerowdelete : '删除行',
|
6178
|
+
noColor : '无颜色',
|
6179
|
+
pleaseSelectFile : '请选择文件。',
|
6180
|
+
invalidImg : "请输入有效的URL地址。\n只允许jpg,gif,bmp,png格式。",
|
6181
|
+
invalidMedia : "请输入有效的URL地址。\n只允许swf,flv,mp3,wav,wma,wmv,mid,avi,mpg,asf,rm,rmvb格式。",
|
6182
|
+
invalidWidth : "宽度必须为数字。",
|
6183
|
+
invalidHeight : "高度必须为数字。",
|
6184
|
+
invalidBorder : "边框必须为数字。",
|
6185
|
+
invalidUrl : "请输入有效的URL地址。",
|
6186
|
+
invalidRows : '行数为必选项,只允许输入大于0的数字。',
|
6187
|
+
invalidCols : '列数为必选项,只允许输入大于0的数字。',
|
6188
|
+
invalidPadding : '边距必须为数字。',
|
6189
|
+
invalidSpacing : '间距必须为数字。',
|
6190
|
+
invalidJson : '服务器发生故障。',
|
6191
|
+
uploadSuccess : '上传成功。',
|
6192
|
+
cutError : '您的浏览器安全设置不允许使用剪切操作,请使用快捷键(Ctrl+X)来完成。',
|
6193
|
+
copyError : '您的浏览器安全设置不允许使用复制操作,请使用快捷键(Ctrl+C)来完成。',
|
6194
|
+
pasteError : '您的浏览器安全设置不允许使用粘贴操作,请使用快捷键(Ctrl+V)来完成。',
|
6195
|
+
ajaxLoading : '加载中,请稍候 ...',
|
6196
|
+
uploadLoading : '上传中,请稍候 ...',
|
6197
|
+
uploadError : '上传错误',
|
6198
|
+
'plainpaste.comment' : '请使用快捷键(Ctrl+V)把内容粘贴到下面的方框里。',
|
6199
|
+
'wordpaste.comment' : '请使用快捷键(Ctrl+V)把内容粘贴到下面的方框里。',
|
6200
|
+
'code.pleaseInput' : '请输入程序代码。',
|
6201
|
+
'link.url' : 'URL',
|
6202
|
+
'link.linkType' : '打开类型',
|
6203
|
+
'link.newWindow' : '新窗口',
|
6204
|
+
'link.selfWindow' : '当前窗口',
|
6205
|
+
'flash.url' : 'URL',
|
6206
|
+
'flash.width' : '宽度',
|
6207
|
+
'flash.height' : '高度',
|
6208
|
+
'flash.upload' : '上传',
|
6209
|
+
'flash.viewServer' : '文件空间',
|
6210
|
+
'media.url' : 'URL',
|
6211
|
+
'media.width' : '宽度',
|
6212
|
+
'media.height' : '高度',
|
6213
|
+
'media.autostart' : '自动播放',
|
6214
|
+
'media.upload' : '上传',
|
6215
|
+
'media.viewServer' : '文件空间',
|
6216
|
+
'image.remoteImage' : '网络图片',
|
6217
|
+
'image.localImage' : '本地上传',
|
6218
|
+
'image.remoteUrl' : '图片地址',
|
6219
|
+
'image.localUrl' : '上传文件',
|
6220
|
+
'image.size' : '图片大小',
|
6221
|
+
'image.width' : '宽',
|
6222
|
+
'image.height' : '高',
|
6223
|
+
'image.resetSize' : '重置大小',
|
6224
|
+
'image.align' : '对齐方式',
|
6225
|
+
'image.defaultAlign' : '默认方式',
|
6226
|
+
'image.leftAlign' : '左对齐',
|
6227
|
+
'image.rightAlign' : '右对齐',
|
6228
|
+
'image.imgTitle' : '图片说明',
|
6229
|
+
'image.upload' : '浏览...',
|
6230
|
+
'image.viewServer' : '图片空间',
|
6231
|
+
'multiimage.uploadDesc' : '允许用户同时上传<%=uploadLimit%>张图片,单张图片容量不超过<%=sizeLimit%>',
|
6232
|
+
'multiimage.startUpload' : '开始上传',
|
6233
|
+
'multiimage.clearAll' : '全部清空',
|
6234
|
+
'multiimage.insertAll' : '全部插入',
|
6235
|
+
'multiimage.queueLimitExceeded' : '文件数量超过限制。',
|
6236
|
+
'multiimage.fileExceedsSizeLimit' : '文件大小超过限制。',
|
6237
|
+
'multiimage.zeroByteFile' : '无法上传空文件。',
|
6238
|
+
'multiimage.invalidFiletype' : '文件类型不正确。',
|
6239
|
+
'multiimage.unknownError' : '发生异常,无法上传。',
|
6240
|
+
'multiimage.pending' : '等待上传',
|
6241
|
+
'multiimage.uploadError' : '上传失败',
|
6242
|
+
'filemanager.emptyFolder' : '空文件夹',
|
6243
|
+
'filemanager.moveup' : '移到上一级文件夹',
|
6244
|
+
'filemanager.viewType' : '显示方式:',
|
6245
|
+
'filemanager.viewImage' : '缩略图',
|
6246
|
+
'filemanager.listImage' : '详细信息',
|
6247
|
+
'filemanager.orderType' : '排序方式:',
|
6248
|
+
'filemanager.fileName' : '名称',
|
6249
|
+
'filemanager.fileSize' : '大小',
|
6250
|
+
'filemanager.fileType' : '类型',
|
6251
|
+
'insertfile.url' : 'URL',
|
6252
|
+
'insertfile.title' : '文件说明',
|
6253
|
+
'insertfile.upload' : '上传',
|
6254
|
+
'insertfile.viewServer' : '文件空间',
|
6255
|
+
'table.cells' : '单元格数',
|
6256
|
+
'table.rows' : '行数',
|
6257
|
+
'table.cols' : '列数',
|
6258
|
+
'table.size' : '大小',
|
6259
|
+
'table.width' : '宽度',
|
6260
|
+
'table.height' : '高度',
|
6261
|
+
'table.percent' : '%',
|
6262
|
+
'table.px' : 'px',
|
6263
|
+
'table.space' : '边距间距',
|
6264
|
+
'table.padding' : '边距',
|
6265
|
+
'table.spacing' : '间距',
|
6266
|
+
'table.align' : '对齐方式',
|
6267
|
+
'table.textAlign' : '水平对齐',
|
6268
|
+
'table.verticalAlign' : '垂直对齐',
|
6269
|
+
'table.alignDefault' : '默认',
|
6270
|
+
'table.alignLeft' : '左对齐',
|
6271
|
+
'table.alignCenter' : '居中',
|
6272
|
+
'table.alignRight' : '右对齐',
|
6273
|
+
'table.alignTop' : '顶部',
|
6274
|
+
'table.alignMiddle' : '中部',
|
6275
|
+
'table.alignBottom' : '底部',
|
6276
|
+
'table.alignBaseline' : '基线',
|
6277
|
+
'table.border' : '边框',
|
6278
|
+
'table.borderWidth' : '边框',
|
6279
|
+
'table.borderColor' : '颜色',
|
6280
|
+
'table.backgroundColor' : '背景颜色',
|
6281
|
+
'map.address' : '地址: ',
|
6282
|
+
'map.search' : '搜索',
|
6283
|
+
'baidumap.address' : '地址: ',
|
6284
|
+
'baidumap.search' : '搜索',
|
6285
|
+
'baidumap.insertDynamicMap' : '插入动态地图',
|
6286
|
+
'anchor.name' : '锚点名称',
|
6287
|
+
'formatblock.formatBlock' : {
|
6288
|
+
h1 : '标题 1',
|
6289
|
+
h2 : '标题 2',
|
6290
|
+
h3 : '标题 3',
|
6291
|
+
h4 : '标题 4',
|
6292
|
+
p : '正 文'
|
6293
|
+
},
|
6294
|
+
'fontname.fontName' : {
|
6295
|
+
'SimSun' : '宋体',
|
6296
|
+
'NSimSun' : '新宋体',
|
6297
|
+
'FangSong_GB2312' : '仿宋_GB2312',
|
6298
|
+
'KaiTi_GB2312' : '楷体_GB2312',
|
6299
|
+
'SimHei' : '黑体',
|
6300
|
+
'Microsoft YaHei' : '微软雅黑',
|
6301
|
+
'Arial' : 'Arial',
|
6302
|
+
'Arial Black' : 'Arial Black',
|
6303
|
+
'Times New Roman' : 'Times New Roman',
|
6304
|
+
'Courier New' : 'Courier New',
|
6305
|
+
'Tahoma' : 'Tahoma',
|
6306
|
+
'Verdana' : 'Verdana'
|
6307
|
+
},
|
6308
|
+
'lineheight.lineHeight' : [
|
6309
|
+
{'1' : '单倍行距'},
|
6310
|
+
{'1.5' : '1.5倍行距'},
|
6311
|
+
{'2' : '2倍行距'},
|
6312
|
+
{'2.5' : '2.5倍行距'},
|
6313
|
+
{'3' : '3倍行距'}
|
6314
|
+
],
|
6315
|
+
'template.selectTemplate' : '可选模板',
|
6316
|
+
'template.replaceContent' : '替换当前内容',
|
6317
|
+
'template.fileList' : {
|
6318
|
+
'1.html' : '图片和文字',
|
6319
|
+
'2.html' : '表格',
|
6320
|
+
'3.html' : '项目编号'
|
6321
|
+
}
|
6322
|
+
}, 'zh-CN');
|
6323
|
+
KindEditor.options.langType = 'zh-CN';
|
6324
|
+
/*******************************************************************************
|
6325
|
+
* KindEditor - WYSIWYG HTML Editor for Internet
|
6326
|
+
* Copyright (C) 2006-2011 kindsoft.net
|
6327
|
+
*
|
6328
|
+
* @author Roddy <luolonghao@gmail.com>
|
6329
|
+
* @site http://www.kindsoft.net/
|
6330
|
+
* @licence http://www.kindsoft.net/license.php
|
6331
|
+
*******************************************************************************/
|
6332
|
+
KindEditor.plugin('anchor', function(K) {
|
6333
|
+
var self = this, name = 'anchor', lang = self.lang(name + '.');
|
6334
|
+
self.plugin.anchor = {
|
6335
|
+
edit : function() {
|
6336
|
+
var html = ['<div style="padding:20px;">',
|
6337
|
+
'<div class="ke-dialog-row">',
|
6338
|
+
'<label for="keName">' + lang.name + '</label>',
|
6339
|
+
'<input class="ke-input-text" type="text" id="keName" name="name" value="" style="width:100px;" />',
|
6340
|
+
'</div>',
|
6341
|
+
'</div>'].join('');
|
6342
|
+
var dialog = self.createDialog({
|
6343
|
+
name : name,
|
6344
|
+
width : 300,
|
6345
|
+
title : self.lang(name),
|
6346
|
+
body : html,
|
6347
|
+
yesBtn : {
|
6348
|
+
name : self.lang('yes'),
|
6349
|
+
click : function(e) {
|
6350
|
+
self.insertHtml('<a name="' + nameBox.val() + '">').hideDialog().focus();
|
6351
|
+
}
|
6352
|
+
}
|
6353
|
+
});
|
6354
|
+
var div = dialog.div,
|
6355
|
+
nameBox = K('input[name="name"]', div);
|
6356
|
+
var img = self.plugin.getSelectedAnchor();
|
6357
|
+
if (img) {
|
6358
|
+
nameBox.val(unescape(img.attr('data-ke-name')));
|
6359
|
+
}
|
6360
|
+
nameBox[0].focus();
|
6361
|
+
nameBox[0].select();
|
6362
|
+
},
|
6363
|
+
'delete' : function() {
|
6364
|
+
self.plugin.getSelectedAnchor().remove();
|
6365
|
+
}
|
6366
|
+
};
|
6367
|
+
self.clickToolbar(name, self.plugin.anchor.edit);
|
6368
|
+
});
|
6369
|
+
|
6370
|
+
/*******************************************************************************
|
6371
|
+
* KindEditor - WYSIWYG HTML Editor for Internet
|
6372
|
+
* Copyright (C) 2006-2011 kindsoft.net
|
6373
|
+
*
|
6374
|
+
* @author Roddy <luolonghao@gmail.com>
|
6375
|
+
* @site http://www.kindsoft.net/
|
6376
|
+
* @licence http://www.kindsoft.net/license.php
|
6377
|
+
*******************************************************************************/
|
6378
|
+
KindEditor.plugin('autoheight', function(K) {
|
6379
|
+
var self = this;
|
6380
|
+
if (!self.autoHeightMode) {
|
6381
|
+
return;
|
6382
|
+
}
|
6383
|
+
var minHeight;
|
6384
|
+
function hideScroll() {
|
6385
|
+
var edit = self.edit;
|
6386
|
+
var body = edit.doc.body;
|
6387
|
+
edit.iframe[0].scroll = 'no';
|
6388
|
+
body.style.overflowY = 'hidden';
|
6389
|
+
}
|
6390
|
+
function resetHeight() {
|
6391
|
+
var edit = self.edit;
|
6392
|
+
var body = edit.doc.body;
|
6393
|
+
edit.iframe.height(minHeight);
|
6394
|
+
self.resize(null, Math.max((K.IE ? body.scrollHeight : body.offsetHeight) + 76, minHeight));
|
6395
|
+
}
|
6396
|
+
function init() {
|
6397
|
+
minHeight = K.removeUnit(self.height);
|
6398
|
+
self.edit.afterChange(resetHeight);
|
6399
|
+
hideScroll();
|
6400
|
+
resetHeight();
|
6401
|
+
}
|
6402
|
+
if (self.isCreated) {
|
6403
|
+
init();
|
6404
|
+
} else {
|
6405
|
+
self.afterCreate(init);
|
6406
|
+
}
|
6407
|
+
});
|
6408
|
+
/*
|
6409
|
+
* 如何实现真正的自动高度?
|
6410
|
+
* 修改编辑器高度之后,再次获取body内容高度时,最小值只会是当前iframe的设置高度,这样就导致高度只增不减。
|
6411
|
+
* 所以每次获取body内容高度之前,先将iframe的高度重置为最小高度,这样就能获取body的实际高度。
|
6412
|
+
* 由此就实现了真正的自动高度
|
6413
|
+
* 测试:chrome、firefox、IE9、IE8
|
6414
|
+
* */
|
6415
|
+
|
6416
|
+
/*******************************************************************************
|
6417
|
+
* KindEditor - WYSIWYG HTML Editor for Internet
|
6418
|
+
* Copyright (C) 2006-2011 kindsoft.net
|
6419
|
+
*
|
6420
|
+
* @author Roddy <luolonghao@gmail.com>
|
6421
|
+
* @site http://www.kindsoft.net/
|
6422
|
+
* @licence http://www.kindsoft.net/license.php
|
6423
|
+
*******************************************************************************/
|
6424
|
+
KindEditor.plugin('baidumap', function(K) {
|
6425
|
+
var self = this, name = 'baidumap', lang = self.lang(name + '.');
|
6426
|
+
var mapWidth = K.undef(self.mapWidth, 558);
|
6427
|
+
var mapHeight = K.undef(self.mapHeight, 360);
|
6428
|
+
self.clickToolbar(name, function() {
|
6429
|
+
var html = ['<div style="padding:10px 20px;">',
|
6430
|
+
'<div class="ke-header">',
|
6431
|
+
'<div class="ke-left">',
|
6432
|
+
lang.address + ' <input id="kindeditor_plugin_map_address" name="address" class="ke-input-text" value="" style="width:200px;" /> ',
|
6433
|
+
'<span class="ke-button-common ke-button-outer">',
|
6434
|
+
'<input type="button" name="searchBtn" class="ke-button-common ke-button" value="' + lang.search + '" />',
|
6435
|
+
'</span>',
|
6436
|
+
'</div>',
|
6437
|
+
'<div class="ke-right">',
|
6438
|
+
'<input type="checkbox" id="keInsertDynamicMap" name="insertDynamicMap" value="1" /> <label for="keInsertDynamicMap">' + lang.insertDynamicMap + '</label>',
|
6439
|
+
'</div>',
|
6440
|
+
'<div class="ke-clearfix"></div>',
|
6441
|
+
'</div>',
|
6442
|
+
'<div class="ke-map" style="width:' + mapWidth + 'px;height:' + mapHeight + 'px;"></div>',
|
6443
|
+
'</div>'].join('');
|
6444
|
+
var dialog = self.createDialog({
|
6445
|
+
name : name,
|
6446
|
+
width : mapWidth + 42,
|
6447
|
+
title : self.lang(name),
|
6448
|
+
body : html,
|
6449
|
+
yesBtn : {
|
6450
|
+
name : self.lang('yes'),
|
6451
|
+
click : function(e) {
|
6452
|
+
var map = win.map;
|
6453
|
+
var centerObj = map.getCenter();
|
6454
|
+
var center = centerObj.lng + ',' + centerObj.lat;
|
6455
|
+
var zoom = map.getZoom();
|
6456
|
+
var url = [checkbox[0].checked ? self.pluginsPath + 'baidumap/index.html' : 'http://api.map.baidu.com/staticimage',
|
6457
|
+
'?center=' + encodeURIComponent(center),
|
6458
|
+
'&zoom=' + encodeURIComponent(zoom),
|
6459
|
+
'&width=' + mapWidth,
|
6460
|
+
'&height=' + mapHeight,
|
6461
|
+
'&markers=' + encodeURIComponent(center),
|
6462
|
+
'&markerStyles=' + encodeURIComponent('l,A')].join('');
|
6463
|
+
if (checkbox[0].checked) {
|
6464
|
+
self.insertHtml('<iframe src="' + url + '" frameborder="0" style="width:' + (mapWidth + 2) + 'px;height:' + (mapHeight + 2) + 'px;"></iframe>');
|
6465
|
+
} else {
|
6466
|
+
self.exec('insertimage', url);
|
6467
|
+
}
|
6468
|
+
self.hideDialog().focus();
|
6469
|
+
}
|
6470
|
+
},
|
6471
|
+
beforeRemove : function() {
|
6472
|
+
searchBtn.remove();
|
6473
|
+
if (doc) {
|
6474
|
+
doc.write('');
|
6475
|
+
}
|
6476
|
+
iframe.remove();
|
6477
|
+
}
|
6478
|
+
});
|
6479
|
+
var div = dialog.div,
|
6480
|
+
addressBox = K('[name="address"]', div),
|
6481
|
+
searchBtn = K('[name="searchBtn"]', div),
|
6482
|
+
checkbox = K('[name="insertDynamicMap"]', dialog.div),
|
6483
|
+
win, doc;
|
6484
|
+
var iframe = K('<iframe class="ke-textarea" frameborder="0" src="' + self.pluginsPath + 'baidumap/map.html" style="width:' + mapWidth + 'px;height:' + mapHeight + 'px;"></iframe>');
|
6485
|
+
function ready() {
|
6486
|
+
win = iframe[0].contentWindow;
|
6487
|
+
doc = K.iframeDoc(iframe);
|
6488
|
+
}
|
6489
|
+
iframe.bind('load', function() {
|
6490
|
+
iframe.unbind('load');
|
6491
|
+
if (K.IE) {
|
6492
|
+
ready();
|
6493
|
+
} else {
|
6494
|
+
setTimeout(ready, 0);
|
6495
|
+
}
|
6496
|
+
});
|
6497
|
+
K('.ke-map', div).replaceWith(iframe);
|
6498
|
+
searchBtn.click(function() {
|
6499
|
+
win.search(addressBox.val());
|
6500
|
+
});
|
6501
|
+
});
|
6502
|
+
});
|
6503
|
+
|
6504
|
+
/*******************************************************************************
|
6505
|
+
* KindEditor - WYSIWYG HTML Editor for Internet
|
6506
|
+
* Copyright (C) 2006-2011 kindsoft.net
|
6507
|
+
*
|
6508
|
+
* @author Roddy <luolonghao@gmail.com>
|
6509
|
+
* @site http://www.kindsoft.net/
|
6510
|
+
* @licence http://www.kindsoft.net/license.php
|
6511
|
+
*******************************************************************************/
|
6512
|
+
|
6513
|
+
|
6514
|
+
KindEditor.plugin('map', function(K) {
|
6515
|
+
var self = this, name = 'map', lang = self.lang(name + '.');
|
6516
|
+
self.clickToolbar(name, function() {
|
6517
|
+
var html = ['<div style="padding:10px 20px;">',
|
6518
|
+
'<div class="ke-dialog-row">',
|
6519
|
+
lang.address + ' <input id="kindeditor_plugin_map_address" name="address" class="ke-input-text" value="" style="width:200px;" /> ',
|
6520
|
+
'<span class="ke-button-common ke-button-outer">',
|
6521
|
+
'<input type="button" name="searchBtn" class="ke-button-common ke-button" value="' + lang.search + '" />',
|
6522
|
+
'</span>',
|
6523
|
+
'</div>',
|
6524
|
+
'<div class="ke-map" style="width:558px;height:360px;"></div>',
|
6525
|
+
'</div>'].join('');
|
6526
|
+
var dialog = self.createDialog({
|
6527
|
+
name : name,
|
6528
|
+
width : 600,
|
6529
|
+
title : self.lang(name),
|
6530
|
+
body : html,
|
6531
|
+
yesBtn : {
|
6532
|
+
name : self.lang('yes'),
|
6533
|
+
click : function(e) {
|
6534
|
+
var geocoder = win.geocoder,
|
6535
|
+
map = win.map,
|
6536
|
+
center = map.getCenter().lat() + ',' + map.getCenter().lng(),
|
6537
|
+
zoom = map.getZoom(),
|
6538
|
+
maptype = map.getMapTypeId(),
|
6539
|
+
url = 'http://maps.googleapis.com/maps/api/staticmap';
|
6540
|
+
url += '?center=' + encodeURIComponent(center);
|
6541
|
+
url += '&zoom=' + encodeURIComponent(zoom);
|
6542
|
+
url += '&size=558x360';
|
6543
|
+
url += '&maptype=' + encodeURIComponent(maptype);
|
6544
|
+
url += '&markers=' + encodeURIComponent(center);
|
6545
|
+
url += '&language=' + self.langType;
|
6546
|
+
url += '&sensor=false';
|
6547
|
+
self.exec('insertimage', url).hideDialog().focus();
|
6548
|
+
}
|
6549
|
+
},
|
6550
|
+
beforeRemove : function() {
|
6551
|
+
searchBtn.remove();
|
6552
|
+
if (doc) {
|
6553
|
+
doc.write('');
|
6554
|
+
}
|
6555
|
+
iframe.remove();
|
6556
|
+
}
|
6557
|
+
});
|
6558
|
+
var div = dialog.div,
|
6559
|
+
addressBox = K('[name="address"]', div),
|
6560
|
+
searchBtn = K('[name="searchBtn"]', div),
|
6561
|
+
win, doc;
|
6562
|
+
var iframeHtml = ['<!doctype html><html><head>',
|
6563
|
+
'<meta name="viewport" content="initial-scale=1.0, user-scalable=no" />',
|
6564
|
+
'<style>',
|
6565
|
+
' html { height: 100% }',
|
6566
|
+
' body { height: 100%; margin: 0; padding: 0; background-color: #FFF }',
|
6567
|
+
' #map_canvas { height: 100% }',
|
6568
|
+
'</style>',
|
6569
|
+
'<script src="http://maps.googleapis.com/maps/api/js?sensor=false&language=' + self.langType + '"></script>',
|
6570
|
+
'<script>',
|
6571
|
+
'var map, geocoder;',
|
6572
|
+
'function initialize() {',
|
6573
|
+
' var latlng = new google.maps.LatLng(31.230393, 121.473704);',
|
6574
|
+
' var options = {',
|
6575
|
+
' zoom: 11,',
|
6576
|
+
' center: latlng,',
|
6577
|
+
' disableDefaultUI: true,',
|
6578
|
+
' panControl: true,',
|
6579
|
+
' zoomControl: true,',
|
6580
|
+
' mapTypeControl: true,',
|
6581
|
+
' scaleControl: true,',
|
6582
|
+
' streetViewControl: false,',
|
6583
|
+
' overviewMapControl: true,',
|
6584
|
+
' mapTypeId: google.maps.MapTypeId.ROADMAP',
|
6585
|
+
' };',
|
6586
|
+
' map = new google.maps.Map(document.getElementById("map_canvas"), options);',
|
6587
|
+
' geocoder = new google.maps.Geocoder();',
|
6588
|
+
' geocoder.geocode({latLng: latlng}, function(results, status) {',
|
6589
|
+
' if (status == google.maps.GeocoderStatus.OK) {',
|
6590
|
+
' if (results[3]) {',
|
6591
|
+
' parent.document.getElementById("kindeditor_plugin_map_address").value = results[3].formatted_address;',
|
6592
|
+
' }',
|
6593
|
+
' }',
|
6594
|
+
' });',
|
6595
|
+
'}',
|
6596
|
+
'function search(address) {',
|
6597
|
+
' if (!map) return;',
|
6598
|
+
' geocoder.geocode({address : address}, function(results, status) {',
|
6599
|
+
' if (status == google.maps.GeocoderStatus.OK) {',
|
6600
|
+
' map.setZoom(11);',
|
6601
|
+
' map.setCenter(results[0].geometry.location);',
|
6602
|
+
' var marker = new google.maps.Marker({',
|
6603
|
+
' map: map,',
|
6604
|
+
' position: results[0].geometry.location',
|
6605
|
+
' });',
|
6606
|
+
' } else {',
|
6607
|
+
' alert("Invalid address: " + address);',
|
6608
|
+
' }',
|
6609
|
+
' });',
|
6610
|
+
'}',
|
6611
|
+
'</script>',
|
6612
|
+
'</head>',
|
6613
|
+
'<body onload="initialize();">',
|
6614
|
+
'<div id="map_canvas" style="width:100%; height:100%"></div>',
|
6615
|
+
'</body></html>'].join('\n');
|
6616
|
+
var iframe = K('<iframe class="ke-textarea" frameborder="0" src="' + self.pluginsPath + 'map/map.html" style="width:558px;height:360px;"></iframe>');
|
6617
|
+
function ready() {
|
6618
|
+
win = iframe[0].contentWindow;
|
6619
|
+
doc = K.iframeDoc(iframe);
|
6620
|
+
}
|
6621
|
+
iframe.bind('load', function() {
|
6622
|
+
iframe.unbind('load');
|
6623
|
+
if (K.IE) {
|
6624
|
+
ready();
|
6625
|
+
} else {
|
6626
|
+
setTimeout(ready, 0);
|
6627
|
+
}
|
6628
|
+
});
|
6629
|
+
K('.ke-map', div).replaceWith(iframe);
|
6630
|
+
searchBtn.click(function() {
|
6631
|
+
win.search(addressBox.val());
|
6632
|
+
});
|
6633
|
+
});
|
6634
|
+
});
|
6635
|
+
|
6636
|
+
/*******************************************************************************
|
6637
|
+
* KindEditor - WYSIWYG HTML Editor for Internet
|
6638
|
+
* Copyright (C) 2006-2011 kindsoft.net
|
6639
|
+
*
|
6640
|
+
* @author Roddy <luolonghao@gmail.com>
|
6641
|
+
* @site http://www.kindsoft.net/
|
6642
|
+
* @licence http://www.kindsoft.net/license.php
|
6643
|
+
*******************************************************************************/
|
6644
|
+
KindEditor.plugin('clearhtml', function(K) {
|
6645
|
+
var self = this, name = 'clearhtml';
|
6646
|
+
self.clickToolbar(name, function() {
|
6647
|
+
self.focus();
|
6648
|
+
var html = self.html();
|
6649
|
+
html = html.replace(/(<script[^>]*>)([\s\S]*?)(<\/script>)/ig, '');
|
6650
|
+
html = html.replace(/(<style[^>]*>)([\s\S]*?)(<\/style>)/ig, '');
|
6651
|
+
html = K.formatHtml(html, {
|
6652
|
+
a : ['href', 'target'],
|
6653
|
+
embed : ['src', 'width', 'height', 'type', 'loop', 'autostart', 'quality', '.width', '.height', 'align', 'allowscriptaccess'],
|
6654
|
+
img : ['src', 'width', 'height', 'border', 'alt', 'title', '.width', '.height'],
|
6655
|
+
table : ['border'],
|
6656
|
+
'td,th' : ['rowspan', 'colspan'],
|
6657
|
+
'div,hr,br,tbody,tr,p,ol,ul,li,blockquote,h1,h2,h3,h4,h5,h6' : []
|
6658
|
+
});
|
6659
|
+
self.html(html);
|
6660
|
+
self.cmd.selection(true);
|
6661
|
+
self.addBookmark();
|
6662
|
+
});
|
6663
|
+
});
|
6664
|
+
|
6665
|
+
/*******************************************************************************
|
6666
|
+
* KindEditor - WYSIWYG HTML Editor for Internet
|
6667
|
+
* Copyright (C) 2006-2011 kindsoft.net
|
6668
|
+
*
|
6669
|
+
* @author Roddy <luolonghao@gmail.com>
|
6670
|
+
* @site http://www.kindsoft.net/
|
6671
|
+
* @licence http://www.kindsoft.net/license.php
|
6672
|
+
*******************************************************************************/
|
6673
|
+
|
6674
|
+
|
6675
|
+
|
6676
|
+
KindEditor.plugin('code', function(K) {
|
6677
|
+
var self = this, name = 'code';
|
6678
|
+
self.clickToolbar(name, function() {
|
6679
|
+
var lang = self.lang(name + '.'),
|
6680
|
+
html = ['<div style="padding:10px 20px;">',
|
6681
|
+
'<div class="ke-dialog-row">',
|
6682
|
+
'<select class="ke-code-type">',
|
6683
|
+
'<option value="js">JavaScript</option>',
|
6684
|
+
'<option value="html">HTML</option>',
|
6685
|
+
'<option value="css">CSS</option>',
|
6686
|
+
'<option value="php">PHP</option>',
|
6687
|
+
'<option value="pl">Perl</option>',
|
6688
|
+
'<option value="py">Python</option>',
|
6689
|
+
'<option value="rb">Ruby</option>',
|
6690
|
+
'<option value="java">Java</option>',
|
6691
|
+
'<option value="vb">ASP/VB</option>',
|
6692
|
+
'<option value="cpp">C/C++</option>',
|
6693
|
+
'<option value="cs">C#</option>',
|
6694
|
+
'<option value="xml">XML</option>',
|
6695
|
+
'<option value="bsh">Shell</option>',
|
6696
|
+
'<option value="">Other</option>',
|
6697
|
+
'</select>',
|
6698
|
+
'</div>',
|
6699
|
+
'<textarea class="ke-textarea" style="width:408px;height:260px;"></textarea>',
|
6700
|
+
'</div>'].join(''),
|
6701
|
+
dialog = self.createDialog({
|
6702
|
+
name : name,
|
6703
|
+
width : 450,
|
6704
|
+
title : self.lang(name),
|
6705
|
+
body : html,
|
6706
|
+
yesBtn : {
|
6707
|
+
name : self.lang('yes'),
|
6708
|
+
click : function(e) {
|
6709
|
+
var type = K('.ke-code-type', dialog.div).val(),
|
6710
|
+
code = textarea.val(),
|
6711
|
+
cls = type === '' ? '' : ' lang-' + type,
|
6712
|
+
html = '<pre class="prettyprint' + cls + '">\n' + K.escape(code) + '</pre> ';
|
6713
|
+
if (K.trim(code) === '') {
|
6714
|
+
alert(lang.pleaseInput);
|
6715
|
+
textarea[0].focus();
|
6716
|
+
return;
|
6717
|
+
}
|
6718
|
+
self.insertHtml(html).hideDialog().focus();
|
6719
|
+
}
|
6720
|
+
}
|
6721
|
+
}),
|
6722
|
+
textarea = K('textarea', dialog.div);
|
6723
|
+
textarea[0].focus();
|
6724
|
+
});
|
6725
|
+
});
|
6726
|
+
|
6727
|
+
/*******************************************************************************
|
6728
|
+
* KindEditor - WYSIWYG HTML Editor for Internet
|
6729
|
+
* Copyright (C) 2006-2011 kindsoft.net
|
6730
|
+
*
|
6731
|
+
* @author Roddy <luolonghao@gmail.com>
|
6732
|
+
* @site http://www.kindsoft.net/
|
6733
|
+
* @licence http://www.kindsoft.net/license.php
|
6734
|
+
*******************************************************************************/
|
6735
|
+
KindEditor.plugin('emoticons', function(K) {
|
6736
|
+
var self = this, name = 'emoticons',
|
6737
|
+
path = (self.emoticonsPath || self.pluginsPath + 'emoticons/images/'),
|
6738
|
+
allowPreview = self.allowPreviewEmoticons === undefined ? true : self.allowPreviewEmoticons,
|
6739
|
+
currentPageNum = 1;
|
6740
|
+
self.clickToolbar(name, function() {
|
6741
|
+
var rows = 5, cols = 9, total = 135, startNum = 0,
|
6742
|
+
cells = rows * cols, pages = Math.ceil(total / cells),
|
6743
|
+
colsHalf = Math.floor(cols / 2),
|
6744
|
+
wrapperDiv = K('<div class="ke-plugin-emoticons"></div>'),
|
6745
|
+
elements = [],
|
6746
|
+
menu = self.createMenu({
|
6747
|
+
name : name,
|
6748
|
+
beforeRemove : function() {
|
6749
|
+
removeEvent();
|
6750
|
+
}
|
6751
|
+
});
|
6752
|
+
menu.div.append(wrapperDiv);
|
6753
|
+
var previewDiv, previewImg;
|
6754
|
+
if (allowPreview) {
|
6755
|
+
previewDiv = K('<div class="ke-preview"></div>').css('right', 0);
|
6756
|
+
previewImg = K('<img class="ke-preview-img" src="' + path + startNum + '.gif" />');
|
6757
|
+
wrapperDiv.append(previewDiv);
|
6758
|
+
previewDiv.append(previewImg);
|
6759
|
+
}
|
6760
|
+
function bindCellEvent(cell, j, num) {
|
6761
|
+
if (previewDiv) {
|
6762
|
+
cell.mouseover(function() {
|
6763
|
+
if (j > colsHalf) {
|
6764
|
+
previewDiv.css('left', 0);
|
6765
|
+
previewDiv.css('right', '');
|
6766
|
+
} else {
|
6767
|
+
previewDiv.css('left', '');
|
6768
|
+
previewDiv.css('right', 0);
|
6769
|
+
}
|
6770
|
+
previewImg.attr('src', path + num + '.gif');
|
6771
|
+
K(this).addClass('ke-on');
|
6772
|
+
});
|
6773
|
+
} else {
|
6774
|
+
cell.mouseover(function() {
|
6775
|
+
K(this).addClass('ke-on');
|
6776
|
+
});
|
6777
|
+
}
|
6778
|
+
cell.mouseout(function() {
|
6779
|
+
K(this).removeClass('ke-on');
|
6780
|
+
});
|
6781
|
+
cell.click(function(e) {
|
6782
|
+
self.insertHtml('<img src="' + path + num + '.gif" border="0" alt="" />').hideMenu().focus();
|
6783
|
+
e.stop();
|
6784
|
+
});
|
6785
|
+
}
|
6786
|
+
function createEmoticonsTable(pageNum, parentDiv) {
|
6787
|
+
var table = document.createElement('table');
|
6788
|
+
parentDiv.append(table);
|
6789
|
+
if (previewDiv) {
|
6790
|
+
K(table).mouseover(function() {
|
6791
|
+
previewDiv.show('block');
|
6792
|
+
});
|
6793
|
+
K(table).mouseout(function() {
|
6794
|
+
previewDiv.hide();
|
6795
|
+
});
|
6796
|
+
elements.push(K(table));
|
6797
|
+
}
|
6798
|
+
table.className = 'ke-table';
|
6799
|
+
table.cellPadding = 0;
|
6800
|
+
table.cellSpacing = 0;
|
6801
|
+
table.border = 0;
|
6802
|
+
var num = (pageNum - 1) * cells + startNum;
|
6803
|
+
for (var i = 0; i < rows; i++) {
|
6804
|
+
var row = table.insertRow(i);
|
6805
|
+
for (var j = 0; j < cols; j++) {
|
6806
|
+
var cell = K(row.insertCell(j));
|
6807
|
+
cell.addClass('ke-cell');
|
6808
|
+
bindCellEvent(cell, j, num);
|
6809
|
+
var span = K('<span class="ke-img"></span>')
|
6810
|
+
.css('background-position', '-' + (24 * num) + 'px 0px')
|
6811
|
+
.css('background-image', 'url(' + path + 'static.gif)');
|
6812
|
+
cell.append(span);
|
6813
|
+
elements.push(cell);
|
6814
|
+
num++;
|
6815
|
+
}
|
6816
|
+
}
|
6817
|
+
return table;
|
6818
|
+
}
|
6819
|
+
var table = createEmoticonsTable(currentPageNum, wrapperDiv);
|
6820
|
+
function removeEvent() {
|
6821
|
+
K.each(elements, function() {
|
6822
|
+
this.unbind();
|
6823
|
+
});
|
6824
|
+
}
|
6825
|
+
var pageDiv;
|
6826
|
+
function bindPageEvent(el, pageNum) {
|
6827
|
+
el.click(function(e) {
|
6828
|
+
removeEvent();
|
6829
|
+
table.parentNode.removeChild(table);
|
6830
|
+
pageDiv.remove();
|
6831
|
+
table = createEmoticonsTable(pageNum, wrapperDiv);
|
6832
|
+
createPageTable(pageNum);
|
6833
|
+
currentPageNum = pageNum;
|
6834
|
+
e.stop();
|
6835
|
+
});
|
6836
|
+
}
|
6837
|
+
function createPageTable(currentPageNum) {
|
6838
|
+
pageDiv = K('<div class="ke-page"></div>');
|
6839
|
+
wrapperDiv.append(pageDiv);
|
6840
|
+
for (var pageNum = 1; pageNum <= pages; pageNum++) {
|
6841
|
+
if (currentPageNum !== pageNum) {
|
6842
|
+
var a = K('<a href="javascript:;">[' + pageNum + ']</a>');
|
6843
|
+
bindPageEvent(a, pageNum);
|
6844
|
+
pageDiv.append(a);
|
6845
|
+
elements.push(a);
|
6846
|
+
} else {
|
6847
|
+
pageDiv.append(K('@[' + pageNum + ']'));
|
6848
|
+
}
|
6849
|
+
pageDiv.append(K('@ '));
|
6850
|
+
}
|
6851
|
+
}
|
6852
|
+
createPageTable(currentPageNum);
|
6853
|
+
});
|
6854
|
+
});
|
6855
|
+
|
6856
|
+
/*******************************************************************************
|
6857
|
+
* KindEditor - WYSIWYG HTML Editor for Internet
|
6858
|
+
* Copyright (C) 2006-2011 kindsoft.net
|
6859
|
+
*
|
6860
|
+
* @author Roddy <luolonghao@gmail.com>
|
6861
|
+
* @site http://www.kindsoft.net/
|
6862
|
+
* @licence http://www.kindsoft.net/license.php
|
6863
|
+
*******************************************************************************/
|
6864
|
+
KindEditor.plugin('filemanager', function(K) {
|
6865
|
+
var self = this, name = 'filemanager',
|
6866
|
+
fileManagerJson = K.undef(self.fileManagerJson, self.basePath + 'php/file_manager_json.php'),
|
6867
|
+
imgPath = self.pluginsPath + name + '/images/',
|
6868
|
+
lang = self.lang(name + '.');
|
6869
|
+
function makeFileTitle(filename, filesize, datetime) {
|
6870
|
+
return filename + ' (' + Math.ceil(filesize / 1024) + 'KB, ' + datetime + ')';
|
6871
|
+
}
|
6872
|
+
function bindTitle(el, data) {
|
6873
|
+
if (data.is_dir) {
|
6874
|
+
el.attr('title', data.filename);
|
6875
|
+
} else {
|
6876
|
+
el.attr('title', makeFileTitle(data.filename, data.filesize, data.datetime));
|
6877
|
+
}
|
6878
|
+
}
|
6879
|
+
self.plugin.filemanagerDialog = function(options) {
|
6880
|
+
var width = K.undef(options.width, 650),
|
6881
|
+
height = K.undef(options.height, 510),
|
6882
|
+
dirName = K.undef(options.dirName, ''),
|
6883
|
+
viewType = K.undef(options.viewType, 'VIEW').toUpperCase(),
|
6884
|
+
clickFn = options.clickFn;
|
6885
|
+
var html = [
|
6886
|
+
'<div style="padding:10px 20px;">',
|
6887
|
+
'<div class="ke-plugin-filemanager-header">',
|
6888
|
+
'<div class="ke-left">',
|
6889
|
+
'<img class="ke-inline-block" name="moveupImg" src="' + imgPath + 'go-up.gif" width="16" height="16" border="0" alt="" /> ',
|
6890
|
+
'<a class="ke-inline-block" name="moveupLink" href="javascript:;">' + lang.moveup + '</a>',
|
6891
|
+
'</div>',
|
6892
|
+
'<div class="ke-right">',
|
6893
|
+
lang.viewType + ' <select class="ke-inline-block" name="viewType">',
|
6894
|
+
'<option value="VIEW">' + lang.viewImage + '</option>',
|
6895
|
+
'<option value="LIST">' + lang.listImage + '</option>',
|
6896
|
+
'</select> ',
|
6897
|
+
lang.orderType + ' <select class="ke-inline-block" name="orderType">',
|
6898
|
+
'<option value="NAME">' + lang.fileName + '</option>',
|
6899
|
+
'<option value="SIZE">' + lang.fileSize + '</option>',
|
6900
|
+
'<option value="TYPE">' + lang.fileType + '</option>',
|
6901
|
+
'</select>',
|
6902
|
+
'</div>',
|
6903
|
+
'<div class="ke-clearfix"></div>',
|
6904
|
+
'</div>',
|
6905
|
+
'<div class="ke-plugin-filemanager-body"></div>',
|
6906
|
+
'</div>'
|
6907
|
+
].join('');
|
6908
|
+
var dialog = self.createDialog({
|
6909
|
+
name : name,
|
6910
|
+
width : width,
|
6911
|
+
height : height,
|
6912
|
+
title : self.lang(name),
|
6913
|
+
body : html
|
6914
|
+
}),
|
6915
|
+
div = dialog.div,
|
6916
|
+
bodyDiv = K('.ke-plugin-filemanager-body', div),
|
6917
|
+
moveupImg = K('[name="moveupImg"]', div),
|
6918
|
+
moveupLink = K('[name="moveupLink"]', div),
|
6919
|
+
viewServerBtn = K('[name="viewServer"]', div),
|
6920
|
+
viewTypeBox = K('[name="viewType"]', div),
|
6921
|
+
orderTypeBox = K('[name="orderType"]', div);
|
6922
|
+
function reloadPage(path, order, func) {
|
6923
|
+
var param = 'path=' + path + '&order=' + order + '&dir=' + dirName;
|
6924
|
+
dialog.showLoading(self.lang('ajaxLoading'));
|
6925
|
+
K.ajax(K.addParam(fileManagerJson, param + '&' + new Date().getTime()), function(data) {
|
6926
|
+
dialog.hideLoading();
|
6927
|
+
func(data);
|
6928
|
+
});
|
6929
|
+
}
|
6930
|
+
var elList = [];
|
6931
|
+
function bindEvent(el, result, data, createFunc) {
|
6932
|
+
var fileUrl = K.formatUrl(result.current_url + data.filename, 'absolute'),
|
6933
|
+
dirPath = encodeURIComponent(result.current_dir_path + data.filename + '/');
|
6934
|
+
if (data.is_dir) {
|
6935
|
+
el.click(function(e) {
|
6936
|
+
reloadPage(dirPath, orderTypeBox.val(), createFunc);
|
6937
|
+
});
|
6938
|
+
} else if (data.is_photo) {
|
6939
|
+
el.click(function(e) {
|
6940
|
+
clickFn.call(this, fileUrl, data.filename);
|
6941
|
+
});
|
6942
|
+
} else {
|
6943
|
+
el.click(function(e) {
|
6944
|
+
clickFn.call(this, fileUrl, data.filename);
|
6945
|
+
});
|
6946
|
+
}
|
6947
|
+
elList.push(el);
|
6948
|
+
}
|
6949
|
+
function createCommon(result, createFunc) {
|
6950
|
+
K.each(elList, function() {
|
6951
|
+
this.unbind();
|
6952
|
+
});
|
6953
|
+
moveupLink.unbind();
|
6954
|
+
viewTypeBox.unbind();
|
6955
|
+
orderTypeBox.unbind();
|
6956
|
+
if (result.current_dir_path) {
|
6957
|
+
moveupLink.click(function(e) {
|
6958
|
+
reloadPage(result.moveup_dir_path, orderTypeBox.val(), createFunc);
|
6959
|
+
});
|
6960
|
+
}
|
6961
|
+
function changeFunc() {
|
6962
|
+
if (viewTypeBox.val() == 'VIEW') {
|
6963
|
+
reloadPage(result.current_dir_path, orderTypeBox.val(), createView);
|
6964
|
+
} else {
|
6965
|
+
reloadPage(result.current_dir_path, orderTypeBox.val(), createList);
|
6966
|
+
}
|
6967
|
+
}
|
6968
|
+
viewTypeBox.change(changeFunc);
|
6969
|
+
orderTypeBox.change(changeFunc);
|
6970
|
+
bodyDiv.html('');
|
6971
|
+
}
|
6972
|
+
function createList(result) {
|
6973
|
+
createCommon(result, createList);
|
6974
|
+
var table = document.createElement('table');
|
6975
|
+
table.className = 'ke-table';
|
6976
|
+
table.cellPadding = 0;
|
6977
|
+
table.cellSpacing = 0;
|
6978
|
+
table.border = 0;
|
6979
|
+
bodyDiv.append(table);
|
6980
|
+
var fileList = result.file_list;
|
6981
|
+
for (var i = 0, len = fileList.length; i < len; i++) {
|
6982
|
+
var data = fileList[i], row = K(table.insertRow(i));
|
6983
|
+
row.mouseover(function(e) {
|
6984
|
+
K(this).addClass('ke-on');
|
6985
|
+
})
|
6986
|
+
.mouseout(function(e) {
|
6987
|
+
K(this).removeClass('ke-on');
|
6988
|
+
});
|
6989
|
+
var iconUrl = imgPath + (data.is_dir ? 'folder-16.gif' : 'file-16.gif'),
|
6990
|
+
img = K('<img src="' + iconUrl + '" width="16" height="16" alt="' + data.filename + '" align="absmiddle" />'),
|
6991
|
+
cell0 = K(row[0].insertCell(0)).addClass('ke-cell ke-name').append(img).append(document.createTextNode(' ' + data.filename));
|
6992
|
+
if (!data.is_dir || data.has_file) {
|
6993
|
+
row.css('cursor', 'pointer');
|
6994
|
+
cell0.attr('title', data.filename);
|
6995
|
+
bindEvent(cell0, result, data, createList);
|
6996
|
+
} else {
|
6997
|
+
cell0.attr('title', lang.emptyFolder);
|
6998
|
+
}
|
6999
|
+
K(row[0].insertCell(1)).addClass('ke-cell ke-size').html(data.is_dir ? '-' : Math.ceil(data.filesize / 1024) + 'KB');
|
7000
|
+
K(row[0].insertCell(2)).addClass('ke-cell ke-datetime').html(data.datetime);
|
7001
|
+
}
|
7002
|
+
}
|
7003
|
+
function createView(result) {
|
7004
|
+
createCommon(result, createView);
|
7005
|
+
var fileList = result.file_list;
|
7006
|
+
for (var i = 0, len = fileList.length; i < len; i++) {
|
7007
|
+
var data = fileList[i],
|
7008
|
+
div = K('<div class="ke-inline-block ke-item"></div>');
|
7009
|
+
bodyDiv.append(div);
|
7010
|
+
var photoDiv = K('<div class="ke-inline-block ke-photo"></div>')
|
7011
|
+
.mouseover(function(e) {
|
7012
|
+
K(this).addClass('ke-on');
|
7013
|
+
})
|
7014
|
+
.mouseout(function(e) {
|
7015
|
+
K(this).removeClass('ke-on');
|
7016
|
+
});
|
7017
|
+
div.append(photoDiv);
|
7018
|
+
var fileUrl = result.current_url + data.filename,
|
7019
|
+
iconUrl = data.is_dir ? imgPath + 'folder-64.gif' : (data.is_photo ? fileUrl : imgPath + 'file-64.gif');
|
7020
|
+
var img = K('<img src="' + iconUrl + '" width="80" height="80" alt="' + data.filename + '" />');
|
7021
|
+
if (!data.is_dir || data.has_file) {
|
7022
|
+
photoDiv.css('cursor', 'pointer');
|
7023
|
+
bindTitle(photoDiv, data);
|
7024
|
+
bindEvent(photoDiv, result, data, createView);
|
7025
|
+
} else {
|
7026
|
+
photoDiv.attr('title', lang.emptyFolder);
|
7027
|
+
}
|
7028
|
+
photoDiv.append(img);
|
7029
|
+
div.append('<div class="ke-name" title="' + data.filename + '">' + data.filename + '</div>');
|
7030
|
+
}
|
7031
|
+
}
|
7032
|
+
viewTypeBox.val(viewType);
|
7033
|
+
reloadPage('', orderTypeBox.val(), viewType == 'VIEW' ? createView : createList);
|
7034
|
+
return dialog;
|
7035
|
+
}
|
7036
|
+
});
|
7037
|
+
|
7038
|
+
/*******************************************************************************
|
7039
|
+
* KindEditor - WYSIWYG HTML Editor for Internet
|
7040
|
+
* Copyright (C) 2006-2011 kindsoft.net
|
7041
|
+
*
|
7042
|
+
* @author Roddy <luolonghao@gmail.com>
|
7043
|
+
* @site http://www.kindsoft.net/
|
7044
|
+
* @licence http://www.kindsoft.net/license.php
|
7045
|
+
*******************************************************************************/
|
7046
|
+
KindEditor.plugin('flash', function(K) {
|
7047
|
+
var self = this, name = 'flash', lang = self.lang(name + '.'),
|
7048
|
+
allowFlashUpload = K.undef(self.allowFlashUpload, true),
|
7049
|
+
allowFileManager = K.undef(self.allowFileManager, false),
|
7050
|
+
formatUploadUrl = K.undef(self.formatUploadUrl, true),
|
7051
|
+
extraParams = K.undef(self.extraFileUploadParams, {}),
|
7052
|
+
filePostName = K.undef(self.filePostName, 'imgFile'),
|
7053
|
+
uploadJson = K.undef(self.uploadJson, self.basePath + 'php/upload_json.php');
|
7054
|
+
self.plugin.flash = {
|
7055
|
+
edit : function() {
|
7056
|
+
var html = [
|
7057
|
+
'<div style="padding:20px;">',
|
7058
|
+
'<div class="ke-dialog-row">',
|
7059
|
+
'<label for="keUrl" style="width:60px;">' + lang.url + '</label>',
|
7060
|
+
'<input class="ke-input-text" type="text" id="keUrl" name="url" value="" style="width:160px;" /> ',
|
7061
|
+
'<input type="button" class="ke-upload-button" value="' + lang.upload + '" /> ',
|
7062
|
+
'<span class="ke-button-common ke-button-outer">',
|
7063
|
+
'<input type="button" class="ke-button-common ke-button" name="viewServer" value="' + lang.viewServer + '" />',
|
7064
|
+
'</span>',
|
7065
|
+
'</div>',
|
7066
|
+
'<div class="ke-dialog-row">',
|
7067
|
+
'<label for="keWidth" style="width:60px;">' + lang.width + '</label>',
|
7068
|
+
'<input type="text" id="keWidth" class="ke-input-text ke-input-number" name="width" value="550" maxlength="4" /> ',
|
7069
|
+
'</div>',
|
7070
|
+
'<div class="ke-dialog-row">',
|
7071
|
+
'<label for="keHeight" style="width:60px;">' + lang.height + '</label>',
|
7072
|
+
'<input type="text" id="keHeight" class="ke-input-text ke-input-number" name="height" value="400" maxlength="4" /> ',
|
7073
|
+
'</div>',
|
7074
|
+
'</div>'
|
7075
|
+
].join('');
|
7076
|
+
var dialog = self.createDialog({
|
7077
|
+
name : name,
|
7078
|
+
width : 450,
|
7079
|
+
title : self.lang(name),
|
7080
|
+
body : html,
|
7081
|
+
yesBtn : {
|
7082
|
+
name : self.lang('yes'),
|
7083
|
+
click : function(e) {
|
7084
|
+
var url = K.trim(urlBox.val()),
|
7085
|
+
width = widthBox.val(),
|
7086
|
+
height = heightBox.val();
|
7087
|
+
if (url == 'http://' || K.invalidUrl(url)) {
|
7088
|
+
alert(self.lang('invalidUrl'));
|
7089
|
+
urlBox[0].focus();
|
7090
|
+
return;
|
7091
|
+
}
|
7092
|
+
if (!/^\d*$/.test(width)) {
|
7093
|
+
alert(self.lang('invalidWidth'));
|
7094
|
+
widthBox[0].focus();
|
7095
|
+
return;
|
7096
|
+
}
|
7097
|
+
if (!/^\d*$/.test(height)) {
|
7098
|
+
alert(self.lang('invalidHeight'));
|
7099
|
+
heightBox[0].focus();
|
7100
|
+
return;
|
7101
|
+
}
|
7102
|
+
var html = K.mediaImg(self.themesPath + 'common/blank.gif', {
|
7103
|
+
src : url,
|
7104
|
+
type : K.mediaType('.swf'),
|
7105
|
+
width : width,
|
7106
|
+
height : height,
|
7107
|
+
quality : 'high'
|
7108
|
+
});
|
7109
|
+
self.insertHtml(html).hideDialog().focus();
|
7110
|
+
}
|
7111
|
+
}
|
7112
|
+
}),
|
7113
|
+
div = dialog.div,
|
7114
|
+
urlBox = K('[name="url"]', div),
|
7115
|
+
viewServerBtn = K('[name="viewServer"]', div),
|
7116
|
+
widthBox = K('[name="width"]', div),
|
7117
|
+
heightBox = K('[name="height"]', div);
|
7118
|
+
urlBox.val('http://');
|
7119
|
+
if (allowFlashUpload) {
|
7120
|
+
var uploadbutton = K.uploadbutton({
|
7121
|
+
button : K('.ke-upload-button', div)[0],
|
7122
|
+
fieldName : filePostName,
|
7123
|
+
extraParams : extraParams,
|
7124
|
+
url : K.addParam(uploadJson, 'dir=flash'),
|
7125
|
+
afterUpload : function(data) {
|
7126
|
+
dialog.hideLoading();
|
7127
|
+
if (data.error === 0) {
|
7128
|
+
var url = data.url;
|
7129
|
+
if (formatUploadUrl) {
|
7130
|
+
url = K.formatUrl(url, 'absolute');
|
7131
|
+
}
|
7132
|
+
urlBox.val(url);
|
7133
|
+
if (self.afterUpload) {
|
7134
|
+
self.afterUpload.call(self, url, data, name);
|
7135
|
+
}
|
7136
|
+
alert(self.lang('uploadSuccess'));
|
7137
|
+
} else {
|
7138
|
+
alert(data.message);
|
7139
|
+
}
|
7140
|
+
},
|
7141
|
+
afterError : function(html) {
|
7142
|
+
dialog.hideLoading();
|
7143
|
+
self.errorDialog(html);
|
7144
|
+
}
|
7145
|
+
});
|
7146
|
+
uploadbutton.fileBox.change(function(e) {
|
7147
|
+
dialog.showLoading(self.lang('uploadLoading'));
|
7148
|
+
uploadbutton.submit();
|
7149
|
+
});
|
7150
|
+
} else {
|
7151
|
+
K('.ke-upload-button', div).hide();
|
7152
|
+
}
|
7153
|
+
if (allowFileManager) {
|
7154
|
+
viewServerBtn.click(function(e) {
|
7155
|
+
self.loadPlugin('filemanager', function() {
|
7156
|
+
self.plugin.filemanagerDialog({
|
7157
|
+
viewType : 'LIST',
|
7158
|
+
dirName : 'flash',
|
7159
|
+
clickFn : function(url, title) {
|
7160
|
+
if (self.dialogs.length > 1) {
|
7161
|
+
K('[name="url"]', div).val(url);
|
7162
|
+
if (self.afterSelectFile) {
|
7163
|
+
self.afterSelectFile.call(self, url);
|
7164
|
+
}
|
7165
|
+
self.hideDialog();
|
7166
|
+
}
|
7167
|
+
}
|
7168
|
+
});
|
7169
|
+
});
|
7170
|
+
});
|
7171
|
+
} else {
|
7172
|
+
viewServerBtn.hide();
|
7173
|
+
}
|
7174
|
+
var img = self.plugin.getSelectedFlash();
|
7175
|
+
if (img) {
|
7176
|
+
var attrs = K.mediaAttrs(img.attr('data-ke-tag'));
|
7177
|
+
urlBox.val(attrs.src);
|
7178
|
+
widthBox.val(K.removeUnit(img.css('width')) || attrs.width || 0);
|
7179
|
+
heightBox.val(K.removeUnit(img.css('height')) || attrs.height || 0);
|
7180
|
+
}
|
7181
|
+
urlBox[0].focus();
|
7182
|
+
urlBox[0].select();
|
7183
|
+
},
|
7184
|
+
'delete' : function() {
|
7185
|
+
self.plugin.getSelectedFlash().remove();
|
7186
|
+
self.addBookmark();
|
7187
|
+
}
|
7188
|
+
};
|
7189
|
+
self.clickToolbar(name, self.plugin.flash.edit);
|
7190
|
+
});
|
7191
|
+
|
7192
|
+
/*******************************************************************************
|
7193
|
+
* KindEditor - WYSIWYG HTML Editor for Internet
|
7194
|
+
* Copyright (C) 2006-2011 kindsoft.net
|
7195
|
+
*
|
7196
|
+
* @author Roddy <luolonghao@gmail.com>
|
7197
|
+
* @site http://www.kindsoft.net/
|
7198
|
+
* @licence http://www.kindsoft.net/license.php
|
7199
|
+
*******************************************************************************/
|
7200
|
+
KindEditor.plugin('image', function(K) {
|
7201
|
+
var self = this, name = 'image',
|
7202
|
+
allowImageUpload = K.undef(self.allowImageUpload, true),
|
7203
|
+
allowImageRemote = K.undef(self.allowImageRemote, true),
|
7204
|
+
formatUploadUrl = K.undef(self.formatUploadUrl, true),
|
7205
|
+
allowFileManager = K.undef(self.allowFileManager, false),
|
7206
|
+
uploadJson = K.undef(self.uploadJson, self.basePath + 'php/upload_json.php'),
|
7207
|
+
imageTabIndex = K.undef(self.imageTabIndex, 0),
|
7208
|
+
imgPath = self.pluginsPath + 'image/images/',
|
7209
|
+
extraParams = K.undef(self.extraFileUploadParams, {}),
|
7210
|
+
filePostName = K.undef(self.filePostName, 'imgFile'),
|
7211
|
+
fillDescAfterUploadImage = K.undef(self.fillDescAfterUploadImage, false),
|
7212
|
+
lang = self.lang(name + '.');
|
7213
|
+
self.plugin.imageDialog = function(options) {
|
7214
|
+
var imageUrl = options.imageUrl,
|
7215
|
+
imageWidth = K.undef(options.imageWidth, ''),
|
7216
|
+
imageHeight = K.undef(options.imageHeight, ''),
|
7217
|
+
imageTitle = K.undef(options.imageTitle, ''),
|
7218
|
+
imageAlign = K.undef(options.imageAlign, ''),
|
7219
|
+
showRemote = K.undef(options.showRemote, true),
|
7220
|
+
showLocal = K.undef(options.showLocal, true),
|
7221
|
+
tabIndex = K.undef(options.tabIndex, 0),
|
7222
|
+
clickFn = options.clickFn;
|
7223
|
+
var target = 'kindeditor_upload_iframe_' + new Date().getTime();
|
7224
|
+
var hiddenElements = [];
|
7225
|
+
for(var k in extraParams){
|
7226
|
+
hiddenElements.push('<input type="hidden" name="' + k + '" value="' + extraParams[k] + '" />');
|
7227
|
+
}
|
7228
|
+
var html = [
|
7229
|
+
'<div style="padding:20px;">',
|
7230
|
+
'<div class="tabs"></div>',
|
7231
|
+
'<div class="tab1" style="display:none;">',
|
7232
|
+
'<div class="ke-dialog-row">',
|
7233
|
+
'<label for="remoteUrl" style="width:60px;">' + lang.remoteUrl + '</label>',
|
7234
|
+
'<input type="text" id="remoteUrl" class="ke-input-text" name="url" value="" style="width:200px;" /> ',
|
7235
|
+
'<span class="ke-button-common ke-button-outer">',
|
7236
|
+
'<input type="button" class="ke-button-common ke-button" name="viewServer" value="' + lang.viewServer + '" />',
|
7237
|
+
'</span>',
|
7238
|
+
'</div>',
|
7239
|
+
'<div class="ke-dialog-row">',
|
7240
|
+
'<label for="remoteWidth" style="width:60px;">' + lang.size + '</label>',
|
7241
|
+
lang.width + ' <input type="text" id="remoteWidth" class="ke-input-text ke-input-number" name="width" value="" maxlength="4" /> ',
|
7242
|
+
lang.height + ' <input type="text" class="ke-input-text ke-input-number" name="height" value="" maxlength="4" /> ',
|
7243
|
+
'<img class="ke-refresh-btn" src="' + imgPath + 'refresh.png" width="16" height="16" alt="" style="cursor:pointer;" title="' + lang.resetSize + '" />',
|
7244
|
+
'</div>',
|
7245
|
+
'<div class="ke-dialog-row">',
|
7246
|
+
'<label style="width:60px;">' + lang.align + '</label>',
|
7247
|
+
'<input type="radio" name="align" class="ke-inline-block" value="" checked="checked" /> <img name="defaultImg" src="' + imgPath + 'align_top.gif" width="23" height="25" alt="" />',
|
7248
|
+
' <input type="radio" name="align" class="ke-inline-block" value="left" /> <img name="leftImg" src="' + imgPath + 'align_left.gif" width="23" height="25" alt="" />',
|
7249
|
+
' <input type="radio" name="align" class="ke-inline-block" value="right" /> <img name="rightImg" src="' + imgPath + 'align_right.gif" width="23" height="25" alt="" />',
|
7250
|
+
'</div>',
|
7251
|
+
'<div class="ke-dialog-row">',
|
7252
|
+
'<label for="remoteTitle" style="width:60px;">' + lang.imgTitle + '</label>',
|
7253
|
+
'<input type="text" id="remoteTitle" class="ke-input-text" name="title" value="" style="width:200px;" />',
|
7254
|
+
'</div>',
|
7255
|
+
'</div>',
|
7256
|
+
'<div class="tab2" style="display:none;">',
|
7257
|
+
'<iframe name="' + target + '" style="display:none;"></iframe>',
|
7258
|
+
'<form class="ke-upload-area ke-form" method="post" enctype="multipart/form-data" target="' + target + '" action="' + K.addParam(uploadJson, 'dir=image') + '">',
|
7259
|
+
'<div class="ke-dialog-row">',
|
7260
|
+
hiddenElements.join(''),
|
7261
|
+
'<label style="width:60px;">' + lang.localUrl + '</label>',
|
7262
|
+
'<input type="text" name="localUrl" class="ke-input-text" tabindex="-1" style="width:200px;" readonly="true" /> ',
|
7263
|
+
'<input type="button" class="ke-upload-button" value="' + lang.upload + '" />',
|
7264
|
+
'</div>',
|
7265
|
+
'</form>',
|
7266
|
+
'</div>',
|
7267
|
+
'</div>'
|
7268
|
+
].join('');
|
7269
|
+
var dialogWidth = showLocal || allowFileManager ? 450 : 400,
|
7270
|
+
dialogHeight = showLocal && showRemote ? 300 : 250;
|
7271
|
+
var dialog = self.createDialog({
|
7272
|
+
name : name,
|
7273
|
+
width : dialogWidth,
|
7274
|
+
height : dialogHeight,
|
7275
|
+
title : self.lang(name),
|
7276
|
+
body : html,
|
7277
|
+
yesBtn : {
|
7278
|
+
name : self.lang('yes'),
|
7279
|
+
click : function(e) {
|
7280
|
+
if (dialog.isLoading) {
|
7281
|
+
return;
|
7282
|
+
}
|
7283
|
+
if (showLocal && showRemote && tabs && tabs.selectedIndex === 1 || !showRemote) {
|
7284
|
+
if (uploadbutton.fileBox.val() == '') {
|
7285
|
+
alert(self.lang('pleaseSelectFile'));
|
7286
|
+
return;
|
7287
|
+
}
|
7288
|
+
dialog.showLoading(self.lang('uploadLoading'));
|
7289
|
+
uploadbutton.submit();
|
7290
|
+
localUrlBox.val('');
|
7291
|
+
return;
|
7292
|
+
}
|
7293
|
+
var url = K.trim(urlBox.val()),
|
7294
|
+
width = widthBox.val(),
|
7295
|
+
height = heightBox.val(),
|
7296
|
+
title = titleBox.val(),
|
7297
|
+
align = '';
|
7298
|
+
alignBox.each(function() {
|
7299
|
+
if (this.checked) {
|
7300
|
+
align = this.value;
|
7301
|
+
return false;
|
7302
|
+
}
|
7303
|
+
});
|
7304
|
+
if (url == 'http://' || K.invalidUrl(url)) {
|
7305
|
+
alert(self.lang('invalidUrl'));
|
7306
|
+
urlBox[0].focus();
|
7307
|
+
return;
|
7308
|
+
}
|
7309
|
+
if (!/^\d*$/.test(width)) {
|
7310
|
+
alert(self.lang('invalidWidth'));
|
7311
|
+
widthBox[0].focus();
|
7312
|
+
return;
|
7313
|
+
}
|
7314
|
+
if (!/^\d*$/.test(height)) {
|
7315
|
+
alert(self.lang('invalidHeight'));
|
7316
|
+
heightBox[0].focus();
|
7317
|
+
return;
|
7318
|
+
}
|
7319
|
+
clickFn.call(self, url, title, width, height, 0, align);
|
7320
|
+
}
|
7321
|
+
},
|
7322
|
+
beforeRemove : function() {
|
7323
|
+
viewServerBtn.unbind();
|
7324
|
+
widthBox.unbind();
|
7325
|
+
heightBox.unbind();
|
7326
|
+
refreshBtn.unbind();
|
7327
|
+
}
|
7328
|
+
}),
|
7329
|
+
div = dialog.div;
|
7330
|
+
var urlBox = K('[name="url"]', div),
|
7331
|
+
localUrlBox = K('[name="localUrl"]', div),
|
7332
|
+
viewServerBtn = K('[name="viewServer"]', div),
|
7333
|
+
widthBox = K('.tab1 [name="width"]', div),
|
7334
|
+
heightBox = K('.tab1 [name="height"]', div),
|
7335
|
+
refreshBtn = K('.ke-refresh-btn', div),
|
7336
|
+
titleBox = K('.tab1 [name="title"]', div),
|
7337
|
+
alignBox = K('.tab1 [name="align"]', div);
|
7338
|
+
var tabs;
|
7339
|
+
if (showRemote && showLocal) {
|
7340
|
+
tabs = K.tabs({
|
7341
|
+
src : K('.tabs', div),
|
7342
|
+
afterSelect : function(i) {}
|
7343
|
+
});
|
7344
|
+
tabs.add({
|
7345
|
+
title : lang.remoteImage,
|
7346
|
+
panel : K('.tab1', div)
|
7347
|
+
});
|
7348
|
+
tabs.add({
|
7349
|
+
title : lang.localImage,
|
7350
|
+
panel : K('.tab2', div)
|
7351
|
+
});
|
7352
|
+
tabs.select(tabIndex);
|
7353
|
+
} else if (showRemote) {
|
7354
|
+
K('.tab1', div).show();
|
7355
|
+
} else if (showLocal) {
|
7356
|
+
K('.tab2', div).show();
|
7357
|
+
}
|
7358
|
+
var uploadbutton = K.uploadbutton({
|
7359
|
+
button : K('.ke-upload-button', div)[0],
|
7360
|
+
fieldName : filePostName,
|
7361
|
+
form : K('.ke-form', div),
|
7362
|
+
target : target,
|
7363
|
+
width: 60,
|
7364
|
+
afterUpload : function(data) {
|
7365
|
+
dialog.hideLoading();
|
7366
|
+
if (data.error === 0) {
|
7367
|
+
var url = data.url;
|
7368
|
+
if (formatUploadUrl) {
|
7369
|
+
url = K.formatUrl(url, 'absolute');
|
7370
|
+
}
|
7371
|
+
if (self.afterUpload) {
|
7372
|
+
self.afterUpload.call(self, url, data, name);
|
7373
|
+
}
|
7374
|
+
if (!fillDescAfterUploadImage) {
|
7375
|
+
clickFn.call(self, url, data.title, data.width, data.height, data.border, data.align);
|
7376
|
+
} else {
|
7377
|
+
K(".ke-dialog-row #remoteUrl", div).val(url);
|
7378
|
+
K(".ke-tabs-li", div)[0].click();
|
7379
|
+
K(".ke-refresh-btn", div).click();
|
7380
|
+
}
|
7381
|
+
} else {
|
7382
|
+
alert(data.message);
|
7383
|
+
}
|
7384
|
+
},
|
7385
|
+
afterError : function(html) {
|
7386
|
+
dialog.hideLoading();
|
7387
|
+
self.errorDialog(html);
|
7388
|
+
}
|
7389
|
+
});
|
7390
|
+
uploadbutton.fileBox.change(function(e) {
|
7391
|
+
localUrlBox.val(uploadbutton.fileBox.val());
|
7392
|
+
});
|
7393
|
+
if (allowFileManager) {
|
7394
|
+
viewServerBtn.click(function(e) {
|
7395
|
+
self.loadPlugin('filemanager', function() {
|
7396
|
+
self.plugin.filemanagerDialog({
|
7397
|
+
viewType : 'VIEW',
|
7398
|
+
dirName : 'image',
|
7399
|
+
clickFn : function(url, title) {
|
7400
|
+
if (self.dialogs.length > 1) {
|
7401
|
+
K('[name="url"]', div).val(url);
|
7402
|
+
if (self.afterSelectFile) {
|
7403
|
+
self.afterSelectFile.call(self, url);
|
7404
|
+
}
|
7405
|
+
self.hideDialog();
|
7406
|
+
}
|
7407
|
+
}
|
7408
|
+
});
|
7409
|
+
});
|
7410
|
+
});
|
7411
|
+
} else {
|
7412
|
+
viewServerBtn.hide();
|
7413
|
+
}
|
7414
|
+
var originalWidth = 0, originalHeight = 0;
|
7415
|
+
function setSize(width, height) {
|
7416
|
+
widthBox.val(width);
|
7417
|
+
heightBox.val(height);
|
7418
|
+
originalWidth = width;
|
7419
|
+
originalHeight = height;
|
7420
|
+
}
|
7421
|
+
refreshBtn.click(function(e) {
|
7422
|
+
var tempImg = K('<img src="' + urlBox.val() + '" />', document).css({
|
7423
|
+
position : 'absolute',
|
7424
|
+
visibility : 'hidden',
|
7425
|
+
top : 0,
|
7426
|
+
left : '-1000px'
|
7427
|
+
});
|
7428
|
+
tempImg.bind('load', function() {
|
7429
|
+
setSize(tempImg.width(), tempImg.height());
|
7430
|
+
tempImg.remove();
|
7431
|
+
});
|
7432
|
+
K(document.body).append(tempImg);
|
7433
|
+
});
|
7434
|
+
widthBox.change(function(e) {
|
7435
|
+
if (originalWidth > 0) {
|
7436
|
+
heightBox.val(Math.round(originalHeight / originalWidth * parseInt(this.value, 10)));
|
7437
|
+
}
|
7438
|
+
});
|
7439
|
+
heightBox.change(function(e) {
|
7440
|
+
if (originalHeight > 0) {
|
7441
|
+
widthBox.val(Math.round(originalWidth / originalHeight * parseInt(this.value, 10)));
|
7442
|
+
}
|
7443
|
+
});
|
7444
|
+
urlBox.val(options.imageUrl);
|
7445
|
+
setSize(options.imageWidth, options.imageHeight);
|
7446
|
+
titleBox.val(options.imageTitle);
|
7447
|
+
alignBox.each(function() {
|
7448
|
+
if (this.value === options.imageAlign) {
|
7449
|
+
this.checked = true;
|
7450
|
+
return false;
|
7451
|
+
}
|
7452
|
+
});
|
7453
|
+
if (showRemote && tabIndex === 0) {
|
7454
|
+
urlBox[0].focus();
|
7455
|
+
urlBox[0].select();
|
7456
|
+
}
|
7457
|
+
return dialog;
|
7458
|
+
};
|
7459
|
+
self.plugin.image = {
|
7460
|
+
edit : function() {
|
7461
|
+
var img = self.plugin.getSelectedImage();
|
7462
|
+
self.plugin.imageDialog({
|
7463
|
+
imageUrl : img ? img.attr('data-ke-src') : 'http://',
|
7464
|
+
imageWidth : img ? img.width() : '',
|
7465
|
+
imageHeight : img ? img.height() : '',
|
7466
|
+
imageTitle : img ? img.attr('title') : '',
|
7467
|
+
imageAlign : img ? img.attr('align') : '',
|
7468
|
+
showRemote : allowImageRemote,
|
7469
|
+
showLocal : allowImageUpload,
|
7470
|
+
tabIndex: img ? 0 : imageTabIndex,
|
7471
|
+
clickFn : function(url, title, width, height, border, align) {
|
7472
|
+
if (img) {
|
7473
|
+
img.attr('src', url);
|
7474
|
+
img.attr('data-ke-src', url);
|
7475
|
+
img.attr('width', width);
|
7476
|
+
img.attr('height', height);
|
7477
|
+
img.attr('title', title);
|
7478
|
+
img.attr('align', align);
|
7479
|
+
img.attr('alt', title);
|
7480
|
+
} else {
|
7481
|
+
self.exec('insertimage', url, title, width, height, border, align);
|
7482
|
+
}
|
7483
|
+
setTimeout(function() {
|
7484
|
+
self.hideDialog().focus();
|
7485
|
+
}, 0);
|
7486
|
+
}
|
7487
|
+
});
|
7488
|
+
},
|
7489
|
+
'delete' : function() {
|
7490
|
+
var target = self.plugin.getSelectedImage();
|
7491
|
+
if (target.parent().name == 'a') {
|
7492
|
+
target = target.parent();
|
7493
|
+
}
|
7494
|
+
target.remove();
|
7495
|
+
self.addBookmark();
|
7496
|
+
}
|
7497
|
+
};
|
7498
|
+
self.clickToolbar(name, self.plugin.image.edit);
|
7499
|
+
});
|
7500
|
+
|
7501
|
+
/*******************************************************************************
|
7502
|
+
* KindEditor - WYSIWYG HTML Editor for Internet
|
7503
|
+
* Copyright (C) 2006-2011 kindsoft.net
|
7504
|
+
*
|
7505
|
+
* @author Roddy <luolonghao@gmail.com>
|
7506
|
+
* @site http://www.kindsoft.net/
|
7507
|
+
* @licence http://www.kindsoft.net/license.php
|
7508
|
+
*******************************************************************************/
|
7509
|
+
KindEditor.plugin('insertfile', function(K) {
|
7510
|
+
var self = this, name = 'insertfile',
|
7511
|
+
allowFileUpload = K.undef(self.allowFileUpload, true),
|
7512
|
+
allowFileManager = K.undef(self.allowFileManager, false),
|
7513
|
+
formatUploadUrl = K.undef(self.formatUploadUrl, true),
|
7514
|
+
uploadJson = K.undef(self.uploadJson, self.basePath + 'php/upload_json.php'),
|
7515
|
+
extraParams = K.undef(self.extraFileUploadParams, {}),
|
7516
|
+
filePostName = K.undef(self.filePostName, 'imgFile'),
|
7517
|
+
lang = self.lang(name + '.');
|
7518
|
+
self.plugin.fileDialog = function(options) {
|
7519
|
+
var fileUrl = K.undef(options.fileUrl, 'http://'),
|
7520
|
+
fileTitle = K.undef(options.fileTitle, ''),
|
7521
|
+
clickFn = options.clickFn;
|
7522
|
+
var html = [
|
7523
|
+
'<div style="padding:20px;">',
|
7524
|
+
'<div class="ke-dialog-row">',
|
7525
|
+
'<label for="keUrl" style="width:60px;">' + lang.url + '</label>',
|
7526
|
+
'<input type="text" id="keUrl" name="url" class="ke-input-text" style="width:160px;" /> ',
|
7527
|
+
'<input type="button" class="ke-upload-button" value="' + lang.upload + '" /> ',
|
7528
|
+
'<span class="ke-button-common ke-button-outer">',
|
7529
|
+
'<input type="button" class="ke-button-common ke-button" name="viewServer" value="' + lang.viewServer + '" />',
|
7530
|
+
'</span>',
|
7531
|
+
'</div>',
|
7532
|
+
'<div class="ke-dialog-row">',
|
7533
|
+
'<label for="keTitle" style="width:60px;">' + lang.title + '</label>',
|
7534
|
+
'<input type="text" id="keTitle" class="ke-input-text" name="title" value="" style="width:160px;" /></div>',
|
7535
|
+
'</div>',
|
7536
|
+
'</form>',
|
7537
|
+
'</div>'
|
7538
|
+
].join('');
|
7539
|
+
var dialog = self.createDialog({
|
7540
|
+
name : name,
|
7541
|
+
width : 450,
|
7542
|
+
title : self.lang(name),
|
7543
|
+
body : html,
|
7544
|
+
yesBtn : {
|
7545
|
+
name : self.lang('yes'),
|
7546
|
+
click : function(e) {
|
7547
|
+
var url = K.trim(urlBox.val()),
|
7548
|
+
title = titleBox.val();
|
7549
|
+
if (url == 'http://' || K.invalidUrl(url)) {
|
7550
|
+
alert(self.lang('invalidUrl'));
|
7551
|
+
urlBox[0].focus();
|
7552
|
+
return;
|
7553
|
+
}
|
7554
|
+
if (K.trim(title) === '') {
|
7555
|
+
title = url;
|
7556
|
+
}
|
7557
|
+
clickFn.call(self, url, title);
|
7558
|
+
}
|
7559
|
+
}
|
7560
|
+
}),
|
7561
|
+
div = dialog.div;
|
7562
|
+
var urlBox = K('[name="url"]', div),
|
7563
|
+
viewServerBtn = K('[name="viewServer"]', div),
|
7564
|
+
titleBox = K('[name="title"]', div);
|
7565
|
+
if (allowFileUpload) {
|
7566
|
+
var uploadbutton = K.uploadbutton({
|
7567
|
+
button : K('.ke-upload-button', div)[0],
|
7568
|
+
fieldName : filePostName,
|
7569
|
+
url : K.addParam(uploadJson, 'dir=file'),
|
7570
|
+
extraParams : extraParams,
|
7571
|
+
afterUpload : function(data) {
|
7572
|
+
dialog.hideLoading();
|
7573
|
+
if (data.error === 0) {
|
7574
|
+
var url = data.url;
|
7575
|
+
if (formatUploadUrl) {
|
7576
|
+
url = K.formatUrl(url, 'absolute');
|
7577
|
+
}
|
7578
|
+
urlBox.val(url);
|
7579
|
+
if (self.afterUpload) {
|
7580
|
+
self.afterUpload.call(self, url, data, name);
|
7581
|
+
}
|
7582
|
+
alert(self.lang('uploadSuccess'));
|
7583
|
+
} else {
|
7584
|
+
alert(data.message);
|
7585
|
+
}
|
7586
|
+
},
|
7587
|
+
afterError : function(html) {
|
7588
|
+
dialog.hideLoading();
|
7589
|
+
self.errorDialog(html);
|
7590
|
+
}
|
7591
|
+
});
|
7592
|
+
uploadbutton.fileBox.change(function(e) {
|
7593
|
+
dialog.showLoading(self.lang('uploadLoading'));
|
7594
|
+
uploadbutton.submit();
|
7595
|
+
});
|
7596
|
+
} else {
|
7597
|
+
K('.ke-upload-button', div).hide();
|
7598
|
+
}
|
7599
|
+
if (allowFileManager) {
|
7600
|
+
viewServerBtn.click(function(e) {
|
7601
|
+
self.loadPlugin('filemanager', function() {
|
7602
|
+
self.plugin.filemanagerDialog({
|
7603
|
+
viewType : 'LIST',
|
7604
|
+
dirName : 'file',
|
7605
|
+
clickFn : function(url, title) {
|
7606
|
+
if (self.dialogs.length > 1) {
|
7607
|
+
K('[name="url"]', div).val(url);
|
7608
|
+
if (self.afterSelectFile) {
|
7609
|
+
self.afterSelectFile.call(self, url);
|
7610
|
+
}
|
7611
|
+
self.hideDialog();
|
7612
|
+
}
|
7613
|
+
}
|
7614
|
+
});
|
7615
|
+
});
|
7616
|
+
});
|
7617
|
+
} else {
|
7618
|
+
viewServerBtn.hide();
|
7619
|
+
}
|
7620
|
+
urlBox.val(fileUrl);
|
7621
|
+
titleBox.val(fileTitle);
|
7622
|
+
urlBox[0].focus();
|
7623
|
+
urlBox[0].select();
|
7624
|
+
};
|
7625
|
+
self.clickToolbar(name, function() {
|
7626
|
+
self.plugin.fileDialog({
|
7627
|
+
clickFn : function(url, title) {
|
7628
|
+
var html = '<a class="ke-insertfile" href="' + url + '" data-ke-src="' + url + '" target="_blank">' + title + '</a>';
|
7629
|
+
self.insertHtml(html).hideDialog().focus();
|
7630
|
+
}
|
7631
|
+
});
|
7632
|
+
});
|
7633
|
+
});
|
7634
|
+
|
7635
|
+
/*******************************************************************************
|
7636
|
+
* KindEditor - WYSIWYG HTML Editor for Internet
|
7637
|
+
* Copyright (C) 2006-2011 kindsoft.net
|
7638
|
+
*
|
7639
|
+
* @author Roddy <luolonghao@gmail.com>
|
7640
|
+
* @site http://www.kindsoft.net/
|
7641
|
+
* @licence http://www.kindsoft.net/license.php
|
7642
|
+
*******************************************************************************/
|
7643
|
+
KindEditor.plugin('lineheight', function(K) {
|
7644
|
+
var self = this, name = 'lineheight', lang = self.lang(name + '.');
|
7645
|
+
self.clickToolbar(name, function() {
|
7646
|
+
var curVal = '', commonNode = self.cmd.commonNode({'*' : '.line-height'});
|
7647
|
+
if (commonNode) {
|
7648
|
+
curVal = commonNode.css('line-height');
|
7649
|
+
}
|
7650
|
+
var menu = self.createMenu({
|
7651
|
+
name : name,
|
7652
|
+
width : 150
|
7653
|
+
});
|
7654
|
+
K.each(lang.lineHeight, function(i, row) {
|
7655
|
+
K.each(row, function(key, val) {
|
7656
|
+
menu.addItem({
|
7657
|
+
title : val,
|
7658
|
+
checked : curVal === key,
|
7659
|
+
click : function() {
|
7660
|
+
self.cmd.toggle('<span style="line-height:' + key + ';"></span>', {
|
7661
|
+
span : '.line-height=' + key
|
7662
|
+
});
|
7663
|
+
self.updateState();
|
7664
|
+
self.addBookmark();
|
7665
|
+
self.hideMenu();
|
7666
|
+
}
|
7667
|
+
});
|
7668
|
+
});
|
7669
|
+
});
|
7670
|
+
});
|
7671
|
+
});
|
7672
|
+
|
7673
|
+
/*******************************************************************************
|
7674
|
+
* KindEditor - WYSIWYG HTML Editor for Internet
|
7675
|
+
* Copyright (C) 2006-2011 kindsoft.net
|
7676
|
+
*
|
7677
|
+
* @author Roddy <luolonghao@gmail.com>
|
7678
|
+
* @site http://www.kindsoft.net/
|
7679
|
+
* @licence http://www.kindsoft.net/license.php
|
7680
|
+
*******************************************************************************/
|
7681
|
+
KindEditor.plugin('link', function(K) {
|
7682
|
+
var self = this, name = 'link';
|
7683
|
+
self.plugin.link = {
|
7684
|
+
edit : function() {
|
7685
|
+
var lang = self.lang(name + '.'),
|
7686
|
+
html = '<div style="padding:20px;">' +
|
7687
|
+
'<div class="ke-dialog-row">' +
|
7688
|
+
'<label for="keUrl" style="width:60px;">' + lang.url + '</label>' +
|
7689
|
+
'<input class="ke-input-text" type="text" id="keUrl" name="url" value="" style="width:260px;" /></div>' +
|
7690
|
+
'<div class="ke-dialog-row"">' +
|
7691
|
+
'<label for="keType" style="width:60px;">' + lang.linkType + '</label>' +
|
7692
|
+
'<select id="keType" name="type"></select>' +
|
7693
|
+
'</div>' +
|
7694
|
+
'</div>',
|
7695
|
+
dialog = self.createDialog({
|
7696
|
+
name : name,
|
7697
|
+
width : 450,
|
7698
|
+
title : self.lang(name),
|
7699
|
+
body : html,
|
7700
|
+
yesBtn : {
|
7701
|
+
name : self.lang('yes'),
|
7702
|
+
click : function(e) {
|
7703
|
+
var url = K.trim(urlBox.val());
|
7704
|
+
if (url == 'http://' || K.invalidUrl(url)) {
|
7705
|
+
alert(self.lang('invalidUrl'));
|
7706
|
+
urlBox[0].focus();
|
7707
|
+
return;
|
7708
|
+
}
|
7709
|
+
self.exec('createlink', url, typeBox.val()).hideDialog().focus();
|
7710
|
+
}
|
7711
|
+
}
|
7712
|
+
}),
|
7713
|
+
div = dialog.div,
|
7714
|
+
urlBox = K('input[name="url"]', div),
|
7715
|
+
typeBox = K('select[name="type"]', div);
|
7716
|
+
urlBox.val('http://');
|
7717
|
+
typeBox[0].options[0] = new Option(lang.newWindow, '_blank');
|
7718
|
+
typeBox[0].options[1] = new Option(lang.selfWindow, '');
|
7719
|
+
self.cmd.selection();
|
7720
|
+
var a = self.plugin.getSelectedLink();
|
7721
|
+
if (a) {
|
7722
|
+
self.cmd.range.selectNode(a[0]);
|
7723
|
+
self.cmd.select();
|
7724
|
+
urlBox.val(a.attr('data-ke-src'));
|
7725
|
+
typeBox.val(a.attr('target'));
|
7726
|
+
}
|
7727
|
+
urlBox[0].focus();
|
7728
|
+
urlBox[0].select();
|
7729
|
+
},
|
7730
|
+
'delete' : function() {
|
7731
|
+
self.exec('unlink', null);
|
7732
|
+
}
|
7733
|
+
};
|
7734
|
+
self.clickToolbar(name, self.plugin.link.edit);
|
7735
|
+
});
|
7736
|
+
|
7737
|
+
/*******************************************************************************
|
7738
|
+
* KindEditor - WYSIWYG HTML Editor for Internet
|
7739
|
+
* Copyright (C) 2006-2011 kindsoft.net
|
7740
|
+
*
|
7741
|
+
* @author Roddy <luolonghao@gmail.com>
|
7742
|
+
* @site http://www.kindsoft.net/
|
7743
|
+
* @licence http://www.kindsoft.net/license.php
|
7744
|
+
*******************************************************************************/
|
7745
|
+
KindEditor.plugin('media', function(K) {
|
7746
|
+
var self = this, name = 'media', lang = self.lang(name + '.'),
|
7747
|
+
allowMediaUpload = K.undef(self.allowMediaUpload, true),
|
7748
|
+
allowFileManager = K.undef(self.allowFileManager, false),
|
7749
|
+
formatUploadUrl = K.undef(self.formatUploadUrl, true),
|
7750
|
+
extraParams = K.undef(self.extraFileUploadParams, {}),
|
7751
|
+
filePostName = K.undef(self.filePostName, 'imgFile'),
|
7752
|
+
uploadJson = K.undef(self.uploadJson, self.basePath + 'php/upload_json.php');
|
7753
|
+
self.plugin.media = {
|
7754
|
+
edit : function() {
|
7755
|
+
var html = [
|
7756
|
+
'<div style="padding:20px;">',
|
7757
|
+
'<div class="ke-dialog-row">',
|
7758
|
+
'<label for="keUrl" style="width:60px;">' + lang.url + '</label>',
|
7759
|
+
'<input class="ke-input-text" type="text" id="keUrl" name="url" value="" style="width:160px;" /> ',
|
7760
|
+
'<input type="button" class="ke-upload-button" value="' + lang.upload + '" /> ',
|
7761
|
+
'<span class="ke-button-common ke-button-outer">',
|
7762
|
+
'<input type="button" class="ke-button-common ke-button" name="viewServer" value="' + lang.viewServer + '" />',
|
7763
|
+
'</span>',
|
7764
|
+
'</div>',
|
7765
|
+
'<div class="ke-dialog-row">',
|
7766
|
+
'<label for="keWidth" style="width:60px;">' + lang.width + '</label>',
|
7767
|
+
'<input type="text" id="keWidth" class="ke-input-text ke-input-number" name="width" value="550" maxlength="4" />',
|
7768
|
+
'</div>',
|
7769
|
+
'<div class="ke-dialog-row">',
|
7770
|
+
'<label for="keHeight" style="width:60px;">' + lang.height + '</label>',
|
7771
|
+
'<input type="text" id="keHeight" class="ke-input-text ke-input-number" name="height" value="400" maxlength="4" />',
|
7772
|
+
'</div>',
|
7773
|
+
'<div class="ke-dialog-row">',
|
7774
|
+
'<label for="keAutostart">' + lang.autostart + '</label>',
|
7775
|
+
'<input type="checkbox" id="keAutostart" name="autostart" value="" /> ',
|
7776
|
+
'</div>',
|
7777
|
+
'</div>'
|
7778
|
+
].join('');
|
7779
|
+
var dialog = self.createDialog({
|
7780
|
+
name : name,
|
7781
|
+
width : 450,
|
7782
|
+
height : 230,
|
7783
|
+
title : self.lang(name),
|
7784
|
+
body : html,
|
7785
|
+
yesBtn : {
|
7786
|
+
name : self.lang('yes'),
|
7787
|
+
click : function(e) {
|
7788
|
+
var url = K.trim(urlBox.val()),
|
7789
|
+
width = widthBox.val(),
|
7790
|
+
height = heightBox.val();
|
7791
|
+
if (url == 'http://' || K.invalidUrl(url)) {
|
7792
|
+
alert(self.lang('invalidUrl'));
|
7793
|
+
urlBox[0].focus();
|
7794
|
+
return;
|
7795
|
+
}
|
7796
|
+
if (!/^\d*$/.test(width)) {
|
7797
|
+
alert(self.lang('invalidWidth'));
|
7798
|
+
widthBox[0].focus();
|
7799
|
+
return;
|
7800
|
+
}
|
7801
|
+
if (!/^\d*$/.test(height)) {
|
7802
|
+
alert(self.lang('invalidHeight'));
|
7803
|
+
heightBox[0].focus();
|
7804
|
+
return;
|
7805
|
+
}
|
7806
|
+
var html = K.mediaImg(self.themesPath + 'common/blank.gif', {
|
7807
|
+
src : url,
|
7808
|
+
type : K.mediaType(url),
|
7809
|
+
width : width,
|
7810
|
+
height : height,
|
7811
|
+
autostart : autostartBox[0].checked ? 'true' : 'false',
|
7812
|
+
loop : 'true'
|
7813
|
+
});
|
7814
|
+
self.insertHtml(html).hideDialog().focus();
|
7815
|
+
}
|
7816
|
+
}
|
7817
|
+
}),
|
7818
|
+
div = dialog.div,
|
7819
|
+
urlBox = K('[name="url"]', div),
|
7820
|
+
viewServerBtn = K('[name="viewServer"]', div),
|
7821
|
+
widthBox = K('[name="width"]', div),
|
7822
|
+
heightBox = K('[name="height"]', div),
|
7823
|
+
autostartBox = K('[name="autostart"]', div);
|
7824
|
+
urlBox.val('http://');
|
7825
|
+
if (allowMediaUpload) {
|
7826
|
+
var uploadbutton = K.uploadbutton({
|
7827
|
+
button : K('.ke-upload-button', div)[0],
|
7828
|
+
fieldName : filePostName,
|
7829
|
+
extraParams : extraParams,
|
7830
|
+
url : K.addParam(uploadJson, 'dir=media'),
|
7831
|
+
afterUpload : function(data) {
|
7832
|
+
dialog.hideLoading();
|
7833
|
+
if (data.error === 0) {
|
7834
|
+
var url = data.url;
|
7835
|
+
if (formatUploadUrl) {
|
7836
|
+
url = K.formatUrl(url, 'absolute');
|
7837
|
+
}
|
7838
|
+
urlBox.val(url);
|
7839
|
+
if (self.afterUpload) {
|
7840
|
+
self.afterUpload.call(self, url, data, name);
|
7841
|
+
}
|
7842
|
+
alert(self.lang('uploadSuccess'));
|
7843
|
+
} else {
|
7844
|
+
alert(data.message);
|
7845
|
+
}
|
7846
|
+
},
|
7847
|
+
afterError : function(html) {
|
7848
|
+
dialog.hideLoading();
|
7849
|
+
self.errorDialog(html);
|
7850
|
+
}
|
7851
|
+
});
|
7852
|
+
uploadbutton.fileBox.change(function(e) {
|
7853
|
+
dialog.showLoading(self.lang('uploadLoading'));
|
7854
|
+
uploadbutton.submit();
|
7855
|
+
});
|
7856
|
+
} else {
|
7857
|
+
K('.ke-upload-button', div).hide();
|
7858
|
+
}
|
7859
|
+
if (allowFileManager) {
|
7860
|
+
viewServerBtn.click(function(e) {
|
7861
|
+
self.loadPlugin('filemanager', function() {
|
7862
|
+
self.plugin.filemanagerDialog({
|
7863
|
+
viewType : 'LIST',
|
7864
|
+
dirName : 'media',
|
7865
|
+
clickFn : function(url, title) {
|
7866
|
+
if (self.dialogs.length > 1) {
|
7867
|
+
K('[name="url"]', div).val(url);
|
7868
|
+
if (self.afterSelectFile) {
|
7869
|
+
self.afterSelectFile.call(self, url);
|
7870
|
+
}
|
7871
|
+
self.hideDialog();
|
7872
|
+
}
|
7873
|
+
}
|
7874
|
+
});
|
7875
|
+
});
|
7876
|
+
});
|
7877
|
+
} else {
|
7878
|
+
viewServerBtn.hide();
|
7879
|
+
}
|
7880
|
+
var img = self.plugin.getSelectedMedia();
|
7881
|
+
if (img) {
|
7882
|
+
var attrs = K.mediaAttrs(img.attr('data-ke-tag'));
|
7883
|
+
urlBox.val(attrs.src);
|
7884
|
+
widthBox.val(K.removeUnit(img.css('width')) || attrs.width || 0);
|
7885
|
+
heightBox.val(K.removeUnit(img.css('height')) || attrs.height || 0);
|
7886
|
+
autostartBox[0].checked = (attrs.autostart === 'true');
|
7887
|
+
}
|
7888
|
+
urlBox[0].focus();
|
7889
|
+
urlBox[0].select();
|
7890
|
+
},
|
7891
|
+
'delete' : function() {
|
7892
|
+
self.plugin.getSelectedMedia().remove();
|
7893
|
+
self.addBookmark();
|
7894
|
+
}
|
7895
|
+
};
|
7896
|
+
self.clickToolbar(name, self.plugin.media.edit);
|
7897
|
+
});
|
7898
|
+
|
7899
|
+
/*******************************************************************************
|
7900
|
+
* KindEditor - WYSIWYG HTML Editor for Internet
|
7901
|
+
* Copyright (C) 2006-2011 kindsoft.net
|
7902
|
+
*
|
7903
|
+
* @author Roddy <luolonghao@gmail.com>
|
7904
|
+
* @site http://www.kindsoft.net/
|
7905
|
+
* @licence http://www.kindsoft.net/license.php
|
7906
|
+
*******************************************************************************/
|
7907
|
+
(function(K) {
|
7908
|
+
function KSWFUpload(options) {
|
7909
|
+
this.init(options);
|
7910
|
+
}
|
7911
|
+
K.extend(KSWFUpload, {
|
7912
|
+
init : function(options) {
|
7913
|
+
var self = this;
|
7914
|
+
options.afterError = options.afterError || function(str) {
|
7915
|
+
alert(str);
|
7916
|
+
};
|
7917
|
+
self.options = options;
|
7918
|
+
self.progressbars = {};
|
7919
|
+
self.div = K(options.container).html([
|
7920
|
+
'<div class="ke-swfupload">',
|
7921
|
+
'<div class="ke-swfupload-top">',
|
7922
|
+
'<div class="ke-inline-block ke-swfupload-button">',
|
7923
|
+
'<input type="button" value="Browse" />',
|
7924
|
+
'</div>',
|
7925
|
+
'<div class="ke-inline-block ke-swfupload-desc">' + options.uploadDesc + '</div>',
|
7926
|
+
'<span class="ke-button-common ke-button-outer ke-swfupload-startupload">',
|
7927
|
+
'<input type="button" class="ke-button-common ke-button" value="' + options.startButtonValue + '" />',
|
7928
|
+
'</span>',
|
7929
|
+
'</div>',
|
7930
|
+
'<div class="ke-swfupload-body"></div>',
|
7931
|
+
'</div>'
|
7932
|
+
].join(''));
|
7933
|
+
self.bodyDiv = K('.ke-swfupload-body', self.div);
|
7934
|
+
function showError(itemDiv, msg) {
|
7935
|
+
K('.ke-status > div', itemDiv).hide();
|
7936
|
+
K('.ke-message', itemDiv).addClass('ke-error').show().html(K.escape(msg));
|
7937
|
+
}
|
7938
|
+
var settings = {
|
7939
|
+
debug : false,
|
7940
|
+
upload_url : options.uploadUrl,
|
7941
|
+
flash_url : options.flashUrl,
|
7942
|
+
file_post_name : options.filePostName,
|
7943
|
+
button_placeholder : K('.ke-swfupload-button > input', self.div)[0],
|
7944
|
+
button_image_url: options.buttonImageUrl,
|
7945
|
+
button_width: options.buttonWidth,
|
7946
|
+
button_height: options.buttonHeight,
|
7947
|
+
button_cursor : SWFUpload.CURSOR.HAND,
|
7948
|
+
file_types : options.fileTypes,
|
7949
|
+
file_types_description : options.fileTypesDesc,
|
7950
|
+
file_upload_limit : options.fileUploadLimit,
|
7951
|
+
file_size_limit : options.fileSizeLimit,
|
7952
|
+
post_params : options.postParams,
|
7953
|
+
file_queued_handler : function(file) {
|
7954
|
+
file.url = self.options.fileIconUrl;
|
7955
|
+
self.appendFile(file);
|
7956
|
+
},
|
7957
|
+
file_queue_error_handler : function(file, errorCode, message) {
|
7958
|
+
var errorName = '';
|
7959
|
+
switch (errorCode) {
|
7960
|
+
case SWFUpload.QUEUE_ERROR.QUEUE_LIMIT_EXCEEDED:
|
7961
|
+
errorName = options.queueLimitExceeded;
|
7962
|
+
break;
|
7963
|
+
case SWFUpload.QUEUE_ERROR.FILE_EXCEEDS_SIZE_LIMIT:
|
7964
|
+
errorName = options.fileExceedsSizeLimit;
|
7965
|
+
break;
|
7966
|
+
case SWFUpload.QUEUE_ERROR.ZERO_BYTE_FILE:
|
7967
|
+
errorName = options.zeroByteFile;
|
7968
|
+
break;
|
7969
|
+
case SWFUpload.QUEUE_ERROR.INVALID_FILETYPE:
|
7970
|
+
errorName = options.invalidFiletype;
|
7971
|
+
break;
|
7972
|
+
default:
|
7973
|
+
errorName = options.unknownError;
|
7974
|
+
break;
|
7975
|
+
}
|
7976
|
+
K.DEBUG && alert(errorName);
|
7977
|
+
},
|
7978
|
+
upload_start_handler : function(file) {
|
7979
|
+
var self = this;
|
7980
|
+
var itemDiv = K('div[data-id="' + file.id + '"]', self.bodyDiv);
|
7981
|
+
K('.ke-status > div', itemDiv).hide();
|
7982
|
+
K('.ke-progressbar', itemDiv).show();
|
7983
|
+
},
|
7984
|
+
upload_progress_handler : function(file, bytesLoaded, bytesTotal) {
|
7985
|
+
var percent = Math.round(bytesLoaded * 100 / bytesTotal);
|
7986
|
+
var progressbar = self.progressbars[file.id];
|
7987
|
+
progressbar.bar.css('width', Math.round(percent * 80 / 100) + 'px');
|
7988
|
+
progressbar.percent.html(percent + '%');
|
7989
|
+
},
|
7990
|
+
upload_error_handler : function(file, errorCode, message) {
|
7991
|
+
if (file && file.filestatus == SWFUpload.FILE_STATUS.ERROR) {
|
7992
|
+
var itemDiv = K('div[data-id="' + file.id + '"]', self.bodyDiv).eq(0);
|
7993
|
+
showError(itemDiv, self.options.errorMessage);
|
7994
|
+
}
|
7995
|
+
},
|
7996
|
+
upload_success_handler : function(file, serverData) {
|
7997
|
+
var itemDiv = K('div[data-id="' + file.id + '"]', self.bodyDiv).eq(0);
|
7998
|
+
var data = {};
|
7999
|
+
try {
|
8000
|
+
data = K.json(serverData);
|
8001
|
+
} catch (e) {
|
8002
|
+
self.options.afterError.call(this, '<!doctype html><html>' + serverData + '</html>');
|
8003
|
+
}
|
8004
|
+
if (data.error !== 0) {
|
8005
|
+
showError(itemDiv, K.DEBUG ? data.message : self.options.errorMessage);
|
8006
|
+
return;
|
8007
|
+
}
|
8008
|
+
file.url = data.url;
|
8009
|
+
K('.ke-img', itemDiv).attr('src', file.url).attr('data-status', file.filestatus).data('data', data);
|
8010
|
+
K('.ke-status > div', itemDiv).hide();
|
8011
|
+
}
|
8012
|
+
};
|
8013
|
+
self.swfu = new SWFUpload(settings);
|
8014
|
+
K('.ke-swfupload-startupload input', self.div).click(function() {
|
8015
|
+
self.swfu.startUpload();
|
8016
|
+
});
|
8017
|
+
},
|
8018
|
+
getUrlList : function() {
|
8019
|
+
var list = [];
|
8020
|
+
K('.ke-img', self.bodyDiv).each(function() {
|
8021
|
+
var img = K(this);
|
8022
|
+
var status = img.attr('data-status');
|
8023
|
+
if (status == SWFUpload.FILE_STATUS.COMPLETE) {
|
8024
|
+
list.push(img.data('data'));
|
8025
|
+
}
|
8026
|
+
});
|
8027
|
+
return list;
|
8028
|
+
},
|
8029
|
+
removeFile : function(fileId) {
|
8030
|
+
var self = this;
|
8031
|
+
self.swfu.cancelUpload(fileId);
|
8032
|
+
var itemDiv = K('div[data-id="' + fileId + '"]', self.bodyDiv);
|
8033
|
+
K('.ke-photo', itemDiv).unbind();
|
8034
|
+
K('.ke-delete', itemDiv).unbind();
|
8035
|
+
itemDiv.remove();
|
8036
|
+
},
|
8037
|
+
removeFiles : function() {
|
8038
|
+
var self = this;
|
8039
|
+
K('.ke-item', self.bodyDiv).each(function() {
|
8040
|
+
self.removeFile(K(this).attr('data-id'));
|
8041
|
+
});
|
8042
|
+
},
|
8043
|
+
appendFile : function(file) {
|
8044
|
+
var self = this;
|
8045
|
+
var itemDiv = K('<div class="ke-inline-block ke-item" data-id="' + file.id + '"></div>');
|
8046
|
+
self.bodyDiv.append(itemDiv);
|
8047
|
+
var photoDiv = K('<div class="ke-inline-block ke-photo"></div>')
|
8048
|
+
.mouseover(function(e) {
|
8049
|
+
K(this).addClass('ke-on');
|
8050
|
+
})
|
8051
|
+
.mouseout(function(e) {
|
8052
|
+
K(this).removeClass('ke-on');
|
8053
|
+
});
|
8054
|
+
itemDiv.append(photoDiv);
|
8055
|
+
var img = K('<img src="' + file.url + '" class="ke-img" data-status="' + file.filestatus + '" width="80" height="80" alt="' + file.name + '" />');
|
8056
|
+
photoDiv.append(img);
|
8057
|
+
K('<span class="ke-delete"></span>').appendTo(photoDiv).click(function() {
|
8058
|
+
self.removeFile(file.id);
|
8059
|
+
});
|
8060
|
+
var statusDiv = K('<div class="ke-status"></div>').appendTo(photoDiv);
|
8061
|
+
K(['<div class="ke-progressbar">',
|
8062
|
+
'<div class="ke-progressbar-bar"><div class="ke-progressbar-bar-inner"></div></div>',
|
8063
|
+
'<div class="ke-progressbar-percent">0%</div></div>'].join('')).hide().appendTo(statusDiv);
|
8064
|
+
K('<div class="ke-message">' + self.options.pendingMessage + '</div>').appendTo(statusDiv);
|
8065
|
+
itemDiv.append('<div class="ke-name">' + file.name + '</div>');
|
8066
|
+
self.progressbars[file.id] = {
|
8067
|
+
bar : K('.ke-progressbar-bar-inner', photoDiv),
|
8068
|
+
percent : K('.ke-progressbar-percent', photoDiv)
|
8069
|
+
};
|
8070
|
+
},
|
8071
|
+
remove : function() {
|
8072
|
+
this.removeFiles();
|
8073
|
+
this.swfu.destroy();
|
8074
|
+
this.div.html('');
|
8075
|
+
}
|
8076
|
+
});
|
8077
|
+
K.swfupload = function(element, options) {
|
8078
|
+
return new KSWFUpload(element, options);
|
8079
|
+
};
|
8080
|
+
})(KindEditor);
|
8081
|
+
KindEditor.plugin('multiimage', function(K) {
|
8082
|
+
var self = this, name = 'multiimage',
|
8083
|
+
formatUploadUrl = K.undef(self.formatUploadUrl, true),
|
8084
|
+
uploadJson = K.undef(self.uploadJson, self.basePath + 'php/upload_json.php'),
|
8085
|
+
imgPath = self.pluginsPath + 'multiimage/images/',
|
8086
|
+
imageSizeLimit = K.undef(self.imageSizeLimit, '1MB'),
|
8087
|
+
imageFileTypes = K.undef(self.imageFileTypes, '*.jpg;*.gif;*.png'),
|
8088
|
+
imageUploadLimit = K.undef(self.imageUploadLimit, 20),
|
8089
|
+
filePostName = K.undef(self.filePostName, 'imgFile'),
|
8090
|
+
lang = self.lang(name + '.');
|
8091
|
+
self.plugin.multiImageDialog = function(options) {
|
8092
|
+
var clickFn = options.clickFn,
|
8093
|
+
uploadDesc = K.tmpl(lang.uploadDesc, {uploadLimit : imageUploadLimit, sizeLimit : imageSizeLimit});
|
8094
|
+
var html = [
|
8095
|
+
'<div style="padding:20px;">',
|
8096
|
+
'<div class="swfupload">',
|
8097
|
+
'</div>',
|
8098
|
+
'</div>'
|
8099
|
+
].join('');
|
8100
|
+
var dialog = self.createDialog({
|
8101
|
+
name : name,
|
8102
|
+
width : 650,
|
8103
|
+
height : 510,
|
8104
|
+
title : self.lang(name),
|
8105
|
+
body : html,
|
8106
|
+
previewBtn : {
|
8107
|
+
name : lang.insertAll,
|
8108
|
+
click : function(e) {
|
8109
|
+
clickFn.call(self, swfupload.getUrlList());
|
8110
|
+
}
|
8111
|
+
},
|
8112
|
+
yesBtn : {
|
8113
|
+
name : lang.clearAll,
|
8114
|
+
click : function(e) {
|
8115
|
+
swfupload.removeFiles();
|
8116
|
+
}
|
8117
|
+
},
|
8118
|
+
beforeRemove : function() {
|
8119
|
+
if (!K.IE || K.V <= 8) {
|
8120
|
+
swfupload.remove();
|
8121
|
+
}
|
8122
|
+
}
|
8123
|
+
}),
|
8124
|
+
div = dialog.div;
|
8125
|
+
var swfupload = K.swfupload({
|
8126
|
+
container : K('.swfupload', div),
|
8127
|
+
buttonImageUrl : imgPath + (self.langType == 'zh-CN' ? 'select-files-zh-CN.png' : 'select-files-en.png'),
|
8128
|
+
buttonWidth : self.langType == 'zh-CN' ? 72 : 88,
|
8129
|
+
buttonHeight : 23,
|
8130
|
+
fileIconUrl : imgPath + 'image.png',
|
8131
|
+
uploadDesc : uploadDesc,
|
8132
|
+
startButtonValue : lang.startUpload,
|
8133
|
+
uploadUrl : K.addParam(uploadJson, 'dir=image'),
|
8134
|
+
flashUrl : imgPath + 'swfupload.swf',
|
8135
|
+
filePostName : filePostName,
|
8136
|
+
fileTypes : '*.jpg;*.jpeg;*.gif;*.png;*.bmp',
|
8137
|
+
fileTypesDesc : 'Image Files',
|
8138
|
+
fileUploadLimit : imageUploadLimit,
|
8139
|
+
fileSizeLimit : imageSizeLimit,
|
8140
|
+
postParams : K.undef(self.extraFileUploadParams, {}),
|
8141
|
+
queueLimitExceeded : lang.queueLimitExceeded,
|
8142
|
+
fileExceedsSizeLimit : lang.fileExceedsSizeLimit,
|
8143
|
+
zeroByteFile : lang.zeroByteFile,
|
8144
|
+
invalidFiletype : lang.invalidFiletype,
|
8145
|
+
unknownError : lang.unknownError,
|
8146
|
+
pendingMessage : lang.pending,
|
8147
|
+
errorMessage : lang.uploadError,
|
8148
|
+
afterError : function(html) {
|
8149
|
+
self.errorDialog(html);
|
8150
|
+
}
|
8151
|
+
});
|
8152
|
+
return dialog;
|
8153
|
+
};
|
8154
|
+
self.clickToolbar(name, function() {
|
8155
|
+
self.plugin.multiImageDialog({
|
8156
|
+
clickFn : function (urlList) {
|
8157
|
+
if (urlList.length === 0) {
|
8158
|
+
return;
|
8159
|
+
}
|
8160
|
+
K.each(urlList, function(i, data) {
|
8161
|
+
if (self.afterUpload) {
|
8162
|
+
self.afterUpload.call(self, data.url, data, 'multiimage');
|
8163
|
+
}
|
8164
|
+
self.exec('insertimage', data.url, data.title, data.width, data.height, data.border, data.align);
|
8165
|
+
});
|
8166
|
+
setTimeout(function() {
|
8167
|
+
self.hideDialog().focus();
|
8168
|
+
}, 0);
|
8169
|
+
}
|
8170
|
+
});
|
8171
|
+
});
|
8172
|
+
});
|
8173
|
+
/* ******************* */
|
8174
|
+
/* Constructor & Init */
|
8175
|
+
/* ******************* */
|
8176
|
+
(function() {
|
8177
|
+
window.SWFUpload = function (settings) {
|
8178
|
+
this.initSWFUpload(settings);
|
8179
|
+
};
|
8180
|
+
SWFUpload.prototype.initSWFUpload = function (settings) {
|
8181
|
+
try {
|
8182
|
+
this.customSettings = {};
|
8183
|
+
this.settings = settings;
|
8184
|
+
this.eventQueue = [];
|
8185
|
+
this.movieName = "KindEditor_SWFUpload_" + SWFUpload.movieCount++;
|
8186
|
+
this.movieElement = null;
|
8187
|
+
SWFUpload.instances[this.movieName] = this;
|
8188
|
+
this.initSettings();
|
8189
|
+
this.loadFlash();
|
8190
|
+
this.displayDebugInfo();
|
8191
|
+
} catch (ex) {
|
8192
|
+
delete SWFUpload.instances[this.movieName];
|
8193
|
+
throw ex;
|
8194
|
+
}
|
8195
|
+
};
|
8196
|
+
/* *************** */
|
8197
|
+
/* Static Members */
|
8198
|
+
/* *************** */
|
8199
|
+
SWFUpload.instances = {};
|
8200
|
+
SWFUpload.movieCount = 0;
|
8201
|
+
SWFUpload.version = "2.2.0 2009-03-25";
|
8202
|
+
SWFUpload.QUEUE_ERROR = {
|
8203
|
+
QUEUE_LIMIT_EXCEEDED : -100,
|
8204
|
+
FILE_EXCEEDS_SIZE_LIMIT : -110,
|
8205
|
+
ZERO_BYTE_FILE : -120,
|
8206
|
+
INVALID_FILETYPE : -130
|
8207
|
+
};
|
8208
|
+
SWFUpload.UPLOAD_ERROR = {
|
8209
|
+
HTTP_ERROR : -200,
|
8210
|
+
MISSING_UPLOAD_URL : -210,
|
8211
|
+
IO_ERROR : -220,
|
8212
|
+
SECURITY_ERROR : -230,
|
8213
|
+
UPLOAD_LIMIT_EXCEEDED : -240,
|
8214
|
+
UPLOAD_FAILED : -250,
|
8215
|
+
SPECIFIED_FILE_ID_NOT_FOUND : -260,
|
8216
|
+
FILE_VALIDATION_FAILED : -270,
|
8217
|
+
FILE_CANCELLED : -280,
|
8218
|
+
UPLOAD_STOPPED : -290
|
8219
|
+
};
|
8220
|
+
SWFUpload.FILE_STATUS = {
|
8221
|
+
QUEUED : -1,
|
8222
|
+
IN_PROGRESS : -2,
|
8223
|
+
ERROR : -3,
|
8224
|
+
COMPLETE : -4,
|
8225
|
+
CANCELLED : -5
|
8226
|
+
};
|
8227
|
+
SWFUpload.BUTTON_ACTION = {
|
8228
|
+
SELECT_FILE : -100,
|
8229
|
+
SELECT_FILES : -110,
|
8230
|
+
START_UPLOAD : -120
|
8231
|
+
};
|
8232
|
+
SWFUpload.CURSOR = {
|
8233
|
+
ARROW : -1,
|
8234
|
+
HAND : -2
|
8235
|
+
};
|
8236
|
+
SWFUpload.WINDOW_MODE = {
|
8237
|
+
WINDOW : "window",
|
8238
|
+
TRANSPARENT : "transparent",
|
8239
|
+
OPAQUE : "opaque"
|
8240
|
+
};
|
8241
|
+
SWFUpload.completeURL = function(url) {
|
8242
|
+
if (typeof(url) !== "string" || url.match(/^https?:\/\//i) || url.match(/^\//)) {
|
8243
|
+
return url;
|
8244
|
+
}
|
8245
|
+
var currentURL = window.location.protocol + "//" + window.location.hostname + (window.location.port ? ":" + window.location.port : "");
|
8246
|
+
var indexSlash = window.location.pathname.lastIndexOf("/");
|
8247
|
+
if (indexSlash <= 0) {
|
8248
|
+
path = "/";
|
8249
|
+
} else {
|
8250
|
+
path = window.location.pathname.substr(0, indexSlash) + "/";
|
8251
|
+
}
|
8252
|
+
return /*currentURL +*/ path + url;
|
8253
|
+
};
|
8254
|
+
/* ******************** */
|
8255
|
+
/* Instance Members */
|
8256
|
+
/* ******************** */
|
8257
|
+
SWFUpload.prototype.initSettings = function () {
|
8258
|
+
this.ensureDefault = function (settingName, defaultValue) {
|
8259
|
+
this.settings[settingName] = (this.settings[settingName] == undefined) ? defaultValue : this.settings[settingName];
|
8260
|
+
};
|
8261
|
+
this.ensureDefault("upload_url", "");
|
8262
|
+
this.ensureDefault("preserve_relative_urls", false);
|
8263
|
+
this.ensureDefault("file_post_name", "Filedata");
|
8264
|
+
this.ensureDefault("post_params", {});
|
8265
|
+
this.ensureDefault("use_query_string", false);
|
8266
|
+
this.ensureDefault("requeue_on_error", false);
|
8267
|
+
this.ensureDefault("http_success", []);
|
8268
|
+
this.ensureDefault("assume_success_timeout", 0);
|
8269
|
+
this.ensureDefault("file_types", "*.*");
|
8270
|
+
this.ensureDefault("file_types_description", "All Files");
|
8271
|
+
this.ensureDefault("file_size_limit", 0);
|
8272
|
+
this.ensureDefault("file_upload_limit", 0);
|
8273
|
+
this.ensureDefault("file_queue_limit", 0);
|
8274
|
+
this.ensureDefault("flash_url", "swfupload.swf");
|
8275
|
+
this.ensureDefault("prevent_swf_caching", true);
|
8276
|
+
this.ensureDefault("button_image_url", "");
|
8277
|
+
this.ensureDefault("button_width", 1);
|
8278
|
+
this.ensureDefault("button_height", 1);
|
8279
|
+
this.ensureDefault("button_text", "");
|
8280
|
+
this.ensureDefault("button_text_style", "color: #000000; font-size: 16pt;");
|
8281
|
+
this.ensureDefault("button_text_top_padding", 0);
|
8282
|
+
this.ensureDefault("button_text_left_padding", 0);
|
8283
|
+
this.ensureDefault("button_action", SWFUpload.BUTTON_ACTION.SELECT_FILES);
|
8284
|
+
this.ensureDefault("button_disabled", false);
|
8285
|
+
this.ensureDefault("button_placeholder_id", "");
|
8286
|
+
this.ensureDefault("button_placeholder", null);
|
8287
|
+
this.ensureDefault("button_cursor", SWFUpload.CURSOR.ARROW);
|
8288
|
+
this.ensureDefault("button_window_mode", SWFUpload.WINDOW_MODE.WINDOW);
|
8289
|
+
this.ensureDefault("debug", false);
|
8290
|
+
this.settings.debug_enabled = this.settings.debug;
|
8291
|
+
this.settings.return_upload_start_handler = this.returnUploadStart;
|
8292
|
+
this.ensureDefault("swfupload_loaded_handler", null);
|
8293
|
+
this.ensureDefault("file_dialog_start_handler", null);
|
8294
|
+
this.ensureDefault("file_queued_handler", null);
|
8295
|
+
this.ensureDefault("file_queue_error_handler", null);
|
8296
|
+
this.ensureDefault("file_dialog_complete_handler", null);
|
8297
|
+
this.ensureDefault("upload_start_handler", null);
|
8298
|
+
this.ensureDefault("upload_progress_handler", null);
|
8299
|
+
this.ensureDefault("upload_error_handler", null);
|
8300
|
+
this.ensureDefault("upload_success_handler", null);
|
8301
|
+
this.ensureDefault("upload_complete_handler", null);
|
8302
|
+
this.ensureDefault("debug_handler", this.debugMessage);
|
8303
|
+
this.ensureDefault("custom_settings", {});
|
8304
|
+
this.customSettings = this.settings.custom_settings;
|
8305
|
+
if (!!this.settings.prevent_swf_caching) {
|
8306
|
+
this.settings.flash_url = this.settings.flash_url + (this.settings.flash_url.indexOf("?") < 0 ? "?" : "&") + "preventswfcaching=" + new Date().getTime();
|
8307
|
+
}
|
8308
|
+
if (!this.settings.preserve_relative_urls) {
|
8309
|
+
this.settings.upload_url = SWFUpload.completeURL(this.settings.upload_url);
|
8310
|
+
this.settings.button_image_url = SWFUpload.completeURL(this.settings.button_image_url);
|
8311
|
+
}
|
8312
|
+
delete this.ensureDefault;
|
8313
|
+
};
|
8314
|
+
SWFUpload.prototype.loadFlash = function () {
|
8315
|
+
var targetElement, tempParent;
|
8316
|
+
if (document.getElementById(this.movieName) !== null) {
|
8317
|
+
throw "ID " + this.movieName + " is already in use. The Flash Object could not be added";
|
8318
|
+
}
|
8319
|
+
targetElement = document.getElementById(this.settings.button_placeholder_id) || this.settings.button_placeholder;
|
8320
|
+
if (targetElement == undefined) {
|
8321
|
+
throw "Could not find the placeholder element: " + this.settings.button_placeholder_id;
|
8322
|
+
}
|
8323
|
+
tempParent = document.createElement("div");
|
8324
|
+
tempParent.innerHTML = this.getFlashHTML();
|
8325
|
+
targetElement.parentNode.replaceChild(tempParent.firstChild, targetElement);
|
8326
|
+
if (window[this.movieName] == undefined) {
|
8327
|
+
window[this.movieName] = this.getMovieElement();
|
8328
|
+
}
|
8329
|
+
};
|
8330
|
+
SWFUpload.prototype.getFlashHTML = function () {
|
8331
|
+
var classid = '';
|
8332
|
+
if (KindEditor.IE && KindEditor.V > 8) {
|
8333
|
+
classid = ' classid = "clsid:d27cdb6e-ae6d-11cf-96b8-444553540000"';
|
8334
|
+
}
|
8335
|
+
return ['<object id="', this.movieName, '"' + classid + ' type="application/x-shockwave-flash" data="', this.settings.flash_url, '" width="', this.settings.button_width, '" height="', this.settings.button_height, '" class="swfupload">',
|
8336
|
+
'<param name="wmode" value="', this.settings.button_window_mode, '" />',
|
8337
|
+
'<param name="movie" value="', this.settings.flash_url, '" />',
|
8338
|
+
'<param name="quality" value="high" />',
|
8339
|
+
'<param name="menu" value="false" />',
|
8340
|
+
'<param name="allowScriptAccess" value="always" />',
|
8341
|
+
'<param name="flashvars" value="' + this.getFlashVars() + '" />',
|
8342
|
+
'</object>'].join("");
|
8343
|
+
};
|
8344
|
+
SWFUpload.prototype.getFlashVars = function () {
|
8345
|
+
var paramString = this.buildParamString();
|
8346
|
+
var httpSuccessString = this.settings.http_success.join(",");
|
8347
|
+
return ["movieName=", encodeURIComponent(this.movieName),
|
8348
|
+
"&uploadURL=", encodeURIComponent(this.settings.upload_url),
|
8349
|
+
"&useQueryString=", encodeURIComponent(this.settings.use_query_string),
|
8350
|
+
"&requeueOnError=", encodeURIComponent(this.settings.requeue_on_error),
|
8351
|
+
"&httpSuccess=", encodeURIComponent(httpSuccessString),
|
8352
|
+
"&assumeSuccessTimeout=", encodeURIComponent(this.settings.assume_success_timeout),
|
8353
|
+
"&params=", encodeURIComponent(paramString),
|
8354
|
+
"&filePostName=", encodeURIComponent(this.settings.file_post_name),
|
8355
|
+
"&fileTypes=", encodeURIComponent(this.settings.file_types),
|
8356
|
+
"&fileTypesDescription=", encodeURIComponent(this.settings.file_types_description),
|
8357
|
+
"&fileSizeLimit=", encodeURIComponent(this.settings.file_size_limit),
|
8358
|
+
"&fileUploadLimit=", encodeURIComponent(this.settings.file_upload_limit),
|
8359
|
+
"&fileQueueLimit=", encodeURIComponent(this.settings.file_queue_limit),
|
8360
|
+
"&debugEnabled=", encodeURIComponent(this.settings.debug_enabled),
|
8361
|
+
"&buttonImageURL=", encodeURIComponent(this.settings.button_image_url),
|
8362
|
+
"&buttonWidth=", encodeURIComponent(this.settings.button_width),
|
8363
|
+
"&buttonHeight=", encodeURIComponent(this.settings.button_height),
|
8364
|
+
"&buttonText=", encodeURIComponent(this.settings.button_text),
|
8365
|
+
"&buttonTextTopPadding=", encodeURIComponent(this.settings.button_text_top_padding),
|
8366
|
+
"&buttonTextLeftPadding=", encodeURIComponent(this.settings.button_text_left_padding),
|
8367
|
+
"&buttonTextStyle=", encodeURIComponent(this.settings.button_text_style),
|
8368
|
+
"&buttonAction=", encodeURIComponent(this.settings.button_action),
|
8369
|
+
"&buttonDisabled=", encodeURIComponent(this.settings.button_disabled),
|
8370
|
+
"&buttonCursor=", encodeURIComponent(this.settings.button_cursor)
|
8371
|
+
].join("");
|
8372
|
+
};
|
8373
|
+
SWFUpload.prototype.getMovieElement = function () {
|
8374
|
+
if (this.movieElement == undefined) {
|
8375
|
+
this.movieElement = document.getElementById(this.movieName);
|
8376
|
+
}
|
8377
|
+
if (this.movieElement === null) {
|
8378
|
+
throw "Could not find Flash element";
|
8379
|
+
}
|
8380
|
+
return this.movieElement;
|
8381
|
+
};
|
8382
|
+
SWFUpload.prototype.buildParamString = function () {
|
8383
|
+
var postParams = this.settings.post_params;
|
8384
|
+
var paramStringPairs = [];
|
8385
|
+
if (typeof(postParams) === "object") {
|
8386
|
+
for (var name in postParams) {
|
8387
|
+
if (postParams.hasOwnProperty(name)) {
|
8388
|
+
paramStringPairs.push(encodeURIComponent(name.toString()) + "=" + encodeURIComponent(postParams[name].toString()));
|
8389
|
+
}
|
8390
|
+
}
|
8391
|
+
}
|
8392
|
+
return paramStringPairs.join("&");
|
8393
|
+
};
|
8394
|
+
SWFUpload.prototype.destroy = function () {
|
8395
|
+
try {
|
8396
|
+
this.cancelUpload(null, false);
|
8397
|
+
var movieElement = null;
|
8398
|
+
movieElement = this.getMovieElement();
|
8399
|
+
if (movieElement && typeof(movieElement.CallFunction) === "unknown") {
|
8400
|
+
for (var i in movieElement) {
|
8401
|
+
try {
|
8402
|
+
if (typeof(movieElement[i]) === "function") {
|
8403
|
+
movieElement[i] = null;
|
8404
|
+
}
|
8405
|
+
} catch (ex1) {}
|
8406
|
+
}
|
8407
|
+
try {
|
8408
|
+
movieElement.parentNode.removeChild(movieElement);
|
8409
|
+
} catch (ex) {}
|
8410
|
+
}
|
8411
|
+
window[this.movieName] = null;
|
8412
|
+
SWFUpload.instances[this.movieName] = null;
|
8413
|
+
delete SWFUpload.instances[this.movieName];
|
8414
|
+
this.movieElement = null;
|
8415
|
+
this.settings = null;
|
8416
|
+
this.customSettings = null;
|
8417
|
+
this.eventQueue = null;
|
8418
|
+
this.movieName = null;
|
8419
|
+
return true;
|
8420
|
+
} catch (ex2) {
|
8421
|
+
return false;
|
8422
|
+
}
|
8423
|
+
};
|
8424
|
+
SWFUpload.prototype.displayDebugInfo = function () {
|
8425
|
+
this.debug(
|
8426
|
+
[
|
8427
|
+
"---SWFUpload Instance Info---\n",
|
8428
|
+
"Version: ", SWFUpload.version, "\n",
|
8429
|
+
"Movie Name: ", this.movieName, "\n",
|
8430
|
+
"Settings:\n",
|
8431
|
+
"\t", "upload_url: ", this.settings.upload_url, "\n",
|
8432
|
+
"\t", "flash_url: ", this.settings.flash_url, "\n",
|
8433
|
+
"\t", "use_query_string: ", this.settings.use_query_string.toString(), "\n",
|
8434
|
+
"\t", "requeue_on_error: ", this.settings.requeue_on_error.toString(), "\n",
|
8435
|
+
"\t", "http_success: ", this.settings.http_success.join(", "), "\n",
|
8436
|
+
"\t", "assume_success_timeout: ", this.settings.assume_success_timeout, "\n",
|
8437
|
+
"\t", "file_post_name: ", this.settings.file_post_name, "\n",
|
8438
|
+
"\t", "post_params: ", this.settings.post_params.toString(), "\n",
|
8439
|
+
"\t", "file_types: ", this.settings.file_types, "\n",
|
8440
|
+
"\t", "file_types_description: ", this.settings.file_types_description, "\n",
|
8441
|
+
"\t", "file_size_limit: ", this.settings.file_size_limit, "\n",
|
8442
|
+
"\t", "file_upload_limit: ", this.settings.file_upload_limit, "\n",
|
8443
|
+
"\t", "file_queue_limit: ", this.settings.file_queue_limit, "\n",
|
8444
|
+
"\t", "debug: ", this.settings.debug.toString(), "\n",
|
8445
|
+
"\t", "prevent_swf_caching: ", this.settings.prevent_swf_caching.toString(), "\n",
|
8446
|
+
"\t", "button_placeholder_id: ", this.settings.button_placeholder_id.toString(), "\n",
|
8447
|
+
"\t", "button_placeholder: ", (this.settings.button_placeholder ? "Set" : "Not Set"), "\n",
|
8448
|
+
"\t", "button_image_url: ", this.settings.button_image_url.toString(), "\n",
|
8449
|
+
"\t", "button_width: ", this.settings.button_width.toString(), "\n",
|
8450
|
+
"\t", "button_height: ", this.settings.button_height.toString(), "\n",
|
8451
|
+
"\t", "button_text: ", this.settings.button_text.toString(), "\n",
|
8452
|
+
"\t", "button_text_style: ", this.settings.button_text_style.toString(), "\n",
|
8453
|
+
"\t", "button_text_top_padding: ", this.settings.button_text_top_padding.toString(), "\n",
|
8454
|
+
"\t", "button_text_left_padding: ", this.settings.button_text_left_padding.toString(), "\n",
|
8455
|
+
"\t", "button_action: ", this.settings.button_action.toString(), "\n",
|
8456
|
+
"\t", "button_disabled: ", this.settings.button_disabled.toString(), "\n",
|
8457
|
+
"\t", "custom_settings: ", this.settings.custom_settings.toString(), "\n",
|
8458
|
+
"Event Handlers:\n",
|
8459
|
+
"\t", "swfupload_loaded_handler assigned: ", (typeof this.settings.swfupload_loaded_handler === "function").toString(), "\n",
|
8460
|
+
"\t", "file_dialog_start_handler assigned: ", (typeof this.settings.file_dialog_start_handler === "function").toString(), "\n",
|
8461
|
+
"\t", "file_queued_handler assigned: ", (typeof this.settings.file_queued_handler === "function").toString(), "\n",
|
8462
|
+
"\t", "file_queue_error_handler assigned: ", (typeof this.settings.file_queue_error_handler === "function").toString(), "\n",
|
8463
|
+
"\t", "upload_start_handler assigned: ", (typeof this.settings.upload_start_handler === "function").toString(), "\n",
|
8464
|
+
"\t", "upload_progress_handler assigned: ", (typeof this.settings.upload_progress_handler === "function").toString(), "\n",
|
8465
|
+
"\t", "upload_error_handler assigned: ", (typeof this.settings.upload_error_handler === "function").toString(), "\n",
|
8466
|
+
"\t", "upload_success_handler assigned: ", (typeof this.settings.upload_success_handler === "function").toString(), "\n",
|
8467
|
+
"\t", "upload_complete_handler assigned: ", (typeof this.settings.upload_complete_handler === "function").toString(), "\n",
|
8468
|
+
"\t", "debug_handler assigned: ", (typeof this.settings.debug_handler === "function").toString(), "\n"
|
8469
|
+
].join("")
|
8470
|
+
);
|
8471
|
+
};
|
8472
|
+
/* Note: addSetting and getSetting are no longer used by SWFUpload but are included
|
8473
|
+
the maintain v2 API compatibility
|
8474
|
+
*/
|
8475
|
+
SWFUpload.prototype.addSetting = function (name, value, default_value) {
|
8476
|
+
if (value == undefined) {
|
8477
|
+
return (this.settings[name] = default_value);
|
8478
|
+
} else {
|
8479
|
+
return (this.settings[name] = value);
|
8480
|
+
}
|
8481
|
+
};
|
8482
|
+
SWFUpload.prototype.getSetting = function (name) {
|
8483
|
+
if (this.settings[name] != undefined) {
|
8484
|
+
return this.settings[name];
|
8485
|
+
}
|
8486
|
+
return "";
|
8487
|
+
};
|
8488
|
+
SWFUpload.prototype.callFlash = function (functionName, argumentArray) {
|
8489
|
+
argumentArray = argumentArray || [];
|
8490
|
+
var movieElement = this.getMovieElement();
|
8491
|
+
var returnValue, returnString;
|
8492
|
+
try {
|
8493
|
+
returnString = movieElement.CallFunction('<invoke name="' + functionName + '" returntype="javascript">' + __flash__argumentsToXML(argumentArray, 0) + '</invoke>');
|
8494
|
+
returnValue = eval(returnString);
|
8495
|
+
} catch (ex) {
|
8496
|
+
throw "Call to " + functionName + " failed";
|
8497
|
+
}
|
8498
|
+
if (returnValue != undefined && typeof returnValue.post === "object") {
|
8499
|
+
returnValue = this.unescapeFilePostParams(returnValue);
|
8500
|
+
}
|
8501
|
+
return returnValue;
|
8502
|
+
};
|
8503
|
+
/* *****************************
|
8504
|
+
-- Flash control methods --
|
8505
|
+
Your UI should use these
|
8506
|
+
to operate SWFUpload
|
8507
|
+
***************************** */
|
8508
|
+
SWFUpload.prototype.selectFile = function () {
|
8509
|
+
this.callFlash("SelectFile");
|
8510
|
+
};
|
8511
|
+
SWFUpload.prototype.selectFiles = function () {
|
8512
|
+
this.callFlash("SelectFiles");
|
8513
|
+
};
|
8514
|
+
SWFUpload.prototype.startUpload = function (fileID) {
|
8515
|
+
this.callFlash("StartUpload", [fileID]);
|
8516
|
+
};
|
8517
|
+
SWFUpload.prototype.cancelUpload = function (fileID, triggerErrorEvent) {
|
8518
|
+
if (triggerErrorEvent !== false) {
|
8519
|
+
triggerErrorEvent = true;
|
8520
|
+
}
|
8521
|
+
this.callFlash("CancelUpload", [fileID, triggerErrorEvent]);
|
8522
|
+
};
|
8523
|
+
SWFUpload.prototype.stopUpload = function () {
|
8524
|
+
this.callFlash("StopUpload");
|
8525
|
+
};
|
8526
|
+
/* ************************
|
8527
|
+
* Settings methods
|
8528
|
+
* These methods change the SWFUpload settings.
|
8529
|
+
* SWFUpload settings should not be changed directly on the settings object
|
8530
|
+
* since many of the settings need to be passed to Flash in order to take
|
8531
|
+
* effect.
|
8532
|
+
* *********************** */
|
8533
|
+
SWFUpload.prototype.getStats = function () {
|
8534
|
+
return this.callFlash("GetStats");
|
8535
|
+
};
|
8536
|
+
SWFUpload.prototype.setStats = function (statsObject) {
|
8537
|
+
this.callFlash("SetStats", [statsObject]);
|
8538
|
+
};
|
8539
|
+
SWFUpload.prototype.getFile = function (fileID) {
|
8540
|
+
if (typeof(fileID) === "number") {
|
8541
|
+
return this.callFlash("GetFileByIndex", [fileID]);
|
8542
|
+
} else {
|
8543
|
+
return this.callFlash("GetFile", [fileID]);
|
8544
|
+
}
|
8545
|
+
};
|
8546
|
+
SWFUpload.prototype.addFileParam = function (fileID, name, value) {
|
8547
|
+
return this.callFlash("AddFileParam", [fileID, name, value]);
|
8548
|
+
};
|
8549
|
+
SWFUpload.prototype.removeFileParam = function (fileID, name) {
|
8550
|
+
this.callFlash("RemoveFileParam", [fileID, name]);
|
8551
|
+
};
|
8552
|
+
SWFUpload.prototype.setUploadURL = function (url) {
|
8553
|
+
this.settings.upload_url = url.toString();
|
8554
|
+
this.callFlash("SetUploadURL", [url]);
|
8555
|
+
};
|
8556
|
+
SWFUpload.prototype.setPostParams = function (paramsObject) {
|
8557
|
+
this.settings.post_params = paramsObject;
|
8558
|
+
this.callFlash("SetPostParams", [paramsObject]);
|
8559
|
+
};
|
8560
|
+
SWFUpload.prototype.addPostParam = function (name, value) {
|
8561
|
+
this.settings.post_params[name] = value;
|
8562
|
+
this.callFlash("SetPostParams", [this.settings.post_params]);
|
8563
|
+
};
|
8564
|
+
SWFUpload.prototype.removePostParam = function (name) {
|
8565
|
+
delete this.settings.post_params[name];
|
8566
|
+
this.callFlash("SetPostParams", [this.settings.post_params]);
|
8567
|
+
};
|
8568
|
+
SWFUpload.prototype.setFileTypes = function (types, description) {
|
8569
|
+
this.settings.file_types = types;
|
8570
|
+
this.settings.file_types_description = description;
|
8571
|
+
this.callFlash("SetFileTypes", [types, description]);
|
8572
|
+
};
|
8573
|
+
SWFUpload.prototype.setFileSizeLimit = function (fileSizeLimit) {
|
8574
|
+
this.settings.file_size_limit = fileSizeLimit;
|
8575
|
+
this.callFlash("SetFileSizeLimit", [fileSizeLimit]);
|
8576
|
+
};
|
8577
|
+
SWFUpload.prototype.setFileUploadLimit = function (fileUploadLimit) {
|
8578
|
+
this.settings.file_upload_limit = fileUploadLimit;
|
8579
|
+
this.callFlash("SetFileUploadLimit", [fileUploadLimit]);
|
8580
|
+
};
|
8581
|
+
SWFUpload.prototype.setFileQueueLimit = function (fileQueueLimit) {
|
8582
|
+
this.settings.file_queue_limit = fileQueueLimit;
|
8583
|
+
this.callFlash("SetFileQueueLimit", [fileQueueLimit]);
|
8584
|
+
};
|
8585
|
+
SWFUpload.prototype.setFilePostName = function (filePostName) {
|
8586
|
+
this.settings.file_post_name = filePostName;
|
8587
|
+
this.callFlash("SetFilePostName", [filePostName]);
|
8588
|
+
};
|
8589
|
+
SWFUpload.prototype.setUseQueryString = function (useQueryString) {
|
8590
|
+
this.settings.use_query_string = useQueryString;
|
8591
|
+
this.callFlash("SetUseQueryString", [useQueryString]);
|
8592
|
+
};
|
8593
|
+
SWFUpload.prototype.setRequeueOnError = function (requeueOnError) {
|
8594
|
+
this.settings.requeue_on_error = requeueOnError;
|
8595
|
+
this.callFlash("SetRequeueOnError", [requeueOnError]);
|
8596
|
+
};
|
8597
|
+
SWFUpload.prototype.setHTTPSuccess = function (http_status_codes) {
|
8598
|
+
if (typeof http_status_codes === "string") {
|
8599
|
+
http_status_codes = http_status_codes.replace(" ", "").split(",");
|
8600
|
+
}
|
8601
|
+
this.settings.http_success = http_status_codes;
|
8602
|
+
this.callFlash("SetHTTPSuccess", [http_status_codes]);
|
8603
|
+
};
|
8604
|
+
SWFUpload.prototype.setAssumeSuccessTimeout = function (timeout_seconds) {
|
8605
|
+
this.settings.assume_success_timeout = timeout_seconds;
|
8606
|
+
this.callFlash("SetAssumeSuccessTimeout", [timeout_seconds]);
|
8607
|
+
};
|
8608
|
+
SWFUpload.prototype.setDebugEnabled = function (debugEnabled) {
|
8609
|
+
this.settings.debug_enabled = debugEnabled;
|
8610
|
+
this.callFlash("SetDebugEnabled", [debugEnabled]);
|
8611
|
+
};
|
8612
|
+
SWFUpload.prototype.setButtonImageURL = function (buttonImageURL) {
|
8613
|
+
if (buttonImageURL == undefined) {
|
8614
|
+
buttonImageURL = "";
|
8615
|
+
}
|
8616
|
+
this.settings.button_image_url = buttonImageURL;
|
8617
|
+
this.callFlash("SetButtonImageURL", [buttonImageURL]);
|
8618
|
+
};
|
8619
|
+
SWFUpload.prototype.setButtonDimensions = function (width, height) {
|
8620
|
+
this.settings.button_width = width;
|
8621
|
+
this.settings.button_height = height;
|
8622
|
+
var movie = this.getMovieElement();
|
8623
|
+
if (movie != undefined) {
|
8624
|
+
movie.style.width = width + "px";
|
8625
|
+
movie.style.height = height + "px";
|
8626
|
+
}
|
8627
|
+
this.callFlash("SetButtonDimensions", [width, height]);
|
8628
|
+
};
|
8629
|
+
SWFUpload.prototype.setButtonText = function (html) {
|
8630
|
+
this.settings.button_text = html;
|
8631
|
+
this.callFlash("SetButtonText", [html]);
|
8632
|
+
};
|
8633
|
+
SWFUpload.prototype.setButtonTextPadding = function (left, top) {
|
8634
|
+
this.settings.button_text_top_padding = top;
|
8635
|
+
this.settings.button_text_left_padding = left;
|
8636
|
+
this.callFlash("SetButtonTextPadding", [left, top]);
|
8637
|
+
};
|
8638
|
+
SWFUpload.prototype.setButtonTextStyle = function (css) {
|
8639
|
+
this.settings.button_text_style = css;
|
8640
|
+
this.callFlash("SetButtonTextStyle", [css]);
|
8641
|
+
};
|
8642
|
+
SWFUpload.prototype.setButtonDisabled = function (isDisabled) {
|
8643
|
+
this.settings.button_disabled = isDisabled;
|
8644
|
+
this.callFlash("SetButtonDisabled", [isDisabled]);
|
8645
|
+
};
|
8646
|
+
SWFUpload.prototype.setButtonAction = function (buttonAction) {
|
8647
|
+
this.settings.button_action = buttonAction;
|
8648
|
+
this.callFlash("SetButtonAction", [buttonAction]);
|
8649
|
+
};
|
8650
|
+
SWFUpload.prototype.setButtonCursor = function (cursor) {
|
8651
|
+
this.settings.button_cursor = cursor;
|
8652
|
+
this.callFlash("SetButtonCursor", [cursor]);
|
8653
|
+
};
|
8654
|
+
/* *******************************
|
8655
|
+
Flash Event Interfaces
|
8656
|
+
These functions are used by Flash to trigger the various
|
8657
|
+
events.
|
8658
|
+
All these functions a Private.
|
8659
|
+
Because the ExternalInterface library is buggy the event calls
|
8660
|
+
are added to a queue and the queue then executed by a setTimeout.
|
8661
|
+
This ensures that events are executed in a determinate order and that
|
8662
|
+
the ExternalInterface bugs are avoided.
|
8663
|
+
******************************* */
|
8664
|
+
SWFUpload.prototype.queueEvent = function (handlerName, argumentArray) {
|
8665
|
+
if (argumentArray == undefined) {
|
8666
|
+
argumentArray = [];
|
8667
|
+
} else if (!(argumentArray instanceof Array)) {
|
8668
|
+
argumentArray = [argumentArray];
|
8669
|
+
}
|
8670
|
+
var self = this;
|
8671
|
+
if (typeof this.settings[handlerName] === "function") {
|
8672
|
+
this.eventQueue.push(function () {
|
8673
|
+
this.settings[handlerName].apply(this, argumentArray);
|
8674
|
+
});
|
8675
|
+
setTimeout(function () {
|
8676
|
+
self.executeNextEvent();
|
8677
|
+
}, 0);
|
8678
|
+
} else if (this.settings[handlerName] !== null) {
|
8679
|
+
throw "Event handler " + handlerName + " is unknown or is not a function";
|
8680
|
+
}
|
8681
|
+
};
|
8682
|
+
SWFUpload.prototype.executeNextEvent = function () {
|
8683
|
+
var f = this.eventQueue ? this.eventQueue.shift() : null;
|
8684
|
+
if (typeof(f) === "function") {
|
8685
|
+
f.apply(this);
|
8686
|
+
}
|
8687
|
+
};
|
8688
|
+
SWFUpload.prototype.unescapeFilePostParams = function (file) {
|
8689
|
+
var reg = /[$]([0-9a-f]{4})/i;
|
8690
|
+
var unescapedPost = {};
|
8691
|
+
var uk;
|
8692
|
+
if (file != undefined) {
|
8693
|
+
for (var k in file.post) {
|
8694
|
+
if (file.post.hasOwnProperty(k)) {
|
8695
|
+
uk = k;
|
8696
|
+
var match;
|
8697
|
+
while ((match = reg.exec(uk)) !== null) {
|
8698
|
+
uk = uk.replace(match[0], String.fromCharCode(parseInt("0x" + match[1], 16)));
|
8699
|
+
}
|
8700
|
+
unescapedPost[uk] = file.post[k];
|
8701
|
+
}
|
8702
|
+
}
|
8703
|
+
file.post = unescapedPost;
|
8704
|
+
}
|
8705
|
+
return file;
|
8706
|
+
};
|
8707
|
+
SWFUpload.prototype.testExternalInterface = function () {
|
8708
|
+
try {
|
8709
|
+
return this.callFlash("TestExternalInterface");
|
8710
|
+
} catch (ex) {
|
8711
|
+
return false;
|
8712
|
+
}
|
8713
|
+
};
|
8714
|
+
SWFUpload.prototype.flashReady = function () {
|
8715
|
+
var movieElement = this.getMovieElement();
|
8716
|
+
if (!movieElement) {
|
8717
|
+
this.debug("Flash called back ready but the flash movie can't be found.");
|
8718
|
+
return;
|
8719
|
+
}
|
8720
|
+
this.cleanUp(movieElement);
|
8721
|
+
this.queueEvent("swfupload_loaded_handler");
|
8722
|
+
};
|
8723
|
+
SWFUpload.prototype.cleanUp = function (movieElement) {
|
8724
|
+
try {
|
8725
|
+
if (this.movieElement && typeof(movieElement.CallFunction) === "unknown") {
|
8726
|
+
this.debug("Removing Flash functions hooks (this should only run in IE and should prevent memory leaks)");
|
8727
|
+
for (var key in movieElement) {
|
8728
|
+
try {
|
8729
|
+
if (typeof(movieElement[key]) === "function") {
|
8730
|
+
movieElement[key] = null;
|
8731
|
+
}
|
8732
|
+
} catch (ex) {
|
8733
|
+
}
|
8734
|
+
}
|
8735
|
+
}
|
8736
|
+
} catch (ex1) {
|
8737
|
+
}
|
8738
|
+
window["__flash__removeCallback"] = function (instance, name) {
|
8739
|
+
try {
|
8740
|
+
if (instance) {
|
8741
|
+
instance[name] = null;
|
8742
|
+
}
|
8743
|
+
} catch (flashEx) {
|
8744
|
+
}
|
8745
|
+
};
|
8746
|
+
};
|
8747
|
+
/* This is a chance to do something before the browse window opens */
|
8748
|
+
SWFUpload.prototype.fileDialogStart = function () {
|
8749
|
+
this.queueEvent("file_dialog_start_handler");
|
8750
|
+
};
|
8751
|
+
/* Called when a file is successfully added to the queue. */
|
8752
|
+
SWFUpload.prototype.fileQueued = function (file) {
|
8753
|
+
file = this.unescapeFilePostParams(file);
|
8754
|
+
this.queueEvent("file_queued_handler", file);
|
8755
|
+
};
|
8756
|
+
/* Handle errors that occur when an attempt to queue a file fails. */
|
8757
|
+
SWFUpload.prototype.fileQueueError = function (file, errorCode, message) {
|
8758
|
+
file = this.unescapeFilePostParams(file);
|
8759
|
+
this.queueEvent("file_queue_error_handler", [file, errorCode, message]);
|
8760
|
+
};
|
8761
|
+
/* Called after the file dialog has closed and the selected files have been queued.
|
8762
|
+
You could call startUpload here if you want the queued files to begin uploading immediately. */
|
8763
|
+
SWFUpload.prototype.fileDialogComplete = function (numFilesSelected, numFilesQueued, numFilesInQueue) {
|
8764
|
+
this.queueEvent("file_dialog_complete_handler", [numFilesSelected, numFilesQueued, numFilesInQueue]);
|
8765
|
+
};
|
8766
|
+
SWFUpload.prototype.uploadStart = function (file) {
|
8767
|
+
file = this.unescapeFilePostParams(file);
|
8768
|
+
this.queueEvent("return_upload_start_handler", file);
|
8769
|
+
};
|
8770
|
+
SWFUpload.prototype.returnUploadStart = function (file) {
|
8771
|
+
var returnValue;
|
8772
|
+
if (typeof this.settings.upload_start_handler === "function") {
|
8773
|
+
file = this.unescapeFilePostParams(file);
|
8774
|
+
returnValue = this.settings.upload_start_handler.call(this, file);
|
8775
|
+
} else if (this.settings.upload_start_handler != undefined) {
|
8776
|
+
throw "upload_start_handler must be a function";
|
8777
|
+
}
|
8778
|
+
if (returnValue === undefined) {
|
8779
|
+
returnValue = true;
|
8780
|
+
}
|
8781
|
+
returnValue = !!returnValue;
|
8782
|
+
this.callFlash("ReturnUploadStart", [returnValue]);
|
8783
|
+
};
|
8784
|
+
SWFUpload.prototype.uploadProgress = function (file, bytesComplete, bytesTotal) {
|
8785
|
+
file = this.unescapeFilePostParams(file);
|
8786
|
+
this.queueEvent("upload_progress_handler", [file, bytesComplete, bytesTotal]);
|
8787
|
+
};
|
8788
|
+
SWFUpload.prototype.uploadError = function (file, errorCode, message) {
|
8789
|
+
file = this.unescapeFilePostParams(file);
|
8790
|
+
this.queueEvent("upload_error_handler", [file, errorCode, message]);
|
8791
|
+
};
|
8792
|
+
SWFUpload.prototype.uploadSuccess = function (file, serverData, responseReceived) {
|
8793
|
+
file = this.unescapeFilePostParams(file);
|
8794
|
+
this.queueEvent("upload_success_handler", [file, serverData, responseReceived]);
|
8795
|
+
};
|
8796
|
+
SWFUpload.prototype.uploadComplete = function (file) {
|
8797
|
+
file = this.unescapeFilePostParams(file);
|
8798
|
+
this.queueEvent("upload_complete_handler", file);
|
8799
|
+
};
|
8800
|
+
/* Called by SWFUpload JavaScript and Flash functions when debug is enabled. By default it writes messages to the
|
8801
|
+
internal debug console. You can override this event and have messages written where you want. */
|
8802
|
+
SWFUpload.prototype.debug = function (message) {
|
8803
|
+
this.queueEvent("debug_handler", message);
|
8804
|
+
};
|
8805
|
+
/* **********************************
|
8806
|
+
Debug Console
|
8807
|
+
The debug console is a self contained, in page location
|
8808
|
+
for debug message to be sent. The Debug Console adds
|
8809
|
+
itself to the body if necessary.
|
8810
|
+
The console is automatically scrolled as messages appear.
|
8811
|
+
If you are using your own debug handler or when you deploy to production and
|
8812
|
+
have debug disabled you can remove these functions to reduce the file size
|
8813
|
+
and complexity.
|
8814
|
+
********************************** */
|
8815
|
+
SWFUpload.prototype.debugMessage = function (message) {
|
8816
|
+
if (this.settings.debug) {
|
8817
|
+
var exceptionMessage, exceptionValues = [];
|
8818
|
+
if (typeof message === "object" && typeof message.name === "string" && typeof message.message === "string") {
|
8819
|
+
for (var key in message) {
|
8820
|
+
if (message.hasOwnProperty(key)) {
|
8821
|
+
exceptionValues.push(key + ": " + message[key]);
|
8822
|
+
}
|
8823
|
+
}
|
8824
|
+
exceptionMessage = exceptionValues.join("\n") || "";
|
8825
|
+
exceptionValues = exceptionMessage.split("\n");
|
8826
|
+
exceptionMessage = "EXCEPTION: " + exceptionValues.join("\nEXCEPTION: ");
|
8827
|
+
SWFUpload.Console.writeLine(exceptionMessage);
|
8828
|
+
} else {
|
8829
|
+
SWFUpload.Console.writeLine(message);
|
8830
|
+
}
|
8831
|
+
}
|
8832
|
+
};
|
8833
|
+
SWFUpload.Console = {};
|
8834
|
+
SWFUpload.Console.writeLine = function (message) {
|
8835
|
+
var console, documentForm;
|
8836
|
+
try {
|
8837
|
+
console = document.getElementById("SWFUpload_Console");
|
8838
|
+
if (!console) {
|
8839
|
+
documentForm = document.createElement("form");
|
8840
|
+
document.getElementsByTagName("body")[0].appendChild(documentForm);
|
8841
|
+
console = document.createElement("textarea");
|
8842
|
+
console.id = "SWFUpload_Console";
|
8843
|
+
console.style.fontFamily = "monospace";
|
8844
|
+
console.setAttribute("wrap", "off");
|
8845
|
+
console.wrap = "off";
|
8846
|
+
console.style.overflow = "auto";
|
8847
|
+
console.style.width = "700px";
|
8848
|
+
console.style.height = "350px";
|
8849
|
+
console.style.margin = "5px";
|
8850
|
+
documentForm.appendChild(console);
|
8851
|
+
}
|
8852
|
+
console.value += message + "\n";
|
8853
|
+
console.scrollTop = console.scrollHeight - console.clientHeight;
|
8854
|
+
} catch (ex) {
|
8855
|
+
alert("Exception: " + ex.name + " Message: " + ex.message);
|
8856
|
+
}
|
8857
|
+
};
|
8858
|
+
})();
|
8859
|
+
(function() {
|
8860
|
+
/*
|
8861
|
+
Queue Plug-in
|
8862
|
+
Features:
|
8863
|
+
*Adds a cancelQueue() method for cancelling the entire queue.
|
8864
|
+
*All queued files are uploaded when startUpload() is called.
|
8865
|
+
*If false is returned from uploadComplete then the queue upload is stopped.
|
8866
|
+
If false is not returned (strict comparison) then the queue upload is continued.
|
8867
|
+
*Adds a QueueComplete event that is fired when all the queued files have finished uploading.
|
8868
|
+
Set the event handler with the queue_complete_handler setting.
|
8869
|
+
*/
|
8870
|
+
if (typeof(SWFUpload) === "function") {
|
8871
|
+
SWFUpload.queue = {};
|
8872
|
+
SWFUpload.prototype.initSettings = (function (oldInitSettings) {
|
8873
|
+
return function () {
|
8874
|
+
if (typeof(oldInitSettings) === "function") {
|
8875
|
+
oldInitSettings.call(this);
|
8876
|
+
}
|
8877
|
+
this.queueSettings = {};
|
8878
|
+
this.queueSettings.queue_cancelled_flag = false;
|
8879
|
+
this.queueSettings.queue_upload_count = 0;
|
8880
|
+
this.queueSettings.user_upload_complete_handler = this.settings.upload_complete_handler;
|
8881
|
+
this.queueSettings.user_upload_start_handler = this.settings.upload_start_handler;
|
8882
|
+
this.settings.upload_complete_handler = SWFUpload.queue.uploadCompleteHandler;
|
8883
|
+
this.settings.upload_start_handler = SWFUpload.queue.uploadStartHandler;
|
8884
|
+
this.settings.queue_complete_handler = this.settings.queue_complete_handler || null;
|
8885
|
+
};
|
8886
|
+
})(SWFUpload.prototype.initSettings);
|
8887
|
+
SWFUpload.prototype.startUpload = function (fileID) {
|
8888
|
+
this.queueSettings.queue_cancelled_flag = false;
|
8889
|
+
this.callFlash("StartUpload", [fileID]);
|
8890
|
+
};
|
8891
|
+
SWFUpload.prototype.cancelQueue = function () {
|
8892
|
+
this.queueSettings.queue_cancelled_flag = true;
|
8893
|
+
this.stopUpload();
|
8894
|
+
var stats = this.getStats();
|
8895
|
+
while (stats.files_queued > 0) {
|
8896
|
+
this.cancelUpload();
|
8897
|
+
stats = this.getStats();
|
8898
|
+
}
|
8899
|
+
};
|
8900
|
+
SWFUpload.queue.uploadStartHandler = function (file) {
|
8901
|
+
var returnValue;
|
8902
|
+
if (typeof(this.queueSettings.user_upload_start_handler) === "function") {
|
8903
|
+
returnValue = this.queueSettings.user_upload_start_handler.call(this, file);
|
8904
|
+
}
|
8905
|
+
returnValue = (returnValue === false) ? false : true;
|
8906
|
+
this.queueSettings.queue_cancelled_flag = !returnValue;
|
8907
|
+
return returnValue;
|
8908
|
+
};
|
8909
|
+
SWFUpload.queue.uploadCompleteHandler = function (file) {
|
8910
|
+
var user_upload_complete_handler = this.queueSettings.user_upload_complete_handler;
|
8911
|
+
var continueUpload;
|
8912
|
+
if (file.filestatus === SWFUpload.FILE_STATUS.COMPLETE) {
|
8913
|
+
this.queueSettings.queue_upload_count++;
|
8914
|
+
}
|
8915
|
+
if (typeof(user_upload_complete_handler) === "function") {
|
8916
|
+
continueUpload = (user_upload_complete_handler.call(this, file) === false) ? false : true;
|
8917
|
+
} else if (file.filestatus === SWFUpload.FILE_STATUS.QUEUED) {
|
8918
|
+
continueUpload = false;
|
8919
|
+
} else {
|
8920
|
+
continueUpload = true;
|
8921
|
+
}
|
8922
|
+
if (continueUpload) {
|
8923
|
+
var stats = this.getStats();
|
8924
|
+
if (stats.files_queued > 0 && this.queueSettings.queue_cancelled_flag === false) {
|
8925
|
+
this.startUpload();
|
8926
|
+
} else if (this.queueSettings.queue_cancelled_flag === false) {
|
8927
|
+
this.queueEvent("queue_complete_handler", [this.queueSettings.queue_upload_count]);
|
8928
|
+
this.queueSettings.queue_upload_count = 0;
|
8929
|
+
} else {
|
8930
|
+
this.queueSettings.queue_cancelled_flag = false;
|
8931
|
+
this.queueSettings.queue_upload_count = 0;
|
8932
|
+
}
|
8933
|
+
}
|
8934
|
+
};
|
8935
|
+
}
|
8936
|
+
})();
|
8937
|
+
|
8938
|
+
/*******************************************************************************
|
8939
|
+
* KindEditor - WYSIWYG HTML Editor for Internet
|
8940
|
+
* Copyright (C) 2006-2011 kindsoft.net
|
8941
|
+
*
|
8942
|
+
* @author Roddy <luolonghao@gmail.com>
|
8943
|
+
* @site http://www.kindsoft.net/
|
8944
|
+
* @licence http://www.kindsoft.net/license.php
|
8945
|
+
*******************************************************************************/
|
8946
|
+
KindEditor.plugin('pagebreak', function(K) {
|
8947
|
+
var self = this;
|
8948
|
+
var name = 'pagebreak';
|
8949
|
+
var pagebreakHtml = K.undef(self.pagebreakHtml, '<hr style="page-break-after: always;" class="ke-pagebreak" />');
|
8950
|
+
self.clickToolbar(name, function() {
|
8951
|
+
var cmd = self.cmd, range = cmd.range;
|
8952
|
+
self.focus();
|
8953
|
+
var tail = self.newlineTag == 'br' || K.WEBKIT ? '' : '<span id="__kindeditor_tail_tag__"></span>';
|
8954
|
+
self.insertHtml(pagebreakHtml + tail);
|
8955
|
+
if (tail !== '') {
|
8956
|
+
var p = K('#__kindeditor_tail_tag__', self.edit.doc);
|
8957
|
+
range.selectNodeContents(p[0]);
|
8958
|
+
p.removeAttr('id');
|
8959
|
+
cmd.select();
|
8960
|
+
}
|
8961
|
+
});
|
8962
|
+
});
|
8963
|
+
|
8964
|
+
/*******************************************************************************
|
8965
|
+
* KindEditor - WYSIWYG HTML Editor for Internet
|
8966
|
+
* Copyright (C) 2006-2011 kindsoft.net
|
8967
|
+
*
|
8968
|
+
* @author Roddy <luolonghao@gmail.com>
|
8969
|
+
* @site http://www.kindsoft.net/
|
8970
|
+
* @licence http://www.kindsoft.net/license.php
|
8971
|
+
*******************************************************************************/
|
8972
|
+
KindEditor.plugin('plainpaste', function(K) {
|
8973
|
+
var self = this, name = 'plainpaste';
|
8974
|
+
self.clickToolbar(name, function() {
|
8975
|
+
var lang = self.lang(name + '.'),
|
8976
|
+
html = '<div style="padding:10px 20px;">' +
|
8977
|
+
'<div style="margin-bottom:10px;">' + lang.comment + '</div>' +
|
8978
|
+
'<textarea class="ke-textarea" style="width:408px;height:260px;"></textarea>' +
|
8979
|
+
'</div>',
|
8980
|
+
dialog = self.createDialog({
|
8981
|
+
name : name,
|
8982
|
+
width : 450,
|
8983
|
+
title : self.lang(name),
|
8984
|
+
body : html,
|
8985
|
+
yesBtn : {
|
8986
|
+
name : self.lang('yes'),
|
8987
|
+
click : function(e) {
|
8988
|
+
var html = textarea.val();
|
8989
|
+
html = K.escape(html);
|
8990
|
+
html = html.replace(/ {2}/g, ' ');
|
8991
|
+
if (self.newlineTag == 'p') {
|
8992
|
+
html = html.replace(/^/, '<p>').replace(/$/, '</p>').replace(/\n/g, '</p><p>');
|
8993
|
+
} else {
|
8994
|
+
html = html.replace(/\n/g, '<br />$&');
|
8995
|
+
}
|
8996
|
+
self.insertHtml(html).hideDialog().focus();
|
8997
|
+
}
|
8998
|
+
}
|
8999
|
+
}),
|
9000
|
+
textarea = K('textarea', dialog.div);
|
9001
|
+
textarea[0].focus();
|
9002
|
+
});
|
9003
|
+
});
|
9004
|
+
|
9005
|
+
/*******************************************************************************
|
9006
|
+
* KindEditor - WYSIWYG HTML Editor for Internet
|
9007
|
+
* Copyright (C) 2006-2011 kindsoft.net
|
9008
|
+
*
|
9009
|
+
* @author Roddy <luolonghao@gmail.com>
|
9010
|
+
* @site http://www.kindsoft.net/
|
9011
|
+
* @licence http://www.kindsoft.net/license.php
|
9012
|
+
*******************************************************************************/
|
9013
|
+
KindEditor.plugin('preview', function(K) {
|
9014
|
+
var self = this, name = 'preview', undefined;
|
9015
|
+
self.clickToolbar(name, function() {
|
9016
|
+
var lang = self.lang(name + '.'),
|
9017
|
+
html = '<div style="padding:10px 20px;">' +
|
9018
|
+
'<iframe class="ke-textarea" frameborder="0" style="width:708px;height:400px;"></iframe>' +
|
9019
|
+
'</div>',
|
9020
|
+
dialog = self.createDialog({
|
9021
|
+
name : name,
|
9022
|
+
width : 750,
|
9023
|
+
title : self.lang(name),
|
9024
|
+
body : html
|
9025
|
+
}),
|
9026
|
+
iframe = K('iframe', dialog.div),
|
9027
|
+
doc = K.iframeDoc(iframe);
|
9028
|
+
doc.open();
|
9029
|
+
doc.write(self.fullHtml());
|
9030
|
+
doc.close();
|
9031
|
+
K(doc.body).css('background-color', '#FFF');
|
9032
|
+
iframe[0].contentWindow.focus();
|
9033
|
+
});
|
9034
|
+
});
|
9035
|
+
|
9036
|
+
/*******************************************************************************
|
9037
|
+
* KindEditor - WYSIWYG HTML Editor for Internet
|
9038
|
+
* Copyright (C) 2006-2011 kindsoft.net
|
9039
|
+
*
|
9040
|
+
* @author Roddy <luolonghao@gmail.com>
|
9041
|
+
* @site http://www.kindsoft.net/
|
9042
|
+
* @licence http://www.kindsoft.net/license.php
|
9043
|
+
*******************************************************************************/
|
9044
|
+
KindEditor.plugin('quickformat', function(K) {
|
9045
|
+
var self = this, name = 'quickformat',
|
9046
|
+
blockMap = K.toMap('blockquote,center,div,h1,h2,h3,h4,h5,h6,p');
|
9047
|
+
function getFirstChild(knode) {
|
9048
|
+
var child = knode.first();
|
9049
|
+
while (child && child.first()) {
|
9050
|
+
child = child.first();
|
9051
|
+
}
|
9052
|
+
return child;
|
9053
|
+
}
|
9054
|
+
self.clickToolbar(name, function() {
|
9055
|
+
self.focus();
|
9056
|
+
var doc = self.edit.doc,
|
9057
|
+
range = self.cmd.range,
|
9058
|
+
child = K(doc.body).first(), next,
|
9059
|
+
nodeList = [], subList = [],
|
9060
|
+
bookmark = range.createBookmark(true);
|
9061
|
+
while(child) {
|
9062
|
+
next = child.next();
|
9063
|
+
var firstChild = getFirstChild(child);
|
9064
|
+
if (!firstChild || firstChild.name != 'img') {
|
9065
|
+
if (blockMap[child.name]) {
|
9066
|
+
child.html(child.html().replace(/^(\s| | )+/ig, ''));
|
9067
|
+
child.css('text-indent', '2em');
|
9068
|
+
} else {
|
9069
|
+
subList.push(child);
|
9070
|
+
}
|
9071
|
+
if (!next || (blockMap[next.name] || blockMap[child.name] && !blockMap[next.name])) {
|
9072
|
+
if (subList.length > 0) {
|
9073
|
+
nodeList.push(subList);
|
9074
|
+
}
|
9075
|
+
subList = [];
|
9076
|
+
}
|
9077
|
+
}
|
9078
|
+
child = next;
|
9079
|
+
}
|
9080
|
+
K.each(nodeList, function(i, subList) {
|
9081
|
+
var wrapper = K('<p style="text-indent:2em;"></p>', doc);
|
9082
|
+
subList[0].before(wrapper);
|
9083
|
+
K.each(subList, function(i, knode) {
|
9084
|
+
wrapper.append(knode);
|
9085
|
+
});
|
9086
|
+
});
|
9087
|
+
range.moveToBookmark(bookmark);
|
9088
|
+
self.addBookmark();
|
9089
|
+
});
|
9090
|
+
});
|
9091
|
+
|
9092
|
+
/*******************************************************************************
|
9093
|
+
* KindEditor - WYSIWYG HTML Editor for Internet
|
9094
|
+
* Copyright (C) 2006-2011 kindsoft.net
|
9095
|
+
*
|
9096
|
+
* @author Roddy <luolonghao@gmail.com>
|
9097
|
+
* @site http://www.kindsoft.net/
|
9098
|
+
* @licence http://www.kindsoft.net/license.php
|
9099
|
+
*******************************************************************************/
|
9100
|
+
KindEditor.plugin('table', function(K) {
|
9101
|
+
var self = this, name = 'table', lang = self.lang(name + '.'), zeroborder = 'ke-zeroborder';
|
9102
|
+
function _setColor(box, color) {
|
9103
|
+
color = color.toUpperCase();
|
9104
|
+
box.css('background-color', color);
|
9105
|
+
box.css('color', color === '#000000' ? '#FFFFFF' : '#000000');
|
9106
|
+
box.html(color);
|
9107
|
+
}
|
9108
|
+
var pickerList = [];
|
9109
|
+
function _initColorPicker(dialogDiv, colorBox) {
|
9110
|
+
colorBox.bind('click,mousedown', function(e){
|
9111
|
+
e.stopPropagation();
|
9112
|
+
});
|
9113
|
+
function removePicker() {
|
9114
|
+
K.each(pickerList, function() {
|
9115
|
+
this.remove();
|
9116
|
+
});
|
9117
|
+
pickerList = [];
|
9118
|
+
K(document).unbind('click,mousedown', removePicker);
|
9119
|
+
dialogDiv.unbind('click,mousedown', removePicker);
|
9120
|
+
}
|
9121
|
+
colorBox.click(function(e) {
|
9122
|
+
removePicker();
|
9123
|
+
var box = K(this),
|
9124
|
+
pos = box.pos();
|
9125
|
+
var picker = K.colorpicker({
|
9126
|
+
x : pos.x,
|
9127
|
+
y : pos.y + box.height(),
|
9128
|
+
z : 811214,
|
9129
|
+
selectedColor : K(this).html(),
|
9130
|
+
colors : self.colorTable,
|
9131
|
+
noColor : self.lang('noColor'),
|
9132
|
+
shadowMode : self.shadowMode,
|
9133
|
+
click : function(color) {
|
9134
|
+
_setColor(box, color);
|
9135
|
+
removePicker();
|
9136
|
+
}
|
9137
|
+
});
|
9138
|
+
pickerList.push(picker);
|
9139
|
+
K(document).bind('click,mousedown', removePicker);
|
9140
|
+
dialogDiv.bind('click,mousedown', removePicker);
|
9141
|
+
});
|
9142
|
+
}
|
9143
|
+
function _getCellIndex(table, row, cell) {
|
9144
|
+
var rowSpanCount = 0;
|
9145
|
+
for (var i = 0, len = row.cells.length; i < len; i++) {
|
9146
|
+
if (row.cells[i] == cell) {
|
9147
|
+
break;
|
9148
|
+
}
|
9149
|
+
rowSpanCount += row.cells[i].rowSpan - 1;
|
9150
|
+
}
|
9151
|
+
return cell.cellIndex - rowSpanCount;
|
9152
|
+
}
|
9153
|
+
self.plugin.table = {
|
9154
|
+
prop : function(isInsert) {
|
9155
|
+
var html = [
|
9156
|
+
'<div style="padding:20px;">',
|
9157
|
+
'<div class="ke-dialog-row">',
|
9158
|
+
'<label for="keRows" style="width:90px;">' + lang.cells + '</label>',
|
9159
|
+
lang.rows + ' <input type="text" id="keRows" class="ke-input-text ke-input-number" name="rows" value="" maxlength="4" /> ',
|
9160
|
+
lang.cols + ' <input type="text" class="ke-input-text ke-input-number" name="cols" value="" maxlength="4" />',
|
9161
|
+
'</div>',
|
9162
|
+
'<div class="ke-dialog-row">',
|
9163
|
+
'<label for="keWidth" style="width:90px;">' + lang.size + '</label>',
|
9164
|
+
lang.width + ' <input type="text" id="keWidth" class="ke-input-text ke-input-number" name="width" value="" maxlength="4" /> ',
|
9165
|
+
'<select name="widthType">',
|
9166
|
+
'<option value="%">' + lang.percent + '</option>',
|
9167
|
+
'<option value="px">' + lang.px + '</option>',
|
9168
|
+
'</select> ',
|
9169
|
+
lang.height + ' <input type="text" class="ke-input-text ke-input-number" name="height" value="" maxlength="4" /> ',
|
9170
|
+
'<select name="heightType">',
|
9171
|
+
'<option value="%">' + lang.percent + '</option>',
|
9172
|
+
'<option value="px">' + lang.px + '</option>',
|
9173
|
+
'</select>',
|
9174
|
+
'</div>',
|
9175
|
+
'<div class="ke-dialog-row">',
|
9176
|
+
'<label for="kePadding" style="width:90px;">' + lang.space + '</label>',
|
9177
|
+
lang.padding + ' <input type="text" id="kePadding" class="ke-input-text ke-input-number" name="padding" value="" maxlength="4" /> ',
|
9178
|
+
lang.spacing + ' <input type="text" class="ke-input-text ke-input-number" name="spacing" value="" maxlength="4" />',
|
9179
|
+
'</div>',
|
9180
|
+
'<div class="ke-dialog-row">',
|
9181
|
+
'<label for="keAlign" style="width:90px;">' + lang.align + '</label>',
|
9182
|
+
'<select id="keAlign" name="align">',
|
9183
|
+
'<option value="">' + lang.alignDefault + '</option>',
|
9184
|
+
'<option value="left">' + lang.alignLeft + '</option>',
|
9185
|
+
'<option value="center">' + lang.alignCenter + '</option>',
|
9186
|
+
'<option value="right">' + lang.alignRight + '</option>',
|
9187
|
+
'</select>',
|
9188
|
+
'</div>',
|
9189
|
+
'<div class="ke-dialog-row">',
|
9190
|
+
'<label for="keBorder" style="width:90px;">' + lang.border + '</label>',
|
9191
|
+
lang.borderWidth + ' <input type="text" id="keBorder" class="ke-input-text ke-input-number" name="border" value="" maxlength="4" /> ',
|
9192
|
+
lang.borderColor + ' <span class="ke-inline-block ke-input-color"></span>',
|
9193
|
+
'</div>',
|
9194
|
+
'<div class="ke-dialog-row">',
|
9195
|
+
'<label for="keBgColor" style="width:90px;">' + lang.backgroundColor + '</label>',
|
9196
|
+
'<span class="ke-inline-block ke-input-color"></span>',
|
9197
|
+
'</div>',
|
9198
|
+
'</div>'
|
9199
|
+
].join('');
|
9200
|
+
var bookmark = self.cmd.range.createBookmark();
|
9201
|
+
var dialog = self.createDialog({
|
9202
|
+
name : name,
|
9203
|
+
width : 500,
|
9204
|
+
title : self.lang(name),
|
9205
|
+
body : html,
|
9206
|
+
beforeRemove : function() {
|
9207
|
+
colorBox.unbind();
|
9208
|
+
},
|
9209
|
+
yesBtn : {
|
9210
|
+
name : self.lang('yes'),
|
9211
|
+
click : function(e) {
|
9212
|
+
var rows = rowsBox.val(),
|
9213
|
+
cols = colsBox.val(),
|
9214
|
+
width = widthBox.val(),
|
9215
|
+
height = heightBox.val(),
|
9216
|
+
widthType = widthTypeBox.val(),
|
9217
|
+
heightType = heightTypeBox.val(),
|
9218
|
+
padding = paddingBox.val(),
|
9219
|
+
spacing = spacingBox.val(),
|
9220
|
+
align = alignBox.val(),
|
9221
|
+
border = borderBox.val(),
|
9222
|
+
borderColor = K(colorBox[0]).html() || '',
|
9223
|
+
bgColor = K(colorBox[1]).html() || '';
|
9224
|
+
if (rows == 0 || !/^\d+$/.test(rows)) {
|
9225
|
+
alert(self.lang('invalidRows'));
|
9226
|
+
rowsBox[0].focus();
|
9227
|
+
return;
|
9228
|
+
}
|
9229
|
+
if (cols == 0 || !/^\d+$/.test(cols)) {
|
9230
|
+
alert(self.lang('invalidRows'));
|
9231
|
+
colsBox[0].focus();
|
9232
|
+
return;
|
9233
|
+
}
|
9234
|
+
if (!/^\d*$/.test(width)) {
|
9235
|
+
alert(self.lang('invalidWidth'));
|
9236
|
+
widthBox[0].focus();
|
9237
|
+
return;
|
9238
|
+
}
|
9239
|
+
if (!/^\d*$/.test(height)) {
|
9240
|
+
alert(self.lang('invalidHeight'));
|
9241
|
+
heightBox[0].focus();
|
9242
|
+
return;
|
9243
|
+
}
|
9244
|
+
if (!/^\d*$/.test(padding)) {
|
9245
|
+
alert(self.lang('invalidPadding'));
|
9246
|
+
paddingBox[0].focus();
|
9247
|
+
return;
|
9248
|
+
}
|
9249
|
+
if (!/^\d*$/.test(spacing)) {
|
9250
|
+
alert(self.lang('invalidSpacing'));
|
9251
|
+
spacingBox[0].focus();
|
9252
|
+
return;
|
9253
|
+
}
|
9254
|
+
if (!/^\d*$/.test(border)) {
|
9255
|
+
alert(self.lang('invalidBorder'));
|
9256
|
+
borderBox[0].focus();
|
9257
|
+
return;
|
9258
|
+
}
|
9259
|
+
if (table) {
|
9260
|
+
if (width !== '') {
|
9261
|
+
table.width(width + widthType);
|
9262
|
+
} else {
|
9263
|
+
table.css('width', '');
|
9264
|
+
}
|
9265
|
+
if (table[0].width !== undefined) {
|
9266
|
+
table.removeAttr('width');
|
9267
|
+
}
|
9268
|
+
if (height !== '') {
|
9269
|
+
table.height(height + heightType);
|
9270
|
+
} else {
|
9271
|
+
table.css('height', '');
|
9272
|
+
}
|
9273
|
+
if (table[0].height !== undefined) {
|
9274
|
+
table.removeAttr('height');
|
9275
|
+
}
|
9276
|
+
table.css('background-color', bgColor);
|
9277
|
+
if (table[0].bgColor !== undefined) {
|
9278
|
+
table.removeAttr('bgColor');
|
9279
|
+
}
|
9280
|
+
if (padding !== '') {
|
9281
|
+
table[0].cellPadding = padding;
|
9282
|
+
} else {
|
9283
|
+
table.removeAttr('cellPadding');
|
9284
|
+
}
|
9285
|
+
if (spacing !== '') {
|
9286
|
+
table[0].cellSpacing = spacing;
|
9287
|
+
} else {
|
9288
|
+
table.removeAttr('cellSpacing');
|
9289
|
+
}
|
9290
|
+
if (align !== '') {
|
9291
|
+
table[0].align = align;
|
9292
|
+
} else {
|
9293
|
+
table.removeAttr('align');
|
9294
|
+
}
|
9295
|
+
if (border !== '') {
|
9296
|
+
table.attr('border', border);
|
9297
|
+
} else {
|
9298
|
+
table.removeAttr('border');
|
9299
|
+
}
|
9300
|
+
if (border === '' || border === '0') {
|
9301
|
+
table.addClass(zeroborder);
|
9302
|
+
} else {
|
9303
|
+
table.removeClass(zeroborder);
|
9304
|
+
}
|
9305
|
+
if (borderColor !== '') {
|
9306
|
+
table.attr('borderColor', borderColor);
|
9307
|
+
} else {
|
9308
|
+
table.removeAttr('borderColor');
|
9309
|
+
}
|
9310
|
+
self.hideDialog().focus();
|
9311
|
+
self.cmd.range.moveToBookmark(bookmark);
|
9312
|
+
self.cmd.select();
|
9313
|
+
self.addBookmark();
|
9314
|
+
return;
|
9315
|
+
}
|
9316
|
+
var style = '';
|
9317
|
+
if (width !== '') {
|
9318
|
+
style += 'width:' + width + widthType + ';';
|
9319
|
+
}
|
9320
|
+
if (height !== '') {
|
9321
|
+
style += 'height:' + height + heightType + ';';
|
9322
|
+
}
|
9323
|
+
if (bgColor !== '') {
|
9324
|
+
style += 'background-color:' + bgColor + ';';
|
9325
|
+
}
|
9326
|
+
var html = '<table';
|
9327
|
+
if (style !== '') {
|
9328
|
+
html += ' style="' + style + '"';
|
9329
|
+
}
|
9330
|
+
if (padding !== '') {
|
9331
|
+
html += ' cellpadding="' + padding + '"';
|
9332
|
+
}
|
9333
|
+
if (spacing !== '') {
|
9334
|
+
html += ' cellspacing="' + spacing + '"';
|
9335
|
+
}
|
9336
|
+
if (align !== '') {
|
9337
|
+
html += ' align="' + align + '"';
|
9338
|
+
}
|
9339
|
+
if (border !== '') {
|
9340
|
+
html += ' border="' + border + '"';
|
9341
|
+
}
|
9342
|
+
if (border === '' || border === '0') {
|
9343
|
+
html += ' class="' + zeroborder + '"';
|
9344
|
+
}
|
9345
|
+
if (borderColor !== '') {
|
9346
|
+
html += ' bordercolor="' + borderColor + '"';
|
9347
|
+
}
|
9348
|
+
html += '>';
|
9349
|
+
for (var i = 0; i < rows; i++) {
|
9350
|
+
html += '<tr>';
|
9351
|
+
for (var j = 0; j < cols; j++) {
|
9352
|
+
html += '<td>' + (K.IE ? ' ' : '<br />') + '</td>';
|
9353
|
+
}
|
9354
|
+
html += '</tr>';
|
9355
|
+
}
|
9356
|
+
html += '</table>';
|
9357
|
+
if (!K.IE) {
|
9358
|
+
html += '<br />';
|
9359
|
+
}
|
9360
|
+
self.insertHtml(html);
|
9361
|
+
self.select().hideDialog().focus();
|
9362
|
+
self.addBookmark();
|
9363
|
+
}
|
9364
|
+
}
|
9365
|
+
}),
|
9366
|
+
div = dialog.div,
|
9367
|
+
rowsBox = K('[name="rows"]', div).val(3),
|
9368
|
+
colsBox = K('[name="cols"]', div).val(2),
|
9369
|
+
widthBox = K('[name="width"]', div).val(100),
|
9370
|
+
heightBox = K('[name="height"]', div),
|
9371
|
+
widthTypeBox = K('[name="widthType"]', div),
|
9372
|
+
heightTypeBox = K('[name="heightType"]', div),
|
9373
|
+
paddingBox = K('[name="padding"]', div).val(2),
|
9374
|
+
spacingBox = K('[name="spacing"]', div).val(0),
|
9375
|
+
alignBox = K('[name="align"]', div),
|
9376
|
+
borderBox = K('[name="border"]', div).val(1),
|
9377
|
+
colorBox = K('.ke-input-color', div);
|
9378
|
+
_initColorPicker(div, colorBox.eq(0));
|
9379
|
+
_initColorPicker(div, colorBox.eq(1));
|
9380
|
+
_setColor(colorBox.eq(0), '#000000');
|
9381
|
+
_setColor(colorBox.eq(1), '');
|
9382
|
+
rowsBox[0].focus();
|
9383
|
+
rowsBox[0].select();
|
9384
|
+
var table;
|
9385
|
+
if (isInsert) {
|
9386
|
+
return;
|
9387
|
+
}
|
9388
|
+
table = self.plugin.getSelectedTable();
|
9389
|
+
if (table) {
|
9390
|
+
rowsBox.val(table[0].rows.length);
|
9391
|
+
colsBox.val(table[0].rows.length > 0 ? table[0].rows[0].cells.length : 0);
|
9392
|
+
rowsBox.attr('disabled', true);
|
9393
|
+
colsBox.attr('disabled', true);
|
9394
|
+
var match,
|
9395
|
+
tableWidth = table[0].style.width || table[0].width,
|
9396
|
+
tableHeight = table[0].style.height || table[0].height;
|
9397
|
+
if (tableWidth !== undefined && (match = /^(\d+)((?:px|%)*)$/.exec(tableWidth))) {
|
9398
|
+
widthBox.val(match[1]);
|
9399
|
+
widthTypeBox.val(match[2]);
|
9400
|
+
} else {
|
9401
|
+
widthBox.val('');
|
9402
|
+
}
|
9403
|
+
if (tableHeight !== undefined && (match = /^(\d+)((?:px|%)*)$/.exec(tableHeight))) {
|
9404
|
+
heightBox.val(match[1]);
|
9405
|
+
heightTypeBox.val(match[2]);
|
9406
|
+
}
|
9407
|
+
paddingBox.val(table[0].cellPadding || '');
|
9408
|
+
spacingBox.val(table[0].cellSpacing || '');
|
9409
|
+
alignBox.val(table[0].align || '');
|
9410
|
+
borderBox.val(table[0].border === undefined ? '' : table[0].border);
|
9411
|
+
_setColor(colorBox.eq(0), K.toHex(table.attr('borderColor') || ''));
|
9412
|
+
_setColor(colorBox.eq(1), K.toHex(table[0].style.backgroundColor || table[0].bgColor || ''));
|
9413
|
+
widthBox[0].focus();
|
9414
|
+
widthBox[0].select();
|
9415
|
+
}
|
9416
|
+
},
|
9417
|
+
cellprop : function() {
|
9418
|
+
var html = [
|
9419
|
+
'<div style="padding:20px;">',
|
9420
|
+
'<div class="ke-dialog-row">',
|
9421
|
+
'<label for="keWidth" style="width:90px;">' + lang.size + '</label>',
|
9422
|
+
lang.width + ' <input type="text" id="keWidth" class="ke-input-text ke-input-number" name="width" value="" maxlength="4" /> ',
|
9423
|
+
'<select name="widthType">',
|
9424
|
+
'<option value="%">' + lang.percent + '</option>',
|
9425
|
+
'<option value="px">' + lang.px + '</option>',
|
9426
|
+
'</select> ',
|
9427
|
+
lang.height + ' <input type="text" class="ke-input-text ke-input-number" name="height" value="" maxlength="4" /> ',
|
9428
|
+
'<select name="heightType">',
|
9429
|
+
'<option value="%">' + lang.percent + '</option>',
|
9430
|
+
'<option value="px">' + lang.px + '</option>',
|
9431
|
+
'</select>',
|
9432
|
+
'</div>',
|
9433
|
+
'<div class="ke-dialog-row">',
|
9434
|
+
'<label for="keAlign" style="width:90px;">' + lang.align + '</label>',
|
9435
|
+
lang.textAlign + ' <select id="keAlign" name="textAlign">',
|
9436
|
+
'<option value="">' + lang.alignDefault + '</option>',
|
9437
|
+
'<option value="left">' + lang.alignLeft + '</option>',
|
9438
|
+
'<option value="center">' + lang.alignCenter + '</option>',
|
9439
|
+
'<option value="right">' + lang.alignRight + '</option>',
|
9440
|
+
'</select> ',
|
9441
|
+
lang.verticalAlign + ' <select name="verticalAlign">',
|
9442
|
+
'<option value="">' + lang.alignDefault + '</option>',
|
9443
|
+
'<option value="top">' + lang.alignTop + '</option>',
|
9444
|
+
'<option value="middle">' + lang.alignMiddle + '</option>',
|
9445
|
+
'<option value="bottom">' + lang.alignBottom + '</option>',
|
9446
|
+
'<option value="baseline">' + lang.alignBaseline + '</option>',
|
9447
|
+
'</select>',
|
9448
|
+
'</div>',
|
9449
|
+
'<div class="ke-dialog-row">',
|
9450
|
+
'<label for="keBorder" style="width:90px;">' + lang.border + '</label>',
|
9451
|
+
lang.borderWidth + ' <input type="text" id="keBorder" class="ke-input-text ke-input-number" name="border" value="" maxlength="4" /> ',
|
9452
|
+
lang.borderColor + ' <span class="ke-inline-block ke-input-color"></span>',
|
9453
|
+
'</div>',
|
9454
|
+
'<div class="ke-dialog-row">',
|
9455
|
+
'<label for="keBgColor" style="width:90px;">' + lang.backgroundColor + '</label>',
|
9456
|
+
'<span class="ke-inline-block ke-input-color"></span>',
|
9457
|
+
'</div>',
|
9458
|
+
'</div>'
|
9459
|
+
].join('');
|
9460
|
+
var bookmark = self.cmd.range.createBookmark();
|
9461
|
+
var dialog = self.createDialog({
|
9462
|
+
name : name,
|
9463
|
+
width : 500,
|
9464
|
+
title : self.lang('tablecell'),
|
9465
|
+
body : html,
|
9466
|
+
beforeRemove : function() {
|
9467
|
+
colorBox.unbind();
|
9468
|
+
},
|
9469
|
+
yesBtn : {
|
9470
|
+
name : self.lang('yes'),
|
9471
|
+
click : function(e) {
|
9472
|
+
var width = widthBox.val(),
|
9473
|
+
height = heightBox.val(),
|
9474
|
+
widthType = widthTypeBox.val(),
|
9475
|
+
heightType = heightTypeBox.val(),
|
9476
|
+
padding = paddingBox.val(),
|
9477
|
+
spacing = spacingBox.val(),
|
9478
|
+
textAlign = textAlignBox.val(),
|
9479
|
+
verticalAlign = verticalAlignBox.val(),
|
9480
|
+
border = borderBox.val(),
|
9481
|
+
borderColor = K(colorBox[0]).html() || '',
|
9482
|
+
bgColor = K(colorBox[1]).html() || '';
|
9483
|
+
if (!/^\d*$/.test(width)) {
|
9484
|
+
alert(self.lang('invalidWidth'));
|
9485
|
+
widthBox[0].focus();
|
9486
|
+
return;
|
9487
|
+
}
|
9488
|
+
if (!/^\d*$/.test(height)) {
|
9489
|
+
alert(self.lang('invalidHeight'));
|
9490
|
+
heightBox[0].focus();
|
9491
|
+
return;
|
9492
|
+
}
|
9493
|
+
if (!/^\d*$/.test(border)) {
|
9494
|
+
alert(self.lang('invalidBorder'));
|
9495
|
+
borderBox[0].focus();
|
9496
|
+
return;
|
9497
|
+
}
|
9498
|
+
cell.css({
|
9499
|
+
width : width !== '' ? (width + widthType) : '',
|
9500
|
+
height : height !== '' ? (height + heightType) : '',
|
9501
|
+
'background-color' : bgColor,
|
9502
|
+
'text-align' : textAlign,
|
9503
|
+
'vertical-align' : verticalAlign,
|
9504
|
+
'border-width' : border,
|
9505
|
+
'border-style' : border !== '' ? 'solid' : '',
|
9506
|
+
'border-color' : borderColor
|
9507
|
+
});
|
9508
|
+
self.hideDialog().focus();
|
9509
|
+
self.cmd.range.moveToBookmark(bookmark);
|
9510
|
+
self.cmd.select();
|
9511
|
+
self.addBookmark();
|
9512
|
+
}
|
9513
|
+
}
|
9514
|
+
}),
|
9515
|
+
div = dialog.div,
|
9516
|
+
widthBox = K('[name="width"]', div).val(100),
|
9517
|
+
heightBox = K('[name="height"]', div),
|
9518
|
+
widthTypeBox = K('[name="widthType"]', div),
|
9519
|
+
heightTypeBox = K('[name="heightType"]', div),
|
9520
|
+
paddingBox = K('[name="padding"]', div).val(2),
|
9521
|
+
spacingBox = K('[name="spacing"]', div).val(0),
|
9522
|
+
textAlignBox = K('[name="textAlign"]', div),
|
9523
|
+
verticalAlignBox = K('[name="verticalAlign"]', div),
|
9524
|
+
borderBox = K('[name="border"]', div).val(1),
|
9525
|
+
colorBox = K('.ke-input-color', div);
|
9526
|
+
_initColorPicker(div, colorBox.eq(0));
|
9527
|
+
_initColorPicker(div, colorBox.eq(1));
|
9528
|
+
_setColor(colorBox.eq(0), '#000000');
|
9529
|
+
_setColor(colorBox.eq(1), '');
|
9530
|
+
widthBox[0].focus();
|
9531
|
+
widthBox[0].select();
|
9532
|
+
var cell = self.plugin.getSelectedCell();
|
9533
|
+
var match,
|
9534
|
+
cellWidth = cell[0].style.width || cell[0].width || '',
|
9535
|
+
cellHeight = cell[0].style.height || cell[0].height || '';
|
9536
|
+
if ((match = /^(\d+)((?:px|%)*)$/.exec(cellWidth))) {
|
9537
|
+
widthBox.val(match[1]);
|
9538
|
+
widthTypeBox.val(match[2]);
|
9539
|
+
} else {
|
9540
|
+
widthBox.val('');
|
9541
|
+
}
|
9542
|
+
if ((match = /^(\d+)((?:px|%)*)$/.exec(cellHeight))) {
|
9543
|
+
heightBox.val(match[1]);
|
9544
|
+
heightTypeBox.val(match[2]);
|
9545
|
+
}
|
9546
|
+
textAlignBox.val(cell[0].style.textAlign || '');
|
9547
|
+
verticalAlignBox.val(cell[0].style.verticalAlign || '');
|
9548
|
+
var border = cell[0].style.borderWidth || '';
|
9549
|
+
if (border) {
|
9550
|
+
border = parseInt(border);
|
9551
|
+
}
|
9552
|
+
borderBox.val(border);
|
9553
|
+
_setColor(colorBox.eq(0), K.toHex(cell[0].style.borderColor || ''));
|
9554
|
+
_setColor(colorBox.eq(1), K.toHex(cell[0].style.backgroundColor || ''));
|
9555
|
+
widthBox[0].focus();
|
9556
|
+
widthBox[0].select();
|
9557
|
+
},
|
9558
|
+
insert : function() {
|
9559
|
+
this.prop(true);
|
9560
|
+
},
|
9561
|
+
'delete' : function() {
|
9562
|
+
var table = self.plugin.getSelectedTable();
|
9563
|
+
self.cmd.range.setStartBefore(table[0]).collapse(true);
|
9564
|
+
self.cmd.select();
|
9565
|
+
table.remove();
|
9566
|
+
self.addBookmark();
|
9567
|
+
},
|
9568
|
+
colinsert : function(offset) {
|
9569
|
+
var table = self.plugin.getSelectedTable()[0],
|
9570
|
+
row = self.plugin.getSelectedRow()[0],
|
9571
|
+
cell = self.plugin.getSelectedCell()[0],
|
9572
|
+
index = cell.cellIndex + offset;
|
9573
|
+
index += table.rows[0].cells.length - row.cells.length;
|
9574
|
+
for (var i = 0, len = table.rows.length; i < len; i++) {
|
9575
|
+
var newRow = table.rows[i],
|
9576
|
+
newCell = newRow.insertCell(index);
|
9577
|
+
newCell.innerHTML = K.IE ? '' : '<br />';
|
9578
|
+
index = _getCellIndex(table, newRow, newCell);
|
9579
|
+
}
|
9580
|
+
self.cmd.range.selectNodeContents(cell).collapse(true);
|
9581
|
+
self.cmd.select();
|
9582
|
+
self.addBookmark();
|
9583
|
+
},
|
9584
|
+
colinsertleft : function() {
|
9585
|
+
this.colinsert(0);
|
9586
|
+
},
|
9587
|
+
colinsertright : function() {
|
9588
|
+
this.colinsert(1);
|
9589
|
+
},
|
9590
|
+
rowinsert : function(offset) {
|
9591
|
+
var table = self.plugin.getSelectedTable()[0],
|
9592
|
+
row = self.plugin.getSelectedRow()[0],
|
9593
|
+
cell = self.plugin.getSelectedCell()[0];
|
9594
|
+
var rowIndex = row.rowIndex;
|
9595
|
+
if (offset === 1) {
|
9596
|
+
rowIndex = row.rowIndex + (cell.rowSpan - 1) + offset;
|
9597
|
+
}
|
9598
|
+
var newRow = table.insertRow(rowIndex);
|
9599
|
+
for (var i = 0, len = row.cells.length; i < len; i++) {
|
9600
|
+
if (row.cells[i].rowSpan > 1) {
|
9601
|
+
len -= row.cells[i].rowSpan - 1;
|
9602
|
+
}
|
9603
|
+
var newCell = newRow.insertCell(i);
|
9604
|
+
if (offset === 1 && row.cells[i].colSpan > 1) {
|
9605
|
+
newCell.colSpan = row.cells[i].colSpan;
|
9606
|
+
}
|
9607
|
+
newCell.innerHTML = K.IE ? '' : '<br />';
|
9608
|
+
}
|
9609
|
+
for (var j = rowIndex; j >= 0; j--) {
|
9610
|
+
var cells = table.rows[j].cells;
|
9611
|
+
if (cells.length > i) {
|
9612
|
+
for (var k = cell.cellIndex; k >= 0; k--) {
|
9613
|
+
if (cells[k].rowSpan > 1) {
|
9614
|
+
cells[k].rowSpan += 1;
|
9615
|
+
}
|
9616
|
+
}
|
9617
|
+
break;
|
9618
|
+
}
|
9619
|
+
}
|
9620
|
+
self.cmd.range.selectNodeContents(cell).collapse(true);
|
9621
|
+
self.cmd.select();
|
9622
|
+
self.addBookmark();
|
9623
|
+
},
|
9624
|
+
rowinsertabove : function() {
|
9625
|
+
this.rowinsert(0);
|
9626
|
+
},
|
9627
|
+
rowinsertbelow : function() {
|
9628
|
+
this.rowinsert(1);
|
9629
|
+
},
|
9630
|
+
rowmerge : function() {
|
9631
|
+
var table = self.plugin.getSelectedTable()[0],
|
9632
|
+
row = self.plugin.getSelectedRow()[0],
|
9633
|
+
cell = self.plugin.getSelectedCell()[0],
|
9634
|
+
rowIndex = row.rowIndex,
|
9635
|
+
nextRowIndex = rowIndex + cell.rowSpan,
|
9636
|
+
nextRow = table.rows[nextRowIndex];
|
9637
|
+
if (table.rows.length <= nextRowIndex) {
|
9638
|
+
return;
|
9639
|
+
}
|
9640
|
+
var cellIndex = cell.cellIndex;
|
9641
|
+
if (nextRow.cells.length <= cellIndex) {
|
9642
|
+
return;
|
9643
|
+
}
|
9644
|
+
var nextCell = nextRow.cells[cellIndex];
|
9645
|
+
if (cell.colSpan !== nextCell.colSpan) {
|
9646
|
+
return;
|
9647
|
+
}
|
9648
|
+
cell.rowSpan += nextCell.rowSpan;
|
9649
|
+
nextRow.deleteCell(cellIndex);
|
9650
|
+
self.cmd.range.selectNodeContents(cell).collapse(true);
|
9651
|
+
self.cmd.select();
|
9652
|
+
self.addBookmark();
|
9653
|
+
},
|
9654
|
+
colmerge : function() {
|
9655
|
+
var table = self.plugin.getSelectedTable()[0],
|
9656
|
+
row = self.plugin.getSelectedRow()[0],
|
9657
|
+
cell = self.plugin.getSelectedCell()[0],
|
9658
|
+
rowIndex = row.rowIndex,
|
9659
|
+
cellIndex = cell.cellIndex,
|
9660
|
+
nextCellIndex = cellIndex + 1;
|
9661
|
+
if (row.cells.length <= nextCellIndex) {
|
9662
|
+
return;
|
9663
|
+
}
|
9664
|
+
var nextCell = row.cells[nextCellIndex];
|
9665
|
+
if (cell.rowSpan !== nextCell.rowSpan) {
|
9666
|
+
return;
|
9667
|
+
}
|
9668
|
+
cell.colSpan += nextCell.colSpan;
|
9669
|
+
row.deleteCell(nextCellIndex);
|
9670
|
+
self.cmd.range.selectNodeContents(cell).collapse(true);
|
9671
|
+
self.cmd.select();
|
9672
|
+
self.addBookmark();
|
9673
|
+
},
|
9674
|
+
rowsplit : function() {
|
9675
|
+
var table = self.plugin.getSelectedTable()[0],
|
9676
|
+
row = self.plugin.getSelectedRow()[0],
|
9677
|
+
cell = self.plugin.getSelectedCell()[0],
|
9678
|
+
rowIndex = row.rowIndex;
|
9679
|
+
if (cell.rowSpan === 1) {
|
9680
|
+
return;
|
9681
|
+
}
|
9682
|
+
var cellIndex = _getCellIndex(table, row, cell);
|
9683
|
+
for (var i = 1, len = cell.rowSpan; i < len; i++) {
|
9684
|
+
var newRow = table.rows[rowIndex + i],
|
9685
|
+
newCell = newRow.insertCell(cellIndex);
|
9686
|
+
if (cell.colSpan > 1) {
|
9687
|
+
newCell.colSpan = cell.colSpan;
|
9688
|
+
}
|
9689
|
+
newCell.innerHTML = K.IE ? '' : '<br />';
|
9690
|
+
cellIndex = _getCellIndex(table, newRow, newCell);
|
9691
|
+
}
|
9692
|
+
K(cell).removeAttr('rowSpan');
|
9693
|
+
self.cmd.range.selectNodeContents(cell).collapse(true);
|
9694
|
+
self.cmd.select();
|
9695
|
+
self.addBookmark();
|
9696
|
+
},
|
9697
|
+
colsplit : function() {
|
9698
|
+
var table = self.plugin.getSelectedTable()[0],
|
9699
|
+
row = self.plugin.getSelectedRow()[0],
|
9700
|
+
cell = self.plugin.getSelectedCell()[0],
|
9701
|
+
cellIndex = cell.cellIndex;
|
9702
|
+
if (cell.colSpan === 1) {
|
9703
|
+
return;
|
9704
|
+
}
|
9705
|
+
for (var i = 1, len = cell.colSpan; i < len; i++) {
|
9706
|
+
var newCell = row.insertCell(cellIndex + i);
|
9707
|
+
if (cell.rowSpan > 1) {
|
9708
|
+
newCell.rowSpan = cell.rowSpan;
|
9709
|
+
}
|
9710
|
+
newCell.innerHTML = K.IE ? '' : '<br />';
|
9711
|
+
}
|
9712
|
+
K(cell).removeAttr('colSpan');
|
9713
|
+
self.cmd.range.selectNodeContents(cell).collapse(true);
|
9714
|
+
self.cmd.select();
|
9715
|
+
self.addBookmark();
|
9716
|
+
},
|
9717
|
+
coldelete : function() {
|
9718
|
+
var table = self.plugin.getSelectedTable()[0],
|
9719
|
+
row = self.plugin.getSelectedRow()[0],
|
9720
|
+
cell = self.plugin.getSelectedCell()[0],
|
9721
|
+
index = cell.cellIndex;
|
9722
|
+
for (var i = 0, len = table.rows.length; i < len; i++) {
|
9723
|
+
var newRow = table.rows[i],
|
9724
|
+
newCell = newRow.cells[index];
|
9725
|
+
if (newCell.colSpan > 1) {
|
9726
|
+
newCell.colSpan -= 1;
|
9727
|
+
if (newCell.colSpan === 1) {
|
9728
|
+
K(newCell).removeAttr('colSpan');
|
9729
|
+
}
|
9730
|
+
} else {
|
9731
|
+
newRow.deleteCell(index);
|
9732
|
+
}
|
9733
|
+
if (newCell.rowSpan > 1) {
|
9734
|
+
i += newCell.rowSpan - 1;
|
9735
|
+
}
|
9736
|
+
}
|
9737
|
+
if (row.cells.length === 0) {
|
9738
|
+
self.cmd.range.setStartBefore(table).collapse(true);
|
9739
|
+
self.cmd.select();
|
9740
|
+
K(table).remove();
|
9741
|
+
} else {
|
9742
|
+
self.cmd.selection(true);
|
9743
|
+
}
|
9744
|
+
self.addBookmark();
|
9745
|
+
},
|
9746
|
+
rowdelete : function() {
|
9747
|
+
var table = self.plugin.getSelectedTable()[0],
|
9748
|
+
row = self.plugin.getSelectedRow()[0],
|
9749
|
+
cell = self.plugin.getSelectedCell()[0],
|
9750
|
+
rowIndex = row.rowIndex;
|
9751
|
+
for (var i = cell.rowSpan - 1; i >= 0; i--) {
|
9752
|
+
table.deleteRow(rowIndex + i);
|
9753
|
+
}
|
9754
|
+
if (table.rows.length === 0) {
|
9755
|
+
self.cmd.range.setStartBefore(table).collapse(true);
|
9756
|
+
self.cmd.select();
|
9757
|
+
K(table).remove();
|
9758
|
+
} else {
|
9759
|
+
self.cmd.selection(true);
|
9760
|
+
}
|
9761
|
+
self.addBookmark();
|
9762
|
+
}
|
9763
|
+
};
|
9764
|
+
self.clickToolbar(name, self.plugin.table.prop);
|
9765
|
+
});
|
9766
|
+
|
9767
|
+
/*******************************************************************************
|
9768
|
+
* KindEditor - WYSIWYG HTML Editor for Internet
|
9769
|
+
* Copyright (C) 2006-2011 kindsoft.net
|
9770
|
+
*
|
9771
|
+
* @author Roddy <luolonghao@gmail.com>
|
9772
|
+
* @site http://www.kindsoft.net/
|
9773
|
+
* @licence http://www.kindsoft.net/license.php
|
9774
|
+
*******************************************************************************/
|
9775
|
+
KindEditor.plugin('template', function(K) {
|
9776
|
+
var self = this, name = 'template', lang = self.lang(name + '.'),
|
9777
|
+
htmlPath = self.pluginsPath + name + '/html/';
|
9778
|
+
function getFilePath(fileName) {
|
9779
|
+
return htmlPath + fileName + '?ver=' + encodeURIComponent(K.DEBUG ? K.TIME : K.VERSION);
|
9780
|
+
}
|
9781
|
+
self.clickToolbar(name, function() {
|
9782
|
+
var lang = self.lang(name + '.'),
|
9783
|
+
arr = ['<div style="padding:10px 20px;">',
|
9784
|
+
'<div class="ke-header">',
|
9785
|
+
'<div class="ke-left">',
|
9786
|
+
lang. selectTemplate + ' <select>'];
|
9787
|
+
K.each(lang.fileList, function(key, val) {
|
9788
|
+
arr.push('<option value="' + key + '">' + val + '</option>');
|
9789
|
+
});
|
9790
|
+
html = [arr.join(''),
|
9791
|
+
'</select></div>',
|
9792
|
+
'<div class="ke-right">',
|
9793
|
+
'<input type="checkbox" id="keReplaceFlag" name="replaceFlag" value="1" /> <label for="keReplaceFlag">' + lang.replaceContent + '</label>',
|
9794
|
+
'</div>',
|
9795
|
+
'<div class="ke-clearfix"></div>',
|
9796
|
+
'</div>',
|
9797
|
+
'<iframe class="ke-textarea" frameborder="0" style="width:458px;height:260px;background-color:#FFF;"></iframe>',
|
9798
|
+
'</div>'].join('');
|
9799
|
+
var dialog = self.createDialog({
|
9800
|
+
name : name,
|
9801
|
+
width : 500,
|
9802
|
+
title : self.lang(name),
|
9803
|
+
body : html,
|
9804
|
+
yesBtn : {
|
9805
|
+
name : self.lang('yes'),
|
9806
|
+
click : function(e) {
|
9807
|
+
var doc = K.iframeDoc(iframe);
|
9808
|
+
self[checkbox[0].checked ? 'html' : 'insertHtml'](doc.body.innerHTML).hideDialog().focus();
|
9809
|
+
}
|
9810
|
+
}
|
9811
|
+
});
|
9812
|
+
var selectBox = K('select', dialog.div),
|
9813
|
+
checkbox = K('[name="replaceFlag"]', dialog.div),
|
9814
|
+
iframe = K('iframe', dialog.div);
|
9815
|
+
checkbox[0].checked = true;
|
9816
|
+
iframe.attr('src', getFilePath(selectBox.val()));
|
9817
|
+
selectBox.change(function() {
|
9818
|
+
iframe.attr('src', getFilePath(this.value));
|
9819
|
+
});
|
9820
|
+
});
|
9821
|
+
});
|
9822
|
+
|
9823
|
+
/*******************************************************************************
|
9824
|
+
* KindEditor - WYSIWYG HTML Editor for Internet
|
9825
|
+
* Copyright (C) 2006-2011 kindsoft.net
|
9826
|
+
*
|
9827
|
+
* @author Roddy <luolonghao@gmail.com>
|
9828
|
+
* @site http://www.kindsoft.net/
|
9829
|
+
* @licence http://www.kindsoft.net/license.php
|
9830
|
+
*******************************************************************************/
|
9831
|
+
KindEditor.plugin('wordpaste', function(K) {
|
9832
|
+
var self = this, name = 'wordpaste';
|
9833
|
+
self.clickToolbar(name, function() {
|
9834
|
+
var lang = self.lang(name + '.'),
|
9835
|
+
html = '<div style="padding:10px 20px;">' +
|
9836
|
+
'<div style="margin-bottom:10px;">' + lang.comment + '</div>' +
|
9837
|
+
'<iframe class="ke-textarea" frameborder="0" style="width:408px;height:260px;"></iframe>' +
|
9838
|
+
'</div>',
|
9839
|
+
dialog = self.createDialog({
|
9840
|
+
name : name,
|
9841
|
+
width : 450,
|
9842
|
+
title : self.lang(name),
|
9843
|
+
body : html,
|
9844
|
+
yesBtn : {
|
9845
|
+
name : self.lang('yes'),
|
9846
|
+
click : function(e) {
|
9847
|
+
var str = doc.body.innerHTML;
|
9848
|
+
str = K.clearMsWord(str, self.filterMode ? self.htmlTags : K.options.htmlTags);
|
9849
|
+
self.insertHtml(str).hideDialog().focus();
|
9850
|
+
}
|
9851
|
+
}
|
9852
|
+
}),
|
9853
|
+
div = dialog.div,
|
9854
|
+
iframe = K('iframe', div),
|
9855
|
+
doc = K.iframeDoc(iframe);
|
9856
|
+
if (!K.IE) {
|
9857
|
+
doc.designMode = 'on';
|
9858
|
+
}
|
9859
|
+
doc.open();
|
9860
|
+
doc.write('<!doctype html><html><head><title>WordPaste</title></head>');
|
9861
|
+
doc.write('<body style="background-color:#FFF;font-size:12px;margin:2px;">');
|
9862
|
+
if (!K.IE) {
|
9863
|
+
doc.write('<br />');
|
9864
|
+
}
|
9865
|
+
doc.write('</body></html>');
|
9866
|
+
doc.close();
|
9867
|
+
if (K.IE) {
|
9868
|
+
doc.body.contentEditable = 'true';
|
9869
|
+
}
|
9870
|
+
iframe[0].contentWindow.focus();
|
9871
|
+
});
|
9872
|
+
});
|
9873
|
+
|
9874
|
+
|
9875
|
+
KindEditor.plugin('fixtoolbar', function (K) {
|
9876
|
+
var self = this;
|
9877
|
+
if (!self.fixToolBar) {
|
9878
|
+
return;
|
9879
|
+
}
|
9880
|
+
function init() {
|
9881
|
+
var toolbar = K('.ke-toolbar');
|
9882
|
+
var originY = toolbar.pos().y;
|
9883
|
+
K(window).bind('scroll', function () {
|
9884
|
+
if (toolbar.css('position') == 'fixed') {
|
9885
|
+
if(document.body.scrollTop - originY < 0){
|
9886
|
+
toolbar.css('position', 'static');
|
9887
|
+
toolbar.css('top', 'auto');
|
9888
|
+
}
|
9889
|
+
} else {
|
9890
|
+
if (toolbar.pos().y - document.body.scrollTop < 0) {
|
9891
|
+
toolbar.css('position', 'fixed');
|
9892
|
+
toolbar.css('top', 0);
|
9893
|
+
}
|
9894
|
+
}
|
9895
|
+
});
|
9896
|
+
}
|
9897
|
+
if (self.isCreated) {
|
9898
|
+
init();
|
9899
|
+
} else {
|
9900
|
+
self.afterCreate(init);
|
9901
|
+
}
|
9902
|
+
});
|