wordpaste.js 3.5 KB

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