ueditor-plus-assets 0.1.0 → 0.1.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (239) hide show
  1. package/README.md +3 -3
  2. package/dist/UEditorPlus/dialogs/ai/ai.html +139 -0
  3. package/dist/UEditorPlus/dialogs/ai/ai.js +282 -0
  4. package/dist/UEditorPlus/dialogs/anchor/anchor.html +62 -0
  5. package/dist/UEditorPlus/dialogs/attachment/attachment.css +716 -0
  6. package/dist/UEditorPlus/dialogs/attachment/attachment.html +61 -0
  7. package/dist/UEditorPlus/dialogs/attachment/attachment.js +797 -0
  8. package/dist/UEditorPlus/dialogs/attachment/images/alignicon.gif +0 -0
  9. package/dist/UEditorPlus/dialogs/attachment/images/alignicon.png +0 -0
  10. package/dist/UEditorPlus/dialogs/attachment/images/bg.png +0 -0
  11. package/dist/UEditorPlus/dialogs/attachment/images/file-icons.gif +0 -0
  12. package/dist/UEditorPlus/dialogs/attachment/images/file-icons.png +0 -0
  13. package/dist/UEditorPlus/dialogs/attachment/images/icons.gif +0 -0
  14. package/dist/UEditorPlus/dialogs/attachment/images/icons.png +0 -0
  15. package/dist/UEditorPlus/dialogs/attachment/images/image.png +0 -0
  16. package/dist/UEditorPlus/dialogs/attachment/images/progress.png +0 -0
  17. package/dist/UEditorPlus/dialogs/attachment/images/success.gif +0 -0
  18. package/dist/UEditorPlus/dialogs/attachment/images/success.png +0 -0
  19. package/dist/UEditorPlus/dialogs/audio/audio.css +818 -0
  20. package/dist/UEditorPlus/dialogs/audio/audio.html +83 -0
  21. package/dist/UEditorPlus/dialogs/audio/audio.js +805 -0
  22. package/dist/UEditorPlus/dialogs/audio/images/bg.png +0 -0
  23. package/dist/UEditorPlus/dialogs/audio/images/center_focus.jpg +0 -0
  24. package/dist/UEditorPlus/dialogs/audio/images/file-icons.gif +0 -0
  25. package/dist/UEditorPlus/dialogs/audio/images/file-icons.png +0 -0
  26. package/dist/UEditorPlus/dialogs/audio/images/icons.gif +0 -0
  27. package/dist/UEditorPlus/dialogs/audio/images/icons.png +0 -0
  28. package/dist/UEditorPlus/dialogs/audio/images/image.png +0 -0
  29. package/dist/UEditorPlus/dialogs/audio/images/left_focus.jpg +0 -0
  30. package/dist/UEditorPlus/dialogs/audio/images/none_focus.jpg +0 -0
  31. package/dist/UEditorPlus/dialogs/audio/images/progress.png +0 -0
  32. package/dist/UEditorPlus/dialogs/audio/images/right_focus.jpg +0 -0
  33. package/dist/UEditorPlus/dialogs/audio/images/success.gif +0 -0
  34. package/dist/UEditorPlus/dialogs/audio/images/success.png +0 -0
  35. package/dist/UEditorPlus/dialogs/background/background.css +193 -0
  36. package/dist/UEditorPlus/dialogs/background/background.html +59 -0
  37. package/dist/UEditorPlus/dialogs/background/background.js +370 -0
  38. package/dist/UEditorPlus/dialogs/background/images/bg.png +0 -0
  39. package/dist/UEditorPlus/dialogs/background/images/success.png +0 -0
  40. package/dist/UEditorPlus/dialogs/contentimport/contentimport.html +177 -0
  41. package/dist/UEditorPlus/dialogs/contentimport/contentimport.js +91 -0
  42. package/dist/UEditorPlus/dialogs/contentimport/mammoth.browser.min.js +21 -0
  43. package/dist/UEditorPlus/dialogs/contentimport/showdown.min.js +3 -0
  44. package/dist/UEditorPlus/dialogs/emotion/emotion.css +129 -0
  45. package/dist/UEditorPlus/dialogs/emotion/emotion.html +70 -0
  46. package/dist/UEditorPlus/dialogs/emotion/emotion.js +186 -0
  47. package/dist/UEditorPlus/dialogs/emotion/images/0.gif +0 -0
  48. package/dist/UEditorPlus/dialogs/emotion/images/bface.gif +0 -0
  49. package/dist/UEditorPlus/dialogs/emotion/images/cface.gif +0 -0
  50. package/dist/UEditorPlus/dialogs/emotion/images/fface.gif +0 -0
  51. package/dist/UEditorPlus/dialogs/emotion/images/jxface2.gif +0 -0
  52. package/dist/UEditorPlus/dialogs/emotion/images/neweditor-tab-bg.png +0 -0
  53. package/dist/UEditorPlus/dialogs/emotion/images/tface.gif +0 -0
  54. package/dist/UEditorPlus/dialogs/emotion/images/wface.gif +0 -0
  55. package/dist/UEditorPlus/dialogs/emotion/images/yface.gif +0 -0
  56. package/dist/UEditorPlus/dialogs/formula/formula.html +98 -0
  57. package/dist/UEditorPlus/dialogs/formula/formula.js +147 -0
  58. package/dist/UEditorPlus/dialogs/help/help.css +37 -0
  59. package/dist/UEditorPlus/dialogs/help/help.html +82 -0
  60. package/dist/UEditorPlus/dialogs/help/help.js +57 -0
  61. package/dist/UEditorPlus/dialogs/image/image.css +752 -0
  62. package/dist/UEditorPlus/dialogs/image/image.html +125 -0
  63. package/dist/UEditorPlus/dialogs/image/image.js +1051 -0
  64. package/dist/UEditorPlus/dialogs/image/images/alignicon.jpg +0 -0
  65. package/dist/UEditorPlus/dialogs/image/images/bg.png +0 -0
  66. package/dist/UEditorPlus/dialogs/image/images/icons.gif +0 -0
  67. package/dist/UEditorPlus/dialogs/image/images/icons.png +0 -0
  68. package/dist/UEditorPlus/dialogs/image/images/image.png +0 -0
  69. package/dist/UEditorPlus/dialogs/image/images/progress.png +0 -0
  70. package/dist/UEditorPlus/dialogs/image/images/success.gif +0 -0
  71. package/dist/UEditorPlus/dialogs/image/images/success.png +0 -0
  72. package/dist/UEditorPlus/dialogs/insertframe/insertframe.html +135 -0
  73. package/dist/UEditorPlus/dialogs/internal.js +81 -0
  74. package/dist/UEditorPlus/dialogs/link/link.html +155 -0
  75. package/dist/UEditorPlus/dialogs/preview/preview.html +45 -0
  76. package/dist/UEditorPlus/dialogs/scrawl/images/addimg.png +0 -0
  77. package/dist/UEditorPlus/dialogs/scrawl/images/brush.png +0 -0
  78. package/dist/UEditorPlus/dialogs/scrawl/images/delimg.png +0 -0
  79. package/dist/UEditorPlus/dialogs/scrawl/images/delimgH.png +0 -0
  80. package/dist/UEditorPlus/dialogs/scrawl/images/empty.png +0 -0
  81. package/dist/UEditorPlus/dialogs/scrawl/images/emptyH.png +0 -0
  82. package/dist/UEditorPlus/dialogs/scrawl/images/eraser.png +0 -0
  83. package/dist/UEditorPlus/dialogs/scrawl/images/redo.png +0 -0
  84. package/dist/UEditorPlus/dialogs/scrawl/images/redoH.png +0 -0
  85. package/dist/UEditorPlus/dialogs/scrawl/images/scale.png +0 -0
  86. package/dist/UEditorPlus/dialogs/scrawl/images/scaleH.png +0 -0
  87. package/dist/UEditorPlus/dialogs/scrawl/images/size.png +0 -0
  88. package/dist/UEditorPlus/dialogs/scrawl/images/undo.png +0 -0
  89. package/dist/UEditorPlus/dialogs/scrawl/images/undoH.png +0 -0
  90. package/dist/UEditorPlus/dialogs/scrawl/scrawl.css +324 -0
  91. package/dist/UEditorPlus/dialogs/scrawl/scrawl.html +95 -0
  92. package/dist/UEditorPlus/dialogs/scrawl/scrawl.js +707 -0
  93. package/dist/UEditorPlus/dialogs/searchreplace/searchreplace.html +144 -0
  94. package/dist/UEditorPlus/dialogs/searchreplace/searchreplace.js +174 -0
  95. package/dist/UEditorPlus/dialogs/spechars/spechars.html +42 -0
  96. package/dist/UEditorPlus/dialogs/spechars/spechars.js +86 -0
  97. package/dist/UEditorPlus/dialogs/table/dragicon.png +0 -0
  98. package/dist/UEditorPlus/dialogs/table/edittable.css +85 -0
  99. package/dist/UEditorPlus/dialogs/table/edittable.html +69 -0
  100. package/dist/UEditorPlus/dialogs/table/edittable.js +241 -0
  101. package/dist/UEditorPlus/dialogs/table/edittd.html +62 -0
  102. package/dist/UEditorPlus/dialogs/table/edittip.html +33 -0
  103. package/dist/UEditorPlus/dialogs/template/config.js +42 -0
  104. package/dist/UEditorPlus/dialogs/template/images/bg.gif +0 -0
  105. package/dist/UEditorPlus/dialogs/template/images/pre0.png +0 -0
  106. package/dist/UEditorPlus/dialogs/template/images/pre1.png +0 -0
  107. package/dist/UEditorPlus/dialogs/template/images/pre2.png +0 -0
  108. package/dist/UEditorPlus/dialogs/template/images/pre3.png +0 -0
  109. package/dist/UEditorPlus/dialogs/template/images/pre4.png +0 -0
  110. package/dist/UEditorPlus/dialogs/template/template.css +99 -0
  111. package/dist/UEditorPlus/dialogs/template/template.html +26 -0
  112. package/dist/UEditorPlus/dialogs/template/template.js +53 -0
  113. package/dist/UEditorPlus/dialogs/video/images/bg.png +0 -0
  114. package/dist/UEditorPlus/dialogs/video/images/center_focus.jpg +0 -0
  115. package/dist/UEditorPlus/dialogs/video/images/file-icons.gif +0 -0
  116. package/dist/UEditorPlus/dialogs/video/images/file-icons.png +0 -0
  117. package/dist/UEditorPlus/dialogs/video/images/icons.gif +0 -0
  118. package/dist/UEditorPlus/dialogs/video/images/icons.png +0 -0
  119. package/dist/UEditorPlus/dialogs/video/images/image.png +0 -0
  120. package/dist/UEditorPlus/dialogs/video/images/left_focus.jpg +0 -0
  121. package/dist/UEditorPlus/dialogs/video/images/none_focus.jpg +0 -0
  122. package/dist/UEditorPlus/dialogs/video/images/progress.png +0 -0
  123. package/dist/UEditorPlus/dialogs/video/images/right_focus.jpg +0 -0
  124. package/dist/UEditorPlus/dialogs/video/images/success.gif +0 -0
  125. package/dist/UEditorPlus/dialogs/video/images/success.png +0 -0
  126. package/dist/UEditorPlus/dialogs/video/video.css +818 -0
  127. package/dist/UEditorPlus/dialogs/video/video.html +109 -0
  128. package/dist/UEditorPlus/dialogs/video/video.js +910 -0
  129. package/dist/UEditorPlus/dialogs/wordimage/wordimage.html +222 -0
  130. package/dist/UEditorPlus/dialogs/wordimage/wordimage.js +93 -0
  131. package/dist/UEditorPlus/index.html +168 -0
  132. package/dist/UEditorPlus/lang/en/en.js +788 -0
  133. package/dist/UEditorPlus/lang/en/images/addimage.png +0 -0
  134. package/dist/UEditorPlus/lang/en/images/alldeletebtnhoverskin.png +0 -0
  135. package/dist/UEditorPlus/lang/en/images/alldeletebtnupskin.png +0 -0
  136. package/dist/UEditorPlus/lang/en/images/background.png +0 -0
  137. package/dist/UEditorPlus/lang/en/images/button.png +0 -0
  138. package/dist/UEditorPlus/lang/en/images/copy.png +0 -0
  139. package/dist/UEditorPlus/lang/en/images/deletedisable.png +0 -0
  140. package/dist/UEditorPlus/lang/en/images/deleteenable.png +0 -0
  141. package/dist/UEditorPlus/lang/en/images/listbackground.png +0 -0
  142. package/dist/UEditorPlus/lang/en/images/localimage.png +0 -0
  143. package/dist/UEditorPlus/lang/en/images/music.png +0 -0
  144. package/dist/UEditorPlus/lang/en/images/rotateleftdisable.png +0 -0
  145. package/dist/UEditorPlus/lang/en/images/rotateleftenable.png +0 -0
  146. package/dist/UEditorPlus/lang/en/images/rotaterightdisable.png +0 -0
  147. package/dist/UEditorPlus/lang/en/images/rotaterightenable.png +0 -0
  148. package/dist/UEditorPlus/lang/en/images/upload.png +0 -0
  149. package/dist/UEditorPlus/lang/zh-cn/images/copy.png +0 -0
  150. package/dist/UEditorPlus/lang/zh-cn/images/localimage.png +0 -0
  151. package/dist/UEditorPlus/lang/zh-cn/images/music.png +0 -0
  152. package/dist/UEditorPlus/lang/zh-cn/images/upload.png +0 -0
  153. package/dist/UEditorPlus/lang/zh-cn/zh-cn.js +812 -0
  154. package/dist/UEditorPlus/plugins/demo/demo.js +3 -0
  155. package/dist/UEditorPlus/themes/default/css/ueditor.css +2170 -0
  156. package/dist/UEditorPlus/themes/default/dialog.css +642 -0
  157. package/dist/UEditorPlus/themes/default/dialogbase.css +100 -0
  158. package/dist/UEditorPlus/themes/default/exts/ai.svg +12 -0
  159. package/dist/UEditorPlus/themes/default/exts/apk.svg +12 -0
  160. package/dist/UEditorPlus/themes/default/exts/chm.svg +12 -0
  161. package/dist/UEditorPlus/themes/default/exts/css.svg +12 -0
  162. package/dist/UEditorPlus/themes/default/exts/doc.svg +22 -0
  163. package/dist/UEditorPlus/themes/default/exts/docx.svg +22 -0
  164. package/dist/UEditorPlus/themes/default/exts/dwg.svg +16 -0
  165. package/dist/UEditorPlus/themes/default/exts/folder.svg +3 -0
  166. package/dist/UEditorPlus/themes/default/exts/gif.svg +14 -0
  167. package/dist/UEditorPlus/themes/default/exts/html.svg +12 -0
  168. package/dist/UEditorPlus/themes/default/exts/jpeg.svg +14 -0
  169. package/dist/UEditorPlus/themes/default/exts/jpg.svg +14 -0
  170. package/dist/UEditorPlus/themes/default/exts/log.svg +12 -0
  171. package/dist/UEditorPlus/themes/default/exts/mp3.svg +14 -0
  172. package/dist/UEditorPlus/themes/default/exts/mp4.svg +12 -0
  173. package/dist/UEditorPlus/themes/default/exts/pdf.svg +14 -0
  174. package/dist/UEditorPlus/themes/default/exts/png.svg +14 -0
  175. package/dist/UEditorPlus/themes/default/exts/ppt.svg +24 -0
  176. package/dist/UEditorPlus/themes/default/exts/pptx.svg +24 -0
  177. package/dist/UEditorPlus/themes/default/exts/psd.svg +12 -0
  178. package/dist/UEditorPlus/themes/default/exts/rar.svg +12 -0
  179. package/dist/UEditorPlus/themes/default/exts/svg.svg +12 -0
  180. package/dist/UEditorPlus/themes/default/exts/torrent.svg +14 -0
  181. package/dist/UEditorPlus/themes/default/exts/txt.svg +14 -0
  182. package/dist/UEditorPlus/themes/default/exts/unknown.svg +12 -0
  183. package/dist/UEditorPlus/themes/default/exts/xls.svg +25 -0
  184. package/dist/UEditorPlus/themes/default/exts/xlsx.svg +25 -0
  185. package/dist/UEditorPlus/themes/default/exts/zip.svg +12 -0
  186. package/dist/UEditorPlus/themes/default/images/anchor.gif +0 -0
  187. package/dist/UEditorPlus/themes/default/images/arrow.png +0 -0
  188. package/dist/UEditorPlus/themes/default/images/arrow_down.png +0 -0
  189. package/dist/UEditorPlus/themes/default/images/arrow_up.png +0 -0
  190. package/dist/UEditorPlus/themes/default/images/button-bg.gif +0 -0
  191. package/dist/UEditorPlus/themes/default/images/cancelbutton.gif +0 -0
  192. package/dist/UEditorPlus/themes/default/images/charts.png +0 -0
  193. package/dist/UEditorPlus/themes/default/images/cursor_h.gif +0 -0
  194. package/dist/UEditorPlus/themes/default/images/cursor_h.png +0 -0
  195. package/dist/UEditorPlus/themes/default/images/cursor_v.gif +0 -0
  196. package/dist/UEditorPlus/themes/default/images/cursor_v.png +0 -0
  197. package/dist/UEditorPlus/themes/default/images/dialog-title-bg.png +0 -0
  198. package/dist/UEditorPlus/themes/default/images/filescan.png +0 -0
  199. package/dist/UEditorPlus/themes/default/images/highlighted.gif +0 -0
  200. package/dist/UEditorPlus/themes/default/images/icons-all.gif +0 -0
  201. package/dist/UEditorPlus/themes/default/images/icons.gif +0 -0
  202. package/dist/UEditorPlus/themes/default/images/icons.png +0 -0
  203. package/dist/UEditorPlus/themes/default/images/img-cracked.png +0 -0
  204. package/dist/UEditorPlus/themes/default/images/loaderror.png +0 -0
  205. package/dist/UEditorPlus/themes/default/images/loading.gif +0 -0
  206. package/dist/UEditorPlus/themes/default/images/lock.gif +0 -0
  207. package/dist/UEditorPlus/themes/default/images/neweditor-tab-bg.png +0 -0
  208. package/dist/UEditorPlus/themes/default/images/pagebreak.gif +0 -0
  209. package/dist/UEditorPlus/themes/default/images/scale.png +0 -0
  210. package/dist/UEditorPlus/themes/default/images/sortable.png +0 -0
  211. package/dist/UEditorPlus/themes/default/images/spacer.gif +0 -0
  212. package/dist/UEditorPlus/themes/default/images/sparator_v.png +0 -0
  213. package/dist/UEditorPlus/themes/default/images/table-cell-align.png +0 -0
  214. package/dist/UEditorPlus/themes/default/images/tangram-colorpicker.png +0 -0
  215. package/dist/UEditorPlus/themes/default/images/toolbar_bg.png +0 -0
  216. package/dist/UEditorPlus/themes/default/images/unhighlighted.gif +0 -0
  217. package/dist/UEditorPlus/themes/default/images/upload.png +0 -0
  218. package/dist/UEditorPlus/themes/default/images/videologo.gif +0 -0
  219. package/dist/UEditorPlus/themes/default/images/word.gif +0 -0
  220. package/dist/UEditorPlus/themes/default/images/wordpaste.png +0 -0
  221. package/dist/UEditorPlus/themes/iframe.css +63 -0
  222. package/dist/UEditorPlus/third-party/SyntaxHighlighter/shCore.js +3655 -0
  223. package/dist/UEditorPlus/third-party/SyntaxHighlighter/shCoreDefault.css +1 -0
  224. package/dist/UEditorPlus/third-party/clipboard/clipboard.js +753 -0
  225. package/dist/UEditorPlus/third-party/clipboard/clipboard.swf +0 -0
  226. package/dist/UEditorPlus/third-party/codemirror/codemirror.css +106 -0
  227. package/dist/UEditorPlus/third-party/codemirror/codemirror.js +3581 -0
  228. package/dist/UEditorPlus/third-party/jquery-1.10.2.js +6 -0
  229. package/dist/UEditorPlus/third-party/showdown.js +2 -0
  230. package/dist/UEditorPlus/third-party/vue.js +1 -0
  231. package/dist/UEditorPlus/third-party/webuploader/webuploader.css +88 -0
  232. package/dist/UEditorPlus/third-party/webuploader/webuploader.js +10178 -0
  233. package/dist/UEditorPlus/third-party/zeroclipboard/ZeroClipboard.js +1256 -0
  234. package/dist/UEditorPlus/third-party/zeroclipboard/ZeroClipboard.swf +0 -0
  235. package/dist/UEditorPlus/ueditor.all.js +36896 -0
  236. package/dist/UEditorPlus/ueditor.config.js +761 -0
  237. package/dist/UEditorPlus/ueditor.parse.js +907 -0
  238. package/index.js +5 -5
  239. package/package.json +29 -29
@@ -0,0 +1,910 @@
1
+ /**
2
+ * Created by JetBrains PhpStorm.
3
+ * User: taoqili
4
+ * Date: 12-2-20
5
+ * Time: 上午11:19
6
+ * To change this template use File | Settings | File Templates.
7
+ */
8
+
9
+ (function () {
10
+
11
+ var video = {},
12
+ uploadVideoList = [],
13
+ isModifyUploadVideo = false,
14
+ uploadFile;
15
+ var editorOpt = {};
16
+
17
+ window.onload = function () {
18
+ editorOpt = editor.getOpt('videoConfig');
19
+ $focus($G("videoUrl"));
20
+ initTabs();
21
+ initVideo();
22
+ initUpload();
23
+ };
24
+
25
+ /* 初始化tab标签 */
26
+ function initTabs() {
27
+ var tabs = $G('tabHeads').children;
28
+ for (var i = 0; i < tabs.length; i++) {
29
+ domUtils.on(tabs[i], "click", function (e) {
30
+ var j, bodyId, target = e.target || e.srcElement;
31
+ for (j = 0; j < tabs.length; j++) {
32
+ bodyId = tabs[j].getAttribute('data-content-id');
33
+ if (tabs[j] == target) {
34
+ domUtils.addClass(tabs[j], 'focus');
35
+ domUtils.addClass($G(bodyId), 'focus');
36
+ } else {
37
+ domUtils.removeClasses(tabs[j], 'focus');
38
+ domUtils.removeClasses($G(bodyId), 'focus');
39
+ }
40
+ }
41
+ });
42
+ }
43
+ if (!editorOpt.disableUpload) {
44
+ $G('tabHeads').querySelector('[data-content-id="upload"]').style.display = 'inline-block';
45
+ }
46
+ if (!!editorOpt.selectCallback) {
47
+ $G('videoSelect').style.display = 'inline-block';
48
+ domUtils.on($G('videoSelect'), "click", function (e) {
49
+ editorOpt.selectCallback(editor, function (info) {
50
+ if (info) {
51
+ $G('videoUrl').value = info.path;
52
+ createPreviewVideo(info.path);
53
+ }
54
+ });
55
+ });
56
+ }
57
+ }
58
+
59
+ function initVideo() {
60
+ createAlignButton(["videoFloat", "upload_alignment"]);
61
+ addUrlChangeListener($G("videoUrl"));
62
+ addOkListener();
63
+
64
+ //编辑视频时初始化相关信息
65
+ (function () {
66
+ var img = domUtils.findParentByTagName(editor._shortcutmenuTarget, ["img", "video", "iframe"], true) ||
67
+ editor.selection.getRange().getClosedNode() ||
68
+ domUtils.findParentByTagName(editor.selection.getStart(), ["img", "video", "iframe"], true),
69
+ url,
70
+ className = img && img.className ? img.className : "";
71
+ if (img) {
72
+ var hasFakedClass = (className == "edui-faked-video"),
73
+ hasUploadClass = className.indexOf("edui-upload-video") != -1,
74
+ hasIframeClass = className.indexOf("edui-video-iframe") != -1 || img.tagName === "IFRAME",
75
+ hasVideoClass = className.indexOf("edui-video-video") != -1 || img.tagName === "VIDEO";
76
+ if (hasFakedClass || hasUploadClass) {
77
+ $G("videoUrl").value = url = img.getAttribute("_url") || img.getAttribute("src");
78
+ $G("videoWidth").value = img.width;
79
+ $G("videoHeight").value = img.height;
80
+ var align = domUtils.getComputedStyle(img, "float"),
81
+ parentAlign = domUtils.getComputedStyle(img.parentNode, "text-align");
82
+ updateAlignButton(parentAlign === "center" ? "center" : align);
83
+ }
84
+ if (hasUploadClass || hasIframeClass || hasVideoClass) {
85
+ isModifyUploadVideo = true;
86
+ }
87
+ }
88
+ createPreviewVideo(url);
89
+ })();
90
+ }
91
+
92
+ /**
93
+ * 监听确认和取消两个按钮事件,用户执行插入或者清空正在播放的视频实例操作
94
+ */
95
+ function addOkListener() {
96
+ dialog.onok = function () {
97
+ $G("preview").innerHTML = "";
98
+ var currentTab = findFocus("tabHeads", "tabSrc");
99
+ switch (currentTab) {
100
+ case "video":
101
+ return insertSingle();
102
+ break;
103
+ case "videoSearch":
104
+ return insertSearch("searchList");
105
+ break;
106
+ case "upload":
107
+ return insertUpload();
108
+ break;
109
+ }
110
+ };
111
+ dialog.oncancel = function () {
112
+ $G("preview").innerHTML = "";
113
+ };
114
+ }
115
+
116
+ /**
117
+ * 依据传入的align值更新按钮信息
118
+ * @param align
119
+ */
120
+ function updateAlignButton(align) {
121
+ var aligns = $G("videoFloat").children;
122
+ for (var i = 0, ci; ci = aligns[i++];) {
123
+ if (ci.getAttribute("name") == align) {
124
+ if (ci.className != "focus") {
125
+ ci.className = "focus";
126
+ }
127
+ } else {
128
+ if (ci.className == "focus") {
129
+ ci.className = "";
130
+ }
131
+ }
132
+ }
133
+ }
134
+
135
+ /**
136
+ * 将单个视频信息插入编辑器中
137
+ */
138
+ function insertSingle() {
139
+ var width = $G("videoWidth"),
140
+ height = $G("videoHeight"),
141
+ url = $G('videoUrl').value,
142
+ align = findFocus("videoFloat", "name");
143
+ if (!url) return false;
144
+ if (!checkNum([width, height])) return false;
145
+ editor.execCommand('insertvideo', {
146
+ url: convert_url(url),
147
+ width: width.value,
148
+ height: height.value,
149
+ align: align
150
+ }, isModifyUploadVideo ? 'upload' : null);
151
+ }
152
+
153
+ /**
154
+ * 将元素id下的所有代表视频的图片插入编辑器中
155
+ * @param id
156
+ */
157
+ function insertSearch(id) {
158
+ var imgs = domUtils.getElementsByTagName($G(id), "img"),
159
+ videoObjs = [];
160
+ for (var i = 0, img; img = imgs[i++];) {
161
+ if (img.getAttribute("selected")) {
162
+ videoObjs.push({
163
+ url: img.getAttribute("ue_video_url"),
164
+ width: 420,
165
+ height: 280,
166
+ align: "none"
167
+ });
168
+ }
169
+ }
170
+ editor.execCommand('insertvideo', videoObjs);
171
+ }
172
+
173
+ /**
174
+ * 找到id下具有focus类的节点并返回该节点下的某个属性
175
+ * @param id
176
+ * @param returnProperty
177
+ */
178
+ function findFocus(id, returnProperty) {
179
+ var tabs = $G(id).children,
180
+ property;
181
+ for (var i = 0, ci; ci = tabs[i++];) {
182
+ if (ci.className == "focus") {
183
+ property = ci.getAttribute(returnProperty);
184
+ break;
185
+ }
186
+ }
187
+ return property;
188
+ }
189
+
190
+ function convert_url(url) {
191
+ if (!url) return '';
192
+ url = utils.trim(url)
193
+ .replace(/v\.youku\.com\/v_show\/id_([\w\-=]+)\.html/i, 'player.youku.com/embed/$1')
194
+ // .replace(/(www\.)?youtube\.com\/watch\?v=([\w\-]+)/i, "www.youtube.com/v/$2")
195
+ // .replace(/youtu.be\/(\w+)$/i, "www.youtube.com/v/$1")
196
+ //.replace(/www\.iqiyi\.com\/v_(\w+)\.html/i, "www.youtube.com/v/$1")
197
+ // .replace(/v\.ku6\.com\/.+\/([\w\.]+)\.html.*$/i, "player.ku6.com/refer/$1/v.swf")
198
+ // .replace(/www\.56\.com\/u\d+\/v_([\w\-]+)\.html/i, "player.56.com/v_$1.swf")
199
+ // .replace(/www.56.com\/w\d+\/play_album\-aid\-\d+_vid\-([^.]+)\.html/i, "player.56.com/v_$1.swf")
200
+ // .replace(/v\.pps\.tv\/play_([\w]+)\.html.*$/i, "player.pps.tv/player/sid/$1/v.swf")
201
+ // .replace(/www\.letv\.com\/ptv\/vplay\/([\d]+)\.html.*$/i, "i7.imgs.letv.com/player/swfPlayer.swf?id=$1&autoplay=0")
202
+ // .replace(/www\.tudou\.com\/programs\/view\/([\w\-]+)\/?/i, "www.tudou.com/v/$1")
203
+ // https://v.qq.com/x/cover/wagzbx91asjomnu/w05337nxfof.html
204
+ // https://v.qq.com/iframe/player.html?vid=w05337nxfof&tiny=0&auto=0
205
+ .replace(/v\.qq\.com\/x\/cover\/[\w]+\/([\w]+)\.html/i, "v.qq.com/iframe/player.html?vid=$1&tiny=0&auto=0")
206
+ .replace(/v\.qq\.com\/x\/page\/([\w]+)\.html/i, "v.qq.com/iframe/player.html?vid=$1&tiny=0&auto=0")
207
+ .replace(/www\.bilibili\.com\/video\/([a-zA-Z0-9]+)\/?.*$/i, "player.bilibili.com/player.html?bvid=$1")
208
+ // .replace(/v\.qq\.com\/cover\/[\w]+\/[\w]+\/([\w]+)\.html/i, "static.video.qq.com/TPout.swf?vid=$1")
209
+ // .replace(/v\.qq\.com\/.+[\?\&]vid=([^&]+).*$/i, "static.video.qq.com/TPout.swf?vid=$1")
210
+ // .replace(/my\.tv\.sohu\.com\/[\w]+\/[\d]+\/([\d]+)\.shtml.*$/i, "share.vrs.sohu.com/my/v.swf&id=$1")
211
+ ;
212
+ return url;
213
+ }
214
+
215
+ /**
216
+ * 检测传入的所有input框中输入的长宽是否是正数
217
+ * @param nodes input框集合,
218
+ */
219
+ function checkNum(nodes) {
220
+ for (var i = 0, ci; ci = nodes[i++];) {
221
+ var value = ci.value;
222
+ if (!isNumber(value) && value) {
223
+ alert(lang.numError);
224
+ ci.value = "";
225
+ ci.focus();
226
+ return false;
227
+ }
228
+ }
229
+ return true;
230
+ }
231
+
232
+ /**
233
+ * 数字判断
234
+ * @param value
235
+ */
236
+ function isNumber(value) {
237
+ return /(0|^[1-9]\d*$)/.test(value);
238
+ }
239
+
240
+ /**
241
+ * 创建图片浮动选择按钮
242
+ * @param ids
243
+ */
244
+ function createAlignButton(ids) {
245
+ for (var i = 0, ci; ci = ids[i++];) {
246
+ var floatContainer = $G(ci),
247
+ nameMaps = {
248
+ "none": lang['default'],
249
+ "left": lang.floatLeft,
250
+ "right": lang.floatRight,
251
+ "center": lang.block
252
+ };
253
+ for (var j in nameMaps) {
254
+ var div = document.createElement("div");
255
+ div.setAttribute("name", j);
256
+ if (j == "none") div.className = "focus";
257
+ div.style.cssText = "background:url(images/" + j + "_focus.jpg);";
258
+ div.setAttribute("title", nameMaps[j]);
259
+ floatContainer.appendChild(div);
260
+ }
261
+ switchSelect(ci);
262
+ }
263
+ }
264
+
265
+ /**
266
+ * 选择切换
267
+ * @param selectParentId
268
+ */
269
+ function switchSelect(selectParentId) {
270
+ var selects = $G(selectParentId).children;
271
+ for (var i = 0, ci; ci = selects[i++];) {
272
+ domUtils.on(ci, "click", function () {
273
+ for (var j = 0, cj; cj = selects[j++];) {
274
+ cj.className = "";
275
+ cj.removeAttribute && cj.removeAttribute("class");
276
+ }
277
+ this.className = "focus";
278
+ })
279
+ }
280
+ }
281
+
282
+ /**
283
+ * 监听url改变事件
284
+ * @param url
285
+ */
286
+ function addUrlChangeListener(url) {
287
+ if (browser.ie) {
288
+ url.onpropertychange = function () {
289
+ createPreviewVideo(this.value);
290
+ }
291
+ } else {
292
+ url.addEventListener("input", function () {
293
+ createPreviewVideo(this.value);
294
+ }, false);
295
+ }
296
+ }
297
+
298
+ /**
299
+ * 根据url生成视频预览
300
+ * @param url
301
+ */
302
+ function createPreviewVideo(url) {
303
+ if (!url) return;
304
+
305
+ var conUrl = convert_url(url);
306
+
307
+ conUrl = utils.unhtml(conUrl);
308
+
309
+ // $G("preview").innerHTML = '<div class="previewMsg"><span>'+lang.urlError+'</span></div>'+
310
+ // '<embed class="previewVideo" type="application/x-shockwave-flash" pluginspage="http://www.macromedia.com/go/getflashplayer"' +
311
+ // ' src="' + conUrl + '"' +
312
+ // ' width="' + 420 + '"' +
313
+ // ' height="' + 280 + '"' +
314
+ // ' wmode="transparent" play="true" loop="false" menu="false" allowscriptaccess="never" allowfullscreen="true" >' +
315
+ // '</embed>';
316
+
317
+ $G("preview").innerHTML = '<div class="previewMsg"><span>' + lang.urlError + '</span></div>' +
318
+ '<iframe class="previewVideo" ' +
319
+ ' src="' + conUrl + '"' +
320
+ ' width="' + 420 + '"' +
321
+ ' height="' + 280 + '"' +
322
+ ' frameborder=0 allowfullscreen>' +
323
+ '</iframe>';
324
+ }
325
+
326
+ function getFileVideoSize(file) {
327
+ return new Promise(function (resolve) {
328
+ if (!file) {
329
+ resolve({width: 0, height: 0});
330
+ return;
331
+ }
332
+ var source = file.source && file.source.source ? file.source.source : file;
333
+ var objectUrl = '';
334
+ try {
335
+ objectUrl = URL.createObjectURL(source);
336
+ } catch (e) {
337
+ resolve({width: 0, height: 0});
338
+ return;
339
+ }
340
+
341
+ var video = document.createElement('video');
342
+ video.preload = 'metadata';
343
+ video.onloadedmetadata = function () {
344
+ URL.revokeObjectURL(objectUrl);
345
+ resolve({
346
+ width: video.videoWidth || 0,
347
+ height: video.videoHeight || 0
348
+ });
349
+ };
350
+ video.onerror = function () {
351
+ URL.revokeObjectURL(objectUrl);
352
+ resolve({width: 0, height: 0});
353
+ };
354
+ video.src = objectUrl;
355
+ });
356
+ }
357
+
358
+
359
+ /* 插入上传视频 */
360
+ function insertUpload() {
361
+ var videoObjs = [],
362
+ uploadDir = editor.getOpt('videoUrlPrefix'),
363
+ width = $G('upload_width').value,
364
+ height = $G('upload_height').value,
365
+ align = findFocus("upload_alignment", "name") || 'none';
366
+ for (var key in uploadVideoList) {
367
+ var file = uploadVideoList[key];
368
+ videoObjs.push({
369
+ url: uploadDir + file.url,
370
+ width: width || file.width || 420,
371
+ height: height || file.height || 280,
372
+ align: align
373
+ });
374
+ }
375
+
376
+ var count = uploadFile.getQueueCount();
377
+ if (count) {
378
+ $('.info', '#queueList').html('<span style="color:red;">' + lang.queueError.replace(/_/, count) + '</span>');
379
+ return false;
380
+ } else {
381
+ editor.execCommand('insertvideo', videoObjs, 'upload');
382
+ }
383
+ }
384
+
385
+ /*初始化上传标签*/
386
+ function initUpload() {
387
+ uploadFile = new UploadFile('queueList');
388
+ }
389
+
390
+
391
+ /* 上传附件 */
392
+ function UploadFile(target) {
393
+ this.$wrap = target.constructor == String ? $('#' + target) : $(target);
394
+ this.init();
395
+ }
396
+
397
+ UploadFile.prototype = {
398
+ init: function () {
399
+ this.fileList = [];
400
+ this.initContainer();
401
+ this.initUploader();
402
+ },
403
+ initContainer: function () {
404
+ this.$queue = this.$wrap.find('.filelist');
405
+ },
406
+ /* 初始化容器 */
407
+ initUploader: function () {
408
+ var _this = this,
409
+ $ = jQuery, // just in case. Make sure it's not an other libaray.
410
+ $wrap = _this.$wrap,
411
+ // 图片容器
412
+ $queue = $wrap.find('.filelist'),
413
+ // 状态栏,包括进度和控制按钮
414
+ $statusBar = $wrap.find('.statusBar'),
415
+ // 文件总体选择信息。
416
+ $info = $statusBar.find('.info'),
417
+ // 上传按钮
418
+ $upload = $wrap.find('.uploadBtn'),
419
+ // 上传按钮
420
+ $filePickerBtn = $wrap.find('.filePickerBtn'),
421
+ // 上传按钮
422
+ $filePickerBlock = $wrap.find('.filePickerBlock'),
423
+ // 没选择文件之前的内容。
424
+ $placeHolder = $wrap.find('.placeholder'),
425
+ // 总体进度条
426
+ $progress = $statusBar.find('.progress').hide(),
427
+ // 添加的文件数量
428
+ fileCount = 0,
429
+ // 添加的文件总大小
430
+ fileSize = 0,
431
+ // 优化retina, 在retina下这个值是2
432
+ ratio = window.devicePixelRatio || 1,
433
+ // 缩略图大小
434
+ thumbnailWidth = 113 * ratio,
435
+ thumbnailHeight = 113 * ratio,
436
+ // 可能有pedding, ready, uploading, confirm, done.
437
+ state = '',
438
+ // 所有文件的进度信息,key为file id
439
+ percentages = {},
440
+ supportTransition = (function () {
441
+ var s = document.createElement('p').style,
442
+ r = 'transition' in s ||
443
+ 'WebkitTransition' in s ||
444
+ 'MozTransition' in s ||
445
+ 'msTransition' in s ||
446
+ 'OTransition' in s;
447
+ s = null;
448
+ return r;
449
+ })(),
450
+ // WebUploader实例
451
+ uploader,
452
+ actionUrl = editor.getActionUrl(editor.getOpt('videoActionName')),
453
+ fileMaxSize = editor.getOpt('videoMaxSize'),
454
+ acceptExtensions = (editor.getOpt('videoAllowFiles') || []).join('').replace(/\./g, ',').replace(/^[,]/, '');
455
+ ;
456
+
457
+ if (!WebUploader.Uploader.support()) {
458
+ $('#filePickerReady').after($('<div>').html(lang.errorNotSupport)).hide();
459
+ return;
460
+ } else if (!editor.getOpt('videoActionName')) {
461
+ $('#filePickerReady').after($('<div>').html(lang.errorLoadConfig)).hide();
462
+ return;
463
+ }
464
+
465
+ var uploaderOption = {
466
+ pick: {
467
+ id: '#filePickerReady',
468
+ label: lang.uploadSelectFile
469
+ },
470
+ accept: {
471
+ title: 'Videos',
472
+ extensions: acceptExtensions,
473
+ mimeTypes: 'video/*'
474
+ },
475
+ swf: '../../third-party/webuploader/Uploader.swf',
476
+ server: actionUrl,
477
+ fileVal: editor.getOpt('videoFieldName'),
478
+ duplicate: true,
479
+ fileSingleSizeLimit: fileMaxSize,
480
+ headers: editor.getOpt('serverHeaders') || {},
481
+ compress: false
482
+ };
483
+ if(editor.getOpt('uploadServiceEnable')) {
484
+ uploaderOption.customUpload = function (file, callback) {
485
+ editor.getOpt('uploadServiceUpload')('video', file, {
486
+ success: function( res ) {
487
+ callback.onSuccess(file, {_raw:JSON.stringify(res)});
488
+ },
489
+ error: function( err ) {
490
+ callback.onError(file, err);
491
+ },
492
+ progress: function( percent ) {
493
+ callback.onProgress(file, percent);
494
+ }
495
+ }, {
496
+ from: 'video'
497
+ });
498
+ };
499
+ }
500
+
501
+ uploader = _this.uploader = WebUploader.create(uploaderOption);
502
+ uploader.addButton({
503
+ id: '#filePickerBlock'
504
+ });
505
+ uploader.addButton({
506
+ id: '#filePickerBtn',
507
+ label: lang.uploadAddFile
508
+ });
509
+
510
+ setState('pedding');
511
+
512
+ // 当有文件添加进来时执行,负责view的创建
513
+ function addFile(file) {
514
+ var $li = $('<li id="' + file.id + '">' +
515
+ '<p class="title">' + file.name + '</p>' +
516
+ '<p class="imgWrap"></p>' +
517
+ '<p class="progress"><span></span></p>' +
518
+ '</li>'),
519
+
520
+ $btns = $('<div class="file-panel">' +
521
+ '<span class="cancel">' + lang.uploadDelete + '</span>' +
522
+ '<span class="rotateRight">' + lang.uploadTurnRight + '</span>' +
523
+ '<span class="rotateLeft">' + lang.uploadTurnLeft + '</span></div>').appendTo($li),
524
+ $prgress = $li.find('p.progress span'),
525
+ $wrap = $li.find('p.imgWrap'),
526
+ $info = $('<p class="error"></p>').hide().appendTo($li),
527
+
528
+ showError = function (code) {
529
+ switch (code) {
530
+ case 'exceed_size':
531
+ text = lang.errorExceedSize;
532
+ break;
533
+ case 'interrupt':
534
+ text = lang.errorInterrupt;
535
+ break;
536
+ case 'http':
537
+ text = lang.errorHttp;
538
+ break;
539
+ case 'not_allow_type':
540
+ text = lang.errorFileType;
541
+ break;
542
+ default:
543
+ text = lang.errorUploadRetry;
544
+ break;
545
+ }
546
+ $info.text(text).show();
547
+ };
548
+
549
+ if (file.getStatus() === 'invalid') {
550
+ showError(file.statusText);
551
+ } else {
552
+ $wrap.text(lang.uploadPreview);
553
+ if ('|png|jpg|jpeg|bmp|gif|'.indexOf('|' + file.ext.toLowerCase() + '|') == -1) {
554
+ $wrap.empty().addClass('notimage').append('<i class="file-preview file-type-' + file.ext.toLowerCase() + '"></i>' +
555
+ '<span class="file-title">' + file.name + '</span>');
556
+ } else {
557
+ if (browser.ie && browser.version <= 7) {
558
+ $wrap.text(lang.uploadNoPreview);
559
+ } else {
560
+ uploader.makeThumb(file, function (error, src) {
561
+ if (error || !src || (/^data:/.test(src) && browser.ie && browser.version <= 7)) {
562
+ $wrap.text(lang.uploadNoPreview);
563
+ } else {
564
+ var $img = $('<img src="' + src + '">');
565
+ $wrap.empty().append($img);
566
+ $img.on('error', function () {
567
+ $wrap.text(lang.uploadNoPreview);
568
+ });
569
+ }
570
+ }, thumbnailWidth, thumbnailHeight);
571
+ }
572
+ }
573
+ percentages[file.id] = [file.size, 0];
574
+ file.rotation = 0;
575
+
576
+ /* 检查文件格式 */
577
+ if (!file.ext || acceptExtensions.indexOf(file.ext.toLowerCase()) == -1) {
578
+ showError('not_allow_type');
579
+ uploader.removeFile(file);
580
+ }
581
+ }
582
+
583
+ file.on('statuschange', function (cur, prev) {
584
+ if (prev === 'progress') {
585
+ $prgress.hide().width(0);
586
+ } else if (prev === 'queued') {
587
+ $li.off('mouseenter mouseleave');
588
+ $btns.remove();
589
+ }
590
+ // 成功
591
+ if (cur === 'error' || cur === 'invalid') {
592
+ showError(file.statusText);
593
+ percentages[file.id][1] = 1;
594
+ } else if (cur === 'interrupt') {
595
+ showError('interrupt');
596
+ } else if (cur === 'queued') {
597
+ percentages[file.id][1] = 0;
598
+ } else if (cur === 'progress') {
599
+ $info.hide();
600
+ $prgress.css('display', 'block');
601
+ } else if (cur === 'complete') {
602
+ }
603
+
604
+ $li.removeClass('state-' + prev).addClass('state-' + cur);
605
+ });
606
+
607
+ $li.on('mouseenter', function () {
608
+ $btns.stop().animate({height: 30});
609
+ });
610
+ $li.on('mouseleave', function () {
611
+ $btns.stop().animate({height: 0});
612
+ });
613
+
614
+ $btns.on('click', 'span', function () {
615
+ var index = $(this).index(),
616
+ deg;
617
+
618
+ switch (index) {
619
+ case 0:
620
+ uploader.removeFile(file);
621
+ return;
622
+ case 1:
623
+ file.rotation += 90;
624
+ break;
625
+ case 2:
626
+ file.rotation -= 90;
627
+ break;
628
+ }
629
+
630
+ if (supportTransition) {
631
+ deg = 'rotate(' + file.rotation + 'deg)';
632
+ $wrap.css({
633
+ '-webkit-transform': deg,
634
+ '-mos-transform': deg,
635
+ '-o-transform': deg,
636
+ 'transform': deg
637
+ });
638
+ } else {
639
+ $wrap.css('filter', 'progid:DXImageTransform.Microsoft.BasicImage(rotation=' + (~~((file.rotation / 90) % 4 + 4) % 4) + ')');
640
+ }
641
+
642
+ });
643
+
644
+ $li.insertBefore($filePickerBlock);
645
+ }
646
+
647
+ // 负责view的销毁
648
+ function removeFile(file) {
649
+ var $li = $('#' + file.id);
650
+ delete percentages[file.id];
651
+ updateTotalProgress();
652
+ $li.off().find('.file-panel').off().end().remove();
653
+ }
654
+
655
+ function updateTotalProgress() {
656
+ var loaded = 0,
657
+ total = 0,
658
+ spans = $progress.children(),
659
+ percent;
660
+
661
+ $.each(percentages, function (k, v) {
662
+ total += v[0];
663
+ loaded += v[0] * v[1];
664
+ });
665
+
666
+ percent = total ? loaded / total : 0;
667
+
668
+ spans.eq(0).text(Math.round(percent * 100) + '%');
669
+ spans.eq(1).css('width', Math.round(percent * 100) + '%');
670
+ updateStatus();
671
+ }
672
+
673
+ function setState(val, files) {
674
+
675
+ if (val != state) {
676
+
677
+ var stats = uploader.getStats();
678
+
679
+ $upload.removeClass('state-' + state);
680
+ $upload.addClass('state-' + val);
681
+
682
+ switch (val) {
683
+
684
+ /* 未选择文件 */
685
+ case 'pedding':
686
+ $queue.addClass('element-invisible');
687
+ $statusBar.addClass('element-invisible');
688
+ $placeHolder.removeClass('element-invisible');
689
+ $progress.hide();
690
+ $info.hide();
691
+ uploader.refresh();
692
+ break;
693
+
694
+ /* 可以开始上传 */
695
+ case 'ready':
696
+ $placeHolder.addClass('element-invisible');
697
+ $queue.removeClass('element-invisible');
698
+ $statusBar.removeClass('element-invisible');
699
+ $progress.hide();
700
+ $info.show();
701
+ $upload.text(lang.uploadStart);
702
+ uploader.refresh();
703
+ break;
704
+
705
+ /* 上传中 */
706
+ case 'uploading':
707
+ $progress.show();
708
+ $info.hide();
709
+ $upload.text(lang.uploadPause);
710
+ break;
711
+
712
+ /* 暂停上传 */
713
+ case 'paused':
714
+ $progress.show();
715
+ $info.hide();
716
+ $upload.text(lang.uploadContinue);
717
+ break;
718
+
719
+ case 'confirm':
720
+ $progress.show();
721
+ $info.hide();
722
+ $upload.text(lang.uploadStart);
723
+
724
+ stats = uploader.getStats();
725
+ if (stats.successNum && !stats.uploadFailNum) {
726
+ setState('finish');
727
+ return;
728
+ }
729
+ break;
730
+
731
+ case 'finish':
732
+ $progress.hide();
733
+ $info.show();
734
+ if (stats.uploadFailNum) {
735
+ $upload.text(lang.uploadRetry);
736
+ } else {
737
+ $upload.text(lang.uploadStart);
738
+ }
739
+ break;
740
+ }
741
+
742
+ state = val;
743
+ updateStatus();
744
+
745
+ }
746
+
747
+ if (!_this.getQueueCount()) {
748
+ $upload.addClass('disabled')
749
+ } else {
750
+ $upload.removeClass('disabled')
751
+ }
752
+
753
+ }
754
+
755
+ function updateStatus() {
756
+ var text = '', stats;
757
+
758
+ if (state === 'ready') {
759
+ text = lang.updateStatusReady.replace('_', fileCount).replace('_KB', WebUploader.formatSize(fileSize));
760
+ } else if (state === 'confirm') {
761
+ stats = uploader.getStats();
762
+ if (stats.uploadFailNum) {
763
+ text = lang.updateStatusConfirm.replace('_', stats.successNum).replace('_', stats.successNum);
764
+ }
765
+ } else {
766
+ stats = uploader.getStats();
767
+ text = lang.updateStatusFinish.replace('_', fileCount).replace('_KB', WebUploader.formatSize(fileSize)).replace('_', stats.successNum);
768
+
769
+ if (stats.uploadFailNum) {
770
+ text += lang.updateStatusError.replace('_', stats.uploadFailNum);
771
+ }
772
+ }
773
+
774
+ $info.html(text);
775
+ }
776
+
777
+ uploader.on('fileQueued', function (file) {
778
+ fileCount++;
779
+ fileSize += file.size;
780
+
781
+ if (fileCount === 1) {
782
+ $placeHolder.addClass('element-invisible');
783
+ $statusBar.show();
784
+ }
785
+
786
+ addFile(file);
787
+ });
788
+
789
+ uploader.on('fileDequeued', function (file) {
790
+ fileCount--;
791
+ fileSize -= file.size;
792
+
793
+ removeFile(file);
794
+ updateTotalProgress();
795
+ });
796
+
797
+ uploader.on('filesQueued', function (file) {
798
+ if (!uploader.isInProgress() && (state == 'pedding' || state == 'finish' || state == 'confirm' || state == 'ready')) {
799
+ setState('ready');
800
+ }
801
+ updateTotalProgress();
802
+ });
803
+
804
+ uploader.on('all', function (type, files) {
805
+ switch (type) {
806
+ case 'uploadFinished':
807
+ setState('confirm', files);
808
+ break;
809
+ case 'startUpload':
810
+ /* 添加额外的GET参数 */
811
+ var params = utils.serializeParam(editor.queryCommandValue('serverparam')) || '',
812
+ url = utils.formatUrl(actionUrl + (actionUrl.indexOf('?') == -1 ? '?' : '&') + 'encode=utf-8&' + params);
813
+ uploader.option('server', url);
814
+ setState('uploading', files);
815
+ break;
816
+ case 'stopUpload':
817
+ setState('paused', files);
818
+ break;
819
+ }
820
+ });
821
+
822
+ uploader.on('uploadBeforeSend', function (file, data, header) {
823
+ //这里可以通过data对象添加POST参数
824
+ if (actionUrl.toLowerCase().indexOf('jsp') != -1) {
825
+ header['X_Requested_With'] = 'XMLHttpRequest';
826
+ }
827
+ });
828
+
829
+ uploader.on('uploadProgress', function (file, percentage) {
830
+ var $li = $('#' + file.id),
831
+ $percent = $li.find('.progress span');
832
+
833
+ $percent.css('width', percentage * 100 + '%');
834
+ percentages[file.id][1] = percentage;
835
+ updateTotalProgress();
836
+ });
837
+
838
+ uploader.on('uploadSuccess', function (file, ret) {
839
+ var $file = $('#' + file.id);
840
+ try {
841
+ var responseText = (ret._raw || ret),
842
+ json = utils.str2json(responseText);
843
+ json = editor.getOpt('serverResponsePrepare')(json);
844
+ if (json.state == 'SUCCESS') {
845
+ getFileVideoSize(file).then(function (size) {
846
+ uploadVideoList.push({
847
+ 'url': json.url,
848
+ 'type': json.type,
849
+ 'original': json.original,
850
+ 'width': size.width,
851
+ 'height': size.height
852
+ });
853
+ $file.append('<span class="success"></span>');
854
+ // 触发上传视频事件
855
+ editor.fireEvent("uploadsuccess", {
856
+ res: json,
857
+ type: 'video'
858
+ });
859
+ });
860
+ } else {
861
+ $file.find('.error').text(json.state).show();
862
+ }
863
+ } catch (e) {
864
+ $file.find('.error').text(lang.errorServerUpload).show();
865
+ }
866
+ });
867
+
868
+ uploader.on('uploadError', function (file, code) {
869
+ });
870
+ uploader.on('error', function (code, param1, param2) {
871
+ if (code === 'F_EXCEED_SIZE') {
872
+ editor.getOpt('tipError')(lang.errorExceedSize + ' ' + (param1 / 1024 / 1024).toFixed(1) + 'MB');
873
+ } else {
874
+ console.log('error', code, param1, param2);
875
+ }
876
+ });
877
+ uploader.on('uploadComplete', function (file, ret) {
878
+ });
879
+
880
+ $upload.on('click', function () {
881
+ if ($(this).hasClass('disabled')) {
882
+ return false;
883
+ }
884
+
885
+ if (state === 'ready') {
886
+ uploader.upload();
887
+ } else if (state === 'paused') {
888
+ uploader.upload();
889
+ } else if (state === 'uploading') {
890
+ uploader.stop();
891
+ }
892
+ });
893
+
894
+ $upload.addClass('state-' + state);
895
+ updateTotalProgress();
896
+ },
897
+ getQueueCount: function () {
898
+ var file, i, status, readyFile = 0, files = this.uploader.getFiles();
899
+ for (i = 0; file = files[i++];) {
900
+ status = file.getStatus();
901
+ if (status == 'queued' || status == 'uploading' || status == 'progress') readyFile++;
902
+ }
903
+ return readyFile;
904
+ },
905
+ refresh: function () {
906
+ this.uploader.refresh();
907
+ }
908
+ };
909
+
910
+ })();