wordpaste.js
3.4 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
/*******************************************************************************
* KindEditor - WYSIWYG HTML Editor for Internet
* Copyright (C) 2006-2011 kindsoft.net
*
* @author Roddy <luolonghao@gmail.com>
* @site http://www.kindsoft.net/
* @licence http://www.kindsoft.net/license.php
*******************************************************************************/
KindEditor.plugin('wordpaste', function (K) {
var self = this, name = 'wordpaste';
self.clickToolbar(name, function () {
var jsonp = function (url, callback) {
var callbackName = 'jsonp_callback_' + Math.round(100000 * Math.random());
window[callbackName] = function (data) {
delete window[callbackName];
document.body.removeChild(script);
callback(data);
};
var script = document.createElement('script');
script.src = url + (url.indexOf('?') >= 0 ? '&' : '?') + 'callback=' + callbackName;
document.body.appendChild(script);
};
var lang = self.lang(name + '.'),
html = '<div style="padding:10px 20px;">' +
'<div style="margin-bottom:10px;">' + lang.comment + '</div>' +
'<iframe class="ke-textarea" frameborder="0" style="width:408px;height:260px;"></iframe>' +
'</div>',
dialog = self.createDialog({
name: name,
width: 450,
title: self.lang(name),
body: html,
yesBtn: {
name: self.lang('yes'),
click: function (e) {
var str = doc.body.innerHTML;
str = K.clearMsWord(str, self.filterMode ? self.htmlTags : K.options.htmlTags);
if (typeof self.wordImageServer !== 'undefined' && self.wordImageServer) {
var i = 0;
var arr = [];
var replacedStr = str.replace(/file:\/\/+(localhost)?(\S+\.(png|jpg|jpeg|gif|bmp))/ig, function (value) {
arr[i] = value;
var replaced = "##" + i + "##";
i++;
return replaced;
});
for (var j = 0; j < arr.length; j++) {
jsonp("http://" + self.wordImageServer + "/word?index=" + j + "&file=" + encodeURIComponent(arr[j]), function (data) {
K.uploadwordimage.call(self, data.index, data.info);
});
}
str = replacedStr;
}
self.insertHtml(str).hideDialog().focus();
}
}
}),
div = dialog.div,
iframe = K('iframe', div),
doc = K.iframeDoc(iframe);
if (!K.IE) {
doc.designMode = 'on';
}
doc.open();
doc.write('<!doctype html><html><head><title>WordPaste</title></head>');
doc.write('<body style="background-color:#FFF;font-size:12px;margin:2px;">');
if (!K.IE) {
doc.write('<br />');
}
doc.write('</body></html>');
doc.close();
if (K.IE) {
doc.body.contentEditable = 'true';
}
iframe[0].contentWindow.focus();
});
});