baidu_umeditor_rails 0.0.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (108) hide show
  1. checksums.yaml +7 -0
  2. data/.gitignore +15 -0
  3. data/Gemfile +4 -0
  4. data/LICENSE.txt +22 -0
  5. data/README.md +31 -0
  6. data/Rakefile +2 -0
  7. data/app/assets/javascripts/umeditor.js +2 -0
  8. data/baidu_umeditor_rails.gemspec +23 -0
  9. data/lib/baidu_umeditor_rails/asset_installer.rb +64 -0
  10. data/lib/baidu_umeditor_rails/asset_manifest.rb +120 -0
  11. data/lib/baidu_umeditor_rails/engine.rb +20 -0
  12. data/lib/baidu_umeditor_rails/version.rb +4 -0
  13. data/lib/baidu_umeditor_rails.rb +3 -0
  14. data/lib/tasks/baidu_umeditor_rails_tasks.rake +15 -0
  15. data/vendor/assets/javascripts/umeditor/dialogs/emotion/emotion.css +87 -0
  16. data/vendor/assets/javascripts/umeditor/dialogs/emotion/emotion.js +272 -0
  17. data/vendor/assets/javascripts/umeditor/dialogs/emotion/images/0.gif +0 -0
  18. data/vendor/assets/javascripts/umeditor/dialogs/emotion/images/bface.gif +0 -0
  19. data/vendor/assets/javascripts/umeditor/dialogs/emotion/images/cface.gif +0 -0
  20. data/vendor/assets/javascripts/umeditor/dialogs/emotion/images/fface.gif +0 -0
  21. data/vendor/assets/javascripts/umeditor/dialogs/emotion/images/jxface2.gif +0 -0
  22. data/vendor/assets/javascripts/umeditor/dialogs/emotion/images/neweditor-tab-bg.png +0 -0
  23. data/vendor/assets/javascripts/umeditor/dialogs/emotion/images/tface.gif +0 -0
  24. data/vendor/assets/javascripts/umeditor/dialogs/emotion/images/wface.gif +0 -0
  25. data/vendor/assets/javascripts/umeditor/dialogs/emotion/images/yface.gif +0 -0
  26. data/vendor/assets/javascripts/umeditor/dialogs/formula/formula.css +32 -0
  27. data/vendor/assets/javascripts/umeditor/dialogs/formula/formula.html +212 -0
  28. data/vendor/assets/javascripts/umeditor/dialogs/formula/formula.js +124 -0
  29. data/vendor/assets/javascripts/umeditor/dialogs/formula/images/formula.png +0 -0
  30. data/vendor/assets/javascripts/umeditor/dialogs/image/image.css +42 -0
  31. data/vendor/assets/javascripts/umeditor/dialogs/image/image.js +445 -0
  32. data/vendor/assets/javascripts/umeditor/dialogs/image/images/close.png +0 -0
  33. data/vendor/assets/javascripts/umeditor/dialogs/image/images/upload1.png +0 -0
  34. data/vendor/assets/javascripts/umeditor/dialogs/image/images/upload2.png +0 -0
  35. data/vendor/assets/javascripts/umeditor/dialogs/link/link.js +73 -0
  36. data/vendor/assets/javascripts/umeditor/dialogs/map/map.html +148 -0
  37. data/vendor/assets/javascripts/umeditor/dialogs/map/map.js +263 -0
  38. data/vendor/assets/javascripts/umeditor/dialogs/video/images/center_focus.jpg +0 -0
  39. data/vendor/assets/javascripts/umeditor/dialogs/video/images/left_focus.jpg +0 -0
  40. data/vendor/assets/javascripts/umeditor/dialogs/video/images/none_focus.jpg +0 -0
  41. data/vendor/assets/javascripts/umeditor/dialogs/video/images/right_focus.jpg +0 -0
  42. data/vendor/assets/javascripts/umeditor/dialogs/video/video.css +59 -0
  43. data/vendor/assets/javascripts/umeditor/dialogs/video/video.js +282 -0
  44. data/vendor/assets/javascripts/umeditor/index.html +277 -0
  45. data/vendor/assets/javascripts/umeditor/lang/en/en.js +150 -0
  46. data/vendor/assets/javascripts/umeditor/lang/en/images/addimage.png +0 -0
  47. data/vendor/assets/javascripts/umeditor/lang/en/images/alldeletebtnhoverskin.png +0 -0
  48. data/vendor/assets/javascripts/umeditor/lang/en/images/alldeletebtnupskin.png +0 -0
  49. data/vendor/assets/javascripts/umeditor/lang/en/images/background.png +0 -0
  50. data/vendor/assets/javascripts/umeditor/lang/en/images/button.png +0 -0
  51. data/vendor/assets/javascripts/umeditor/lang/en/images/copy.png +0 -0
  52. data/vendor/assets/javascripts/umeditor/lang/en/images/deletedisable.png +0 -0
  53. data/vendor/assets/javascripts/umeditor/lang/en/images/deleteenable.png +0 -0
  54. data/vendor/assets/javascripts/umeditor/lang/en/images/imglabel.png +0 -0
  55. data/vendor/assets/javascripts/umeditor/lang/en/images/listbackground.png +0 -0
  56. data/vendor/assets/javascripts/umeditor/lang/en/images/localimage.png +0 -0
  57. data/vendor/assets/javascripts/umeditor/lang/en/images/music.png +0 -0
  58. data/vendor/assets/javascripts/umeditor/lang/en/images/rotateleftdisable.png +0 -0
  59. data/vendor/assets/javascripts/umeditor/lang/en/images/rotateleftenable.png +0 -0
  60. data/vendor/assets/javascripts/umeditor/lang/en/images/rotaterightdisable.png +0 -0
  61. data/vendor/assets/javascripts/umeditor/lang/en/images/rotaterightenable.png +0 -0
  62. data/vendor/assets/javascripts/umeditor/lang/en/images/upload.png +0 -0
  63. data/vendor/assets/javascripts/umeditor/lang/zh-cn/images/copy.png +0 -0
  64. data/vendor/assets/javascripts/umeditor/lang/zh-cn/images/imglabel.png +0 -0
  65. data/vendor/assets/javascripts/umeditor/lang/zh-cn/images/localimage.png +0 -0
  66. data/vendor/assets/javascripts/umeditor/lang/zh-cn/images/music.png +0 -0
  67. data/vendor/assets/javascripts/umeditor/lang/zh-cn/images/upload.png +0 -0
  68. data/vendor/assets/javascripts/umeditor/lang/zh-cn/zh-cn.js +150 -0
  69. data/vendor/assets/javascripts/umeditor/themes/default/css/umeditor.css +773 -0
  70. data/vendor/assets/javascripts/umeditor/themes/default/css/umeditor.min.css +8 -0
  71. data/vendor/assets/javascripts/umeditor/themes/default/images/caret.png +0 -0
  72. data/vendor/assets/javascripts/umeditor/themes/default/images/close.png +0 -0
  73. data/vendor/assets/javascripts/umeditor/themes/default/images/icons.gif +0 -0
  74. data/vendor/assets/javascripts/umeditor/themes/default/images/icons.png +0 -0
  75. data/vendor/assets/javascripts/umeditor/themes/default/images/ok.gif +0 -0
  76. data/vendor/assets/javascripts/umeditor/themes/default/images/pop-bg.png +0 -0
  77. data/vendor/assets/javascripts/umeditor/themes/default/images/spacer.gif +0 -0
  78. data/vendor/assets/javascripts/umeditor/themes/default/images/videologo.gif +0 -0
  79. data/vendor/assets/javascripts/umeditor/third-party/jquery.min.js +6 -0
  80. data/vendor/assets/javascripts/umeditor/third-party/mathquill/font/Symbola.eot +0 -0
  81. data/vendor/assets/javascripts/umeditor/third-party/mathquill/font/Symbola.otf +0 -0
  82. data/vendor/assets/javascripts/umeditor/third-party/mathquill/font/Symbola.svg +5102 -0
  83. data/vendor/assets/javascripts/umeditor/third-party/mathquill/font/Symbola.ttf +0 -0
  84. data/vendor/assets/javascripts/umeditor/third-party/mathquill/font/Symbola.woff +0 -0
  85. data/vendor/assets/javascripts/umeditor/third-party/mathquill/font/stixgeneral-bundle/STIXFontLicense2010.txt +103 -0
  86. data/vendor/assets/javascripts/umeditor/third-party/mathquill/font/stixgeneral-bundle/stixgeneral-webfont.eot +0 -0
  87. data/vendor/assets/javascripts/umeditor/third-party/mathquill/font/stixgeneral-bundle/stixgeneral-webfont.svg +3318 -0
  88. data/vendor/assets/javascripts/umeditor/third-party/mathquill/font/stixgeneral-bundle/stixgeneral-webfont.ttf +0 -0
  89. data/vendor/assets/javascripts/umeditor/third-party/mathquill/font/stixgeneral-bundle/stixgeneral-webfont.woff +0 -0
  90. data/vendor/assets/javascripts/umeditor/third-party/mathquill/font/stixgeneral-bundle/stixgeneralbol-webfont.eot +0 -0
  91. data/vendor/assets/javascripts/umeditor/third-party/mathquill/font/stixgeneral-bundle/stixgeneralbol-webfont.svg +1738 -0
  92. data/vendor/assets/javascripts/umeditor/third-party/mathquill/font/stixgeneral-bundle/stixgeneralbol-webfont.ttf +0 -0
  93. data/vendor/assets/javascripts/umeditor/third-party/mathquill/font/stixgeneral-bundle/stixgeneralbol-webfont.woff +0 -0
  94. data/vendor/assets/javascripts/umeditor/third-party/mathquill/font/stixgeneral-bundle/stixgeneralbolita-webfont.eot +0 -0
  95. data/vendor/assets/javascripts/umeditor/third-party/mathquill/font/stixgeneral-bundle/stixgeneralbolita-webfont.svg +1137 -0
  96. data/vendor/assets/javascripts/umeditor/third-party/mathquill/font/stixgeneral-bundle/stixgeneralbolita-webfont.ttf +0 -0
  97. data/vendor/assets/javascripts/umeditor/third-party/mathquill/font/stixgeneral-bundle/stixgeneralbolita-webfont.woff +0 -0
  98. data/vendor/assets/javascripts/umeditor/third-party/mathquill/font/stixgeneral-bundle/stixgeneralitalic-webfont.eot +0 -0
  99. data/vendor/assets/javascripts/umeditor/third-party/mathquill/font/stixgeneral-bundle/stixgeneralitalic-webfont.svg +1089 -0
  100. data/vendor/assets/javascripts/umeditor/third-party/mathquill/font/stixgeneral-bundle/stixgeneralitalic-webfont.ttf +0 -0
  101. data/vendor/assets/javascripts/umeditor/third-party/mathquill/font/stixgeneral-bundle/stixgeneralitalic-webfont.woff +0 -0
  102. data/vendor/assets/javascripts/umeditor/third-party/mathquill/mathquill.css +357 -0
  103. data/vendor/assets/javascripts/umeditor/third-party/mathquill/mathquill.js +3888 -0
  104. data/vendor/assets/javascripts/umeditor/third-party/mathquill/mathquill.min.js +2 -0
  105. data/vendor/assets/javascripts/umeditor/umeditor.config.js +249 -0
  106. data/vendor/assets/javascripts/umeditor/umeditor.js +10923 -0
  107. data/vendor/assets/javascripts/umeditor/umeditor.min.js +264 -0
  108. metadata +179 -0
@@ -0,0 +1,124 @@
1
+ (function () {
2
+
3
+ var editor = null;
4
+
5
+ UM.registerWidget('formula', {
6
+
7
+ tpl: "<link type=\"text/css\" rel=\"stylesheet\" href=\"<%=formula_url%>formula.css\">" +
8
+ "<div class=\"edui-formula-wrapper\">" +
9
+ "<ul class=\"edui-tab-nav\"></ul>" +
10
+ "<div class=\"edui-tab-content\"></div>" +
11
+ "</div>",
12
+
13
+ sourceData: {
14
+ formula: {
15
+ 'common': [
16
+ "{/}frac{ }{ }", "^{ }/_{ }", "x^{ }", "x_{ }", "x^{ }_{ }", "{/}bar{ }", "{/}sqrt{ }", "{/}nthroot{ }{ }",
17
+ "{/}sum^{ }_{n=}", "{/}sum", "{/}log_{ }", "{/}ln", "{/}int_{ }^{ }", "{/}oint_{ }^{ }"
18
+ ],
19
+ 'symbol': [
20
+ "+", "-", "{/}pm", "{/}times", "{/}ast", "{/}div", "/", "{/}bigtriangleup",
21
+ "=", "{/}ne", "{/}approx", ">", "<", "{/}ge", "{/}le", "{/}infty",
22
+ "{/}cap", "{/}cup", "{/}because", "{/}therefore", "{/}subset", "{/}supset", "{/}subseteq", "{/}supseteq",
23
+ "{/}nsubseteq", "{/}nsupseteq", "{/}in", "{/}ni", "{/}notin", "{/}mapsto", "{/}leftarrow", "{/}rightarrow",
24
+ "{/}Leftarrow", "{/}Rightarrow", "{/}leftrightarrow", "{/}Leftrightarrow"
25
+ ],
26
+ 'letter': [
27
+ "{/}alpha", "{/}beta", "{/}gamma", "{/}delta", "{/}varepsilon", "{/}varphi", "{/}lambda", "{/}mu",
28
+ "{/}rho", "{/}sigma", "{/}omega", "{/}Gamma", "{/}Delta", "{/}Theta", "{/}Lambda", "{/}Xi",
29
+ "{/}Pi", "{/}Sigma", "{/}Upsilon", "{/}Phi", "{/}Psi", "{/}Omega"
30
+ ]
31
+ }
32
+ },
33
+ initContent: function (_editor, $widget) {
34
+
35
+ var me = this,
36
+ formula = me.sourceData.formula,
37
+ lang = _editor.getLang('formula').static,
38
+ formulaUrl = UMEDITOR_CONFIG.UMEDITOR_HOME_URL + 'dialogs/formula/',
39
+ options = $.extend({}, lang, { 'formula_url': formulaUrl }),
40
+ $root = me.root();
41
+
42
+ if (me.inited) {
43
+ me.preventDefault();
44
+ return;
45
+ }
46
+ me.inited = true;
47
+
48
+ editor = _editor;
49
+ me.$widget = $widget;
50
+
51
+ $root.html($.parseTmpl(me.tpl, options));
52
+ me.tabs = $.eduitab({selector: "#edui-formula-tab-Jpanel"});
53
+
54
+ /* 初始化popup的内容 */
55
+ var headHtml = [], xMax = 0, yMax = 0,
56
+ $tabContent = me.root().find('.edui-tab-content');
57
+ $.each(formula, function (k, v) {
58
+ var contentHtml = [];
59
+ $.each(v, function (i, f) {
60
+ contentHtml.push('<li class="edui-formula-latex-item" data-latex="' + f + '" style="background-position:-' + (xMax * 30) + 'px -' + (yMax * 30) + 'px"></li>');
61
+ if (++xMax >=8) {
62
+ ++yMax; xMax = 0;
63
+ }
64
+ });
65
+ yMax++; xMax = 0;
66
+ $tabContent.append('<div class="edui-tab-pane"><ul>' + contentHtml.join('') + '</ul>');
67
+ headHtml.push('<li class="edui-tab-item"><a href="javascript:void(0);" class="edui-tab-text">' + lang['lang_tab_' + k] + '</a></li>');
68
+ });
69
+ headHtml.push('<li class="edui-formula-clearboth"></li>');
70
+ $root.find('.edui-tab-nav').html(headHtml.join(''));
71
+ $root.find('.edui-tab-content').append('<div class="edui-formula-clearboth"></div>');
72
+
73
+ /* 选中第一个tab */
74
+ me.switchTab(0);
75
+ },
76
+ initEvent: function () {
77
+ var me = this;
78
+
79
+ //防止点击过后关闭popup
80
+ me.root().on('click', function (e) {
81
+ return false;
82
+ });
83
+
84
+ //点击tab切换菜单
85
+ me.root().find('.edui-tab-nav').delegate('.edui-tab-item', 'click', function (evt) {
86
+ me.switchTab(this);
87
+ return false;
88
+ });
89
+
90
+ //点击选中公式
91
+ me.root().find('.edui-tab-pane').delegate('.edui-formula-latex-item', 'click', function (evt) {
92
+ var $item = $(this),
93
+ latex = $item.attr('data-latex') || '';
94
+
95
+ if (latex) {
96
+ me.insertLatex(latex.replace("{/}", "\\"));
97
+ }
98
+ me.$widget.edui().hide();
99
+ return false;
100
+ });
101
+ },
102
+ switchTab:function(index){
103
+ var me = this,
104
+ $root = me.root(),
105
+ index = $.isNumeric(index) ? index:$.inArray(index, $root.find('.edui-tab-nav .edui-tab-item'));
106
+
107
+ $root.find('.edui-tab-nav .edui-tab-item').removeClass('edui-active').eq(index).addClass('edui-active');
108
+ $root.find('.edui-tab-content .edui-tab-pane').removeClass('edui-active').eq(index).addClass('edui-active');
109
+
110
+ /* 自动长高 */
111
+ me.autoHeight(0);
112
+ },
113
+ autoHeight: function () {
114
+ this.$widget.height(this.root() + 2);
115
+ },
116
+ insertLatex: function (latex) {
117
+ editor.execCommand('formula', latex );
118
+ },
119
+ width: 350,
120
+ height: 400
121
+ });
122
+
123
+ })();
124
+
@@ -0,0 +1,42 @@
1
+ .edui-dialog-image .edui-image-wrapper{font-size: 12px;margin: 15px;}
2
+
3
+ /*upload*/
4
+ .edui-dialog-image .edui-image-upload1{position: absolute;top:50%;left:50%;width:44px;height:38px;margin-top:-19px; margin-left: -22px;}
5
+ .edui-dialog-image .edui-image-upload2{position:relative;float:left;width:120px;height:120px;margin:5px 0 0 5px;}
6
+
7
+ .edui-dialog-image .edui-image-form{position: absolute;left: 0px;top: 0px;width: 100%;height: 100%;opacity: 0;cursor: pointer;}
8
+ .edui-dialog-image .edui-image-form .edui-image-file{width: 100%;height:100%;filter: alpha(opacity=0)}
9
+
10
+ .edui-dialog-image .edui-image-upload1 .edui-image-icon{display: inline-block;width:44px;height:38px;background-image: url('images/upload1.png')}
11
+ .edui-dialog-image .edui-image-upload1 .edui-image-icon.hover{background-position: -50px 0;}
12
+ .edui-dialog-image .edui-image-upload2 .edui-image-icon{display: inline-block;width:120px;height:120px;background-image: url('images/upload2.png')}
13
+
14
+ .edui-dialog-image .edui-image-dragTip{position: absolute;display:none;top:50%;left:50%;margin-top:30px;margin-left: -60px;
15
+ color: #222;font-size:14px;text-shadow: 0px 2px 3px #555;}
16
+
17
+ .edui-dialog-image .edui-image-content{height:330px;width:100%;position: relative;}
18
+
19
+ .edui-dialog-image .edui-image-mask{display: none;position: absolute;top:0;left:0;width: 100%; height: 100%;background-color:#fff;
20
+ text-align: center;line-height:300px;color:#000;font-size:14px;font-weight:bold;opacity: 0.6;filter: alpha(opacity=60);}
21
+ .edui-dialog-image .edui-image-mask.edui-active{display: block;}
22
+
23
+ /*network*/
24
+ .edui-dialog-image .edui-image-searchBar{margin: 10px;}
25
+ .edui-dialog-image .edui-image-searchBar .edui-image-searchTxt{display: inline-block !important;*display: inline !important;*zoom:1;width:400px; border: 1px solid #c5d2ff; height: 20px; line-height: 18px; font-size: 14px; padding: 3px; margin: 0;outline:0;}
26
+ .edui-dialog-image .edui-image-searchBar .edui-image-searchAdd{display: inline-block !important;*display: inline !important;*zoom:1;
27
+ width:60px; text-align:center;height: 25px;text-align: center;line-height: 25px;
28
+ background-color: #ffffff;padding: 0; border: 1px solid #ababab;margin-left: 20px;cursor: pointer;
29
+ }
30
+ .edui-dialog-image .edui-image-searchBar .edui-image-searchAdd.hover{
31
+ background-color: #d5e1f2;
32
+ padding: 0;
33
+ border: 1px solid #a3bde3;
34
+ }
35
+ .edui-dialog-image .edui-image-searchRes{height:280px;overflow:auto;}
36
+
37
+
38
+ /*common*/
39
+ .edui-dialog-image .edui-image-item{position:relative;float:left;width:120px;height:120px;border: 1px solid #CCC;cursor: default;margin: 5px 0 0 5px;}
40
+ .edui-dialog-image .edui-image-item .edui-image-pic{position: absolute;left:-9999px;}
41
+ .edui-dialog-image .edui-image-item .edui-image-close{position:absolute;right:0;background: url('images/close.png');width:17px;height:17px;cursor:pointer;z-index:1}
42
+ .edui-dialog-image .edui-image-item.hover .edui-image-close{display: block;}
@@ -0,0 +1,445 @@
1
+ (function () {
2
+
3
+ var utils = UM.utils,
4
+ browser = UM.browser,
5
+ Base = {
6
+ checkURL: function (url) {
7
+ if(!url) return false;
8
+ url = utils.trim(url);
9
+ if (url.length <= 0) {
10
+ return false;
11
+ }
12
+ if (url.search(/http:\/\/|https:\/\//) !== 0) {
13
+ url += 'http://';
14
+ }
15
+
16
+ url=url.replace(/\?[\s\S]*$/,"");
17
+
18
+ if (!/(.gif|.jpg|.jpeg|.png)$/i.test(url)) {
19
+ return false;
20
+ }
21
+ return url;
22
+ },
23
+ getAllPic: function (sel, $w, editor) {
24
+ var me = this,
25
+ arr = [],
26
+ $imgs = $(sel, $w);
27
+
28
+ $.each($imgs, function (index, node) {
29
+ $(node).removeAttr("width").removeAttr("height");
30
+
31
+ // if (node.width > editor.options.initialFrameWidth) {
32
+ // me.scale(node, editor.options.initialFrameWidth -
33
+ // parseInt($(editor.body).css("padding-left")) -
34
+ // parseInt($(editor.body).css("padding-right")));
35
+ // }
36
+
37
+ return arr.push({
38
+ _src: node.src,
39
+ src: node.src
40
+ });
41
+ });
42
+
43
+ return arr;
44
+ },
45
+ scale: function (img, max, oWidth, oHeight) {
46
+ var width = 0, height = 0, percent, ow = img.width || oWidth, oh = img.height || oHeight;
47
+ if (ow > max || oh > max) {
48
+ if (ow >= oh) {
49
+ if (width = ow - max) {
50
+ percent = (width / ow).toFixed(2);
51
+ img.height = oh - oh * percent;
52
+ img.width = max;
53
+ }
54
+ } else {
55
+ if (height = oh - max) {
56
+ percent = (height / oh).toFixed(2);
57
+ img.width = ow - ow * percent;
58
+ img.height = max;
59
+ }
60
+ }
61
+ }
62
+
63
+ return this;
64
+ },
65
+ close: function ($img) {
66
+
67
+ $img.css({
68
+ top: ($img.parent().height() - $img.height()) / 2,
69
+ left: ($img.parent().width()-$img.width())/2
70
+ }).prev().on("click",function () {
71
+
72
+ if ( $(this).parent().remove().hasClass("edui-image-upload-item") ) {
73
+ //显示图片计数-1
74
+ Upload.showCount--;
75
+ Upload.updateView();
76
+ }
77
+
78
+ });
79
+
80
+ return this;
81
+ },
82
+ createImgBase64: function (img, file, $w) {
83
+ if (browser.webkit) {
84
+ //Chrome8+
85
+ img.src = window.webkitURL.createObjectURL(file);
86
+ } else if (browser.gecko) {
87
+ //FF4+
88
+ img.src = window.URL.createObjectURL(file);
89
+ } else {
90
+ //实例化file reader对象
91
+ var reader = new FileReader();
92
+ reader.onload = function (e) {
93
+ img.src = this.result;
94
+ $w.append(img);
95
+ };
96
+ reader.readAsDataURL(file);
97
+ }
98
+ },
99
+ callback: function (editor, $w, url, state) {
100
+
101
+ if (state == "SUCCESS") {
102
+ //显示图片计数+1
103
+ Upload.showCount++;
104
+ var $img = $("<img src='" + editor.options.imagePath + url + "' class='edui-image-pic' />"),
105
+ $item = $("<div class='edui-image-item edui-image-upload-item'><div class='edui-image-close'></div></div>").append($img);
106
+
107
+ if ($(".edui-image-upload2", $w).length < 1) {
108
+ $(".edui-image-content", $w).append($item);
109
+
110
+ Upload.render(".edui-image-content", 2)
111
+ .config(".edui-image-upload2");
112
+ } else {
113
+ $(".edui-image-upload2", $w).before($item).show();
114
+ }
115
+
116
+ $img.on("load", function () {
117
+ Base.scale(this, 120);
118
+ Base.close($(this));
119
+ $(".edui-image-content", $w).focus();
120
+ });
121
+
122
+ } else {
123
+ currentDialog.showTip( state );
124
+ window.setTimeout( function () {
125
+
126
+ currentDialog.hideTip();
127
+
128
+ }, 3000 );
129
+ }
130
+
131
+ Upload.toggleMask();
132
+
133
+ }
134
+ };
135
+
136
+ /*
137
+ * 本地上传
138
+ * */
139
+ var Upload = {
140
+ showCount: 0,
141
+ uploadTpl: '<div class="edui-image-upload%%">' +
142
+ '<span class="edui-image-icon"></span>' +
143
+ '<form class="edui-image-form" method="post" enctype="multipart/form-data" target="up">' +
144
+ '<input style=\"filter: alpha(opacity=0);\" class="edui-image-file" type="file" hidefocus name="upfile" accept="image/gif,image/jpeg,image/png,image/jpg,image/bmp"/>' +
145
+ '</form>' +
146
+
147
+ '</div>',
148
+ init: function (editor, $w) {
149
+ var me = this;
150
+
151
+ me.editor = editor;
152
+ me.dialog = $w;
153
+ me.render(".edui-image-local", 1);
154
+ me.config(".edui-image-upload1");
155
+ me.submit();
156
+ me.drag();
157
+
158
+ $(".edui-image-upload1").hover(function () {
159
+ $(".edui-image-icon", this).toggleClass("hover");
160
+ });
161
+
162
+ if (!(UM.browser.ie && UM.browser.version <= 9)) {
163
+ $(".edui-image-dragTip", me.dialog).css("display", "block");
164
+ }
165
+
166
+
167
+ return me;
168
+ },
169
+ render: function (sel, t) {
170
+ var me = this;
171
+
172
+ $(sel, me.dialog).append($(me.uploadTpl.replace(/%%/g, t)));
173
+
174
+ return me;
175
+ },
176
+ config: function (sel) {
177
+ var me = this,
178
+ url=me.editor.options.imageUrl;
179
+
180
+ url=url + (url.indexOf("?") == -1 ? "?" : "&") + "editorid="+me.editor.id;//初始form提交地址;
181
+
182
+ $("form", $(sel, me.dialog)).attr("action", url);
183
+
184
+ return me;
185
+ },
186
+ uploadComplete: function(r){
187
+ var me = this;
188
+ try{
189
+ var json = eval('('+r+')');
190
+ Base.callback(me.editor, me.dialog, json.url, json.state);
191
+ }catch (e){
192
+ var lang = me.editor.getLang('image');
193
+ Base.callback(me.editor, me.dialog, '', (lang && lang.uploadError) || 'Error!');
194
+ }
195
+ },
196
+ submit: function (callback) {
197
+
198
+ var me = this,
199
+ input = $( '<input style="filter: alpha(opacity=0);" class="edui-image-file" type="file" hidefocus="" name="upfile" accept="image/gif,image/jpeg,image/png,image/jpg,image/bmp">'),
200
+ input = input[0];
201
+
202
+ $(me.dialog).delegate( ".edui-image-file", "change", function ( e ) {
203
+
204
+ if ( !this.parentNode ) {
205
+ return;
206
+ }
207
+
208
+ $('<iframe name="up" style="display: none"></iframe>').insertBefore(me.dialog).on('load', function(){
209
+ var r = this.contentWindow.document.body.innerHTML;
210
+ if(r == '')return;
211
+ me.uploadComplete(r);
212
+ $(this).unbind('load');
213
+ $(this).remove();
214
+
215
+ });
216
+
217
+ $(this).parent()[0].submit();
218
+ Upload.updateInput( input );
219
+ me.toggleMask("Loading....");
220
+ callback && callback();
221
+
222
+ });
223
+
224
+ return me;
225
+ },
226
+ //更新input
227
+ updateInput: function ( inputField ) {
228
+
229
+ $( ".edui-image-file", this.dialog ).each( function ( index, ele ) {
230
+
231
+ ele.parentNode.replaceChild( inputField.cloneNode( true ), ele );
232
+
233
+ } );
234
+
235
+ },
236
+ //更新上传框
237
+ updateView: function () {
238
+
239
+ if ( Upload.showCount !== 0 ) {
240
+ return;
241
+ }
242
+
243
+ $(".edui-image-upload2", this.dialog).hide();
244
+ $(".edui-image-dragTip", this.dialog).show();
245
+ $(".edui-image-upload1", this.dialog).show();
246
+
247
+ },
248
+ drag: function () {
249
+ var me = this;
250
+ //做拽上传的支持
251
+ if (!UM.browser.ie9below) {
252
+ me.dialog.find('.edui-image-content').on('drop',function (e) {
253
+
254
+ //获取文件列表
255
+ var fileList = e.originalEvent.dataTransfer.files;
256
+ var img = document.createElement('img');
257
+ var hasImg = false;
258
+ $.each(fileList, function (i, f) {
259
+ if (/^image/.test(f.type)) {
260
+ //创建图片的base64
261
+ Base.createImgBase64(img, f, me.dialog);
262
+
263
+ var xhr = new XMLHttpRequest();
264
+ xhr.open("post", me.editor.getOpt('imageUrl') + "?type=ajax", true);
265
+ xhr.setRequestHeader("X-Requested-With", "XMLHttpRequest");
266
+
267
+ //模拟数据
268
+ var fd = new FormData();
269
+ fd.append(me.editor.getOpt('imageFieldName'), f);
270
+
271
+ xhr.send(fd);
272
+ xhr.addEventListener('load', function (e) {
273
+ var r = e.target.response, json;
274
+ me.uploadComplete(r);
275
+ if (i == fileList.length - 1) {
276
+ $(img).remove()
277
+ }
278
+ });
279
+ hasImg = true;
280
+ }
281
+ });
282
+ if (hasImg) {
283
+ e.preventDefault();
284
+ me.toggleMask("Loading....");
285
+ }
286
+
287
+ }).on('dragover', function (e) {
288
+ e.preventDefault();
289
+ });
290
+ }
291
+ },
292
+ toggleMask: function (html) {
293
+ var me = this;
294
+
295
+ var $mask = $(".edui-image-mask", me.dialog);
296
+ if (html) {
297
+ if (!(UM.browser.ie && UM.browser.version <= 9)) {
298
+ $(".edui-image-dragTip", me.dialog).css( "display", "none" );
299
+ }
300
+ $(".edui-image-upload1", me.dialog).css( "display", "none" );
301
+ $mask.addClass("edui-active").html(html);
302
+ } else {
303
+
304
+ $mask.removeClass("edui-active").html();
305
+
306
+ if ( Upload.showCount > 0 ) {
307
+ return me;
308
+ }
309
+
310
+ if (!(UM.browser.ie && UM.browser.version <= 9) ){
311
+ $(".edui-image-dragTip", me.dialog).css("display", "block");
312
+ }
313
+ $(".edui-image-upload1", me.dialog).css( "display", "block" );
314
+ }
315
+
316
+ return me;
317
+ }
318
+ };
319
+
320
+ /*
321
+ * 网络图片
322
+ * */
323
+ var NetWork = {
324
+ init: function (editor, $w) {
325
+ var me = this;
326
+
327
+ me.editor = editor;
328
+ me.dialog = $w;
329
+
330
+ me.initEvt();
331
+ },
332
+ initEvt: function () {
333
+ var me = this,
334
+ url,
335
+ $ele = $(".edui-image-searchTxt", me.dialog);
336
+
337
+ $(".edui-image-searchAdd", me.dialog).on("click", function () {
338
+ url = Base.checkURL($ele.val());
339
+
340
+ if (url) {
341
+
342
+ $("<img src='" + url + "' class='edui-image-pic' />").on("load", function () {
343
+
344
+
345
+
346
+ var $item = $("<div class='edui-image-item'><div class='edui-image-close'></div></div>").append(this);
347
+
348
+ $(".edui-image-searchRes", me.dialog).append($item);
349
+
350
+ Base.scale(this, 120);
351
+
352
+ $item.width($(this).width());
353
+
354
+ Base.close($(this));
355
+
356
+ $ele.val("");
357
+ });
358
+ }
359
+ })
360
+ .hover(function () {
361
+ $(this).toggleClass("hover");
362
+ });
363
+ }
364
+ };
365
+
366
+ var $tab = null,
367
+ currentDialog = null;
368
+
369
+ UM.registerWidget('image', {
370
+ tpl: "<link rel=\"stylesheet\" type=\"text/css\" href=\"<%=image_url%>image.css\">" +
371
+ "<div class=\"edui-image-wrapper\">" +
372
+ "<ul class=\"edui-tab-nav\">" +
373
+ "<li class=\"edui-tab-item edui-active\"><a data-context=\".edui-image-local\" class=\"edui-tab-text\"><%=lang_tab_local%></a></li>" +
374
+ "<li class=\"edui-tab-item\"><a data-context=\".edui-image-JimgSearch\" class=\"edui-tab-text\"><%=lang_tab_imgSearch%></a></li>" +
375
+ "</ul>" +
376
+ "<div class=\"edui-tab-content\">" +
377
+ "<div class=\"edui-image-local edui-tab-pane edui-active\">" +
378
+ "<div class=\"edui-image-content\"></div>" +
379
+ "<div class=\"edui-image-mask\"></div>" +
380
+ "<div class=\"edui-image-dragTip\"><%=lang_input_dragTip%></div>" +
381
+ "</div>" +
382
+ "<div class=\"edui-image-JimgSearch edui-tab-pane\">" +
383
+ "<div class=\"edui-image-searchBar\">" +
384
+ "<table><tr><td><input class=\"edui-image-searchTxt\" type=\"text\"></td>" +
385
+ "<td><div class=\"edui-image-searchAdd\"><%=lang_btn_add%></div></td></tr></table>" +
386
+ "</div>" +
387
+ "<div class=\"edui-image-searchRes\"></div>" +
388
+ "</div>" +
389
+ "</div>" +
390
+ "</div>",
391
+ initContent: function (editor, $dialog) {
392
+ var lang = editor.getLang('image')["static"],
393
+ opt = $.extend({}, lang, {
394
+ image_url: UMEDITOR_CONFIG.UMEDITOR_HOME_URL + 'dialogs/image/'
395
+ });
396
+
397
+ Upload.showCount = 0;
398
+
399
+ if (lang) {
400
+ var html = $.parseTmpl(this.tpl, opt);
401
+ }
402
+
403
+ currentDialog = $dialog.edui();
404
+
405
+ this.root().html(html);
406
+
407
+ },
408
+ initEvent: function (editor, $w) {
409
+ $tab = $.eduitab({selector: ".edui-image-wrapper"})
410
+ .edui().on("beforeshow", function (e) {
411
+ e.stopPropagation();
412
+ });
413
+
414
+ Upload.init(editor, $w);
415
+
416
+ NetWork.init(editor, $w);
417
+ },
418
+ buttons: {
419
+ 'ok': {
420
+ exec: function (editor, $w) {
421
+ var sel = "",
422
+ index = $tab.activate();
423
+
424
+ if (index == 0) {
425
+ sel = ".edui-image-content .edui-image-pic";
426
+ } else if (index == 1) {
427
+ sel = ".edui-image-searchRes .edui-image-pic";
428
+ }
429
+
430
+ var list = Base.getAllPic(sel, $w, editor);
431
+
432
+ if (index != -1) {
433
+ editor.execCommand('insertimage', list);
434
+ }
435
+ }
436
+ },
437
+ 'cancel': {}
438
+ },
439
+ width: 700,
440
+ height: 408
441
+ }, function (editor, $w, url, state) {
442
+ Base.callback(editor, $w, url, state)
443
+ })
444
+ })();
445
+