baidu_umeditor_rails 0.0.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -0
- data/.gitignore +15 -0
- data/Gemfile +4 -0
- data/LICENSE.txt +22 -0
- data/README.md +31 -0
- data/Rakefile +2 -0
- data/app/assets/javascripts/umeditor.js +2 -0
- data/baidu_umeditor_rails.gemspec +23 -0
- data/lib/baidu_umeditor_rails/asset_installer.rb +64 -0
- data/lib/baidu_umeditor_rails/asset_manifest.rb +120 -0
- data/lib/baidu_umeditor_rails/engine.rb +20 -0
- data/lib/baidu_umeditor_rails/version.rb +4 -0
- data/lib/baidu_umeditor_rails.rb +3 -0
- data/lib/tasks/baidu_umeditor_rails_tasks.rake +15 -0
- data/vendor/assets/javascripts/umeditor/dialogs/emotion/emotion.css +87 -0
- data/vendor/assets/javascripts/umeditor/dialogs/emotion/emotion.js +272 -0
- data/vendor/assets/javascripts/umeditor/dialogs/emotion/images/0.gif +0 -0
- data/vendor/assets/javascripts/umeditor/dialogs/emotion/images/bface.gif +0 -0
- data/vendor/assets/javascripts/umeditor/dialogs/emotion/images/cface.gif +0 -0
- data/vendor/assets/javascripts/umeditor/dialogs/emotion/images/fface.gif +0 -0
- data/vendor/assets/javascripts/umeditor/dialogs/emotion/images/jxface2.gif +0 -0
- data/vendor/assets/javascripts/umeditor/dialogs/emotion/images/neweditor-tab-bg.png +0 -0
- data/vendor/assets/javascripts/umeditor/dialogs/emotion/images/tface.gif +0 -0
- data/vendor/assets/javascripts/umeditor/dialogs/emotion/images/wface.gif +0 -0
- data/vendor/assets/javascripts/umeditor/dialogs/emotion/images/yface.gif +0 -0
- data/vendor/assets/javascripts/umeditor/dialogs/formula/formula.css +32 -0
- data/vendor/assets/javascripts/umeditor/dialogs/formula/formula.html +212 -0
- data/vendor/assets/javascripts/umeditor/dialogs/formula/formula.js +124 -0
- data/vendor/assets/javascripts/umeditor/dialogs/formula/images/formula.png +0 -0
- data/vendor/assets/javascripts/umeditor/dialogs/image/image.css +42 -0
- data/vendor/assets/javascripts/umeditor/dialogs/image/image.js +445 -0
- data/vendor/assets/javascripts/umeditor/dialogs/image/images/close.png +0 -0
- data/vendor/assets/javascripts/umeditor/dialogs/image/images/upload1.png +0 -0
- data/vendor/assets/javascripts/umeditor/dialogs/image/images/upload2.png +0 -0
- data/vendor/assets/javascripts/umeditor/dialogs/link/link.js +73 -0
- data/vendor/assets/javascripts/umeditor/dialogs/map/map.html +148 -0
- data/vendor/assets/javascripts/umeditor/dialogs/map/map.js +263 -0
- data/vendor/assets/javascripts/umeditor/dialogs/video/images/center_focus.jpg +0 -0
- data/vendor/assets/javascripts/umeditor/dialogs/video/images/left_focus.jpg +0 -0
- data/vendor/assets/javascripts/umeditor/dialogs/video/images/none_focus.jpg +0 -0
- data/vendor/assets/javascripts/umeditor/dialogs/video/images/right_focus.jpg +0 -0
- data/vendor/assets/javascripts/umeditor/dialogs/video/video.css +59 -0
- data/vendor/assets/javascripts/umeditor/dialogs/video/video.js +282 -0
- data/vendor/assets/javascripts/umeditor/index.html +277 -0
- data/vendor/assets/javascripts/umeditor/lang/en/en.js +150 -0
- data/vendor/assets/javascripts/umeditor/lang/en/images/addimage.png +0 -0
- data/vendor/assets/javascripts/umeditor/lang/en/images/alldeletebtnhoverskin.png +0 -0
- data/vendor/assets/javascripts/umeditor/lang/en/images/alldeletebtnupskin.png +0 -0
- data/vendor/assets/javascripts/umeditor/lang/en/images/background.png +0 -0
- data/vendor/assets/javascripts/umeditor/lang/en/images/button.png +0 -0
- data/vendor/assets/javascripts/umeditor/lang/en/images/copy.png +0 -0
- data/vendor/assets/javascripts/umeditor/lang/en/images/deletedisable.png +0 -0
- data/vendor/assets/javascripts/umeditor/lang/en/images/deleteenable.png +0 -0
- data/vendor/assets/javascripts/umeditor/lang/en/images/imglabel.png +0 -0
- data/vendor/assets/javascripts/umeditor/lang/en/images/listbackground.png +0 -0
- data/vendor/assets/javascripts/umeditor/lang/en/images/localimage.png +0 -0
- data/vendor/assets/javascripts/umeditor/lang/en/images/music.png +0 -0
- data/vendor/assets/javascripts/umeditor/lang/en/images/rotateleftdisable.png +0 -0
- data/vendor/assets/javascripts/umeditor/lang/en/images/rotateleftenable.png +0 -0
- data/vendor/assets/javascripts/umeditor/lang/en/images/rotaterightdisable.png +0 -0
- data/vendor/assets/javascripts/umeditor/lang/en/images/rotaterightenable.png +0 -0
- data/vendor/assets/javascripts/umeditor/lang/en/images/upload.png +0 -0
- data/vendor/assets/javascripts/umeditor/lang/zh-cn/images/copy.png +0 -0
- data/vendor/assets/javascripts/umeditor/lang/zh-cn/images/imglabel.png +0 -0
- data/vendor/assets/javascripts/umeditor/lang/zh-cn/images/localimage.png +0 -0
- data/vendor/assets/javascripts/umeditor/lang/zh-cn/images/music.png +0 -0
- data/vendor/assets/javascripts/umeditor/lang/zh-cn/images/upload.png +0 -0
- data/vendor/assets/javascripts/umeditor/lang/zh-cn/zh-cn.js +150 -0
- data/vendor/assets/javascripts/umeditor/themes/default/css/umeditor.css +773 -0
- data/vendor/assets/javascripts/umeditor/themes/default/css/umeditor.min.css +8 -0
- data/vendor/assets/javascripts/umeditor/themes/default/images/caret.png +0 -0
- data/vendor/assets/javascripts/umeditor/themes/default/images/close.png +0 -0
- data/vendor/assets/javascripts/umeditor/themes/default/images/icons.gif +0 -0
- data/vendor/assets/javascripts/umeditor/themes/default/images/icons.png +0 -0
- data/vendor/assets/javascripts/umeditor/themes/default/images/ok.gif +0 -0
- data/vendor/assets/javascripts/umeditor/themes/default/images/pop-bg.png +0 -0
- data/vendor/assets/javascripts/umeditor/themes/default/images/spacer.gif +0 -0
- data/vendor/assets/javascripts/umeditor/themes/default/images/videologo.gif +0 -0
- data/vendor/assets/javascripts/umeditor/third-party/jquery.min.js +6 -0
- data/vendor/assets/javascripts/umeditor/third-party/mathquill/font/Symbola.eot +0 -0
- data/vendor/assets/javascripts/umeditor/third-party/mathquill/font/Symbola.otf +0 -0
- data/vendor/assets/javascripts/umeditor/third-party/mathquill/font/Symbola.svg +5102 -0
- data/vendor/assets/javascripts/umeditor/third-party/mathquill/font/Symbola.ttf +0 -0
- data/vendor/assets/javascripts/umeditor/third-party/mathquill/font/Symbola.woff +0 -0
- data/vendor/assets/javascripts/umeditor/third-party/mathquill/font/stixgeneral-bundle/STIXFontLicense2010.txt +103 -0
- data/vendor/assets/javascripts/umeditor/third-party/mathquill/font/stixgeneral-bundle/stixgeneral-webfont.eot +0 -0
- data/vendor/assets/javascripts/umeditor/third-party/mathquill/font/stixgeneral-bundle/stixgeneral-webfont.svg +3318 -0
- data/vendor/assets/javascripts/umeditor/third-party/mathquill/font/stixgeneral-bundle/stixgeneral-webfont.ttf +0 -0
- data/vendor/assets/javascripts/umeditor/third-party/mathquill/font/stixgeneral-bundle/stixgeneral-webfont.woff +0 -0
- data/vendor/assets/javascripts/umeditor/third-party/mathquill/font/stixgeneral-bundle/stixgeneralbol-webfont.eot +0 -0
- data/vendor/assets/javascripts/umeditor/third-party/mathquill/font/stixgeneral-bundle/stixgeneralbol-webfont.svg +1738 -0
- data/vendor/assets/javascripts/umeditor/third-party/mathquill/font/stixgeneral-bundle/stixgeneralbol-webfont.ttf +0 -0
- data/vendor/assets/javascripts/umeditor/third-party/mathquill/font/stixgeneral-bundle/stixgeneralbol-webfont.woff +0 -0
- data/vendor/assets/javascripts/umeditor/third-party/mathquill/font/stixgeneral-bundle/stixgeneralbolita-webfont.eot +0 -0
- data/vendor/assets/javascripts/umeditor/third-party/mathquill/font/stixgeneral-bundle/stixgeneralbolita-webfont.svg +1137 -0
- data/vendor/assets/javascripts/umeditor/third-party/mathquill/font/stixgeneral-bundle/stixgeneralbolita-webfont.ttf +0 -0
- data/vendor/assets/javascripts/umeditor/third-party/mathquill/font/stixgeneral-bundle/stixgeneralbolita-webfont.woff +0 -0
- data/vendor/assets/javascripts/umeditor/third-party/mathquill/font/stixgeneral-bundle/stixgeneralitalic-webfont.eot +0 -0
- data/vendor/assets/javascripts/umeditor/third-party/mathquill/font/stixgeneral-bundle/stixgeneralitalic-webfont.svg +1089 -0
- data/vendor/assets/javascripts/umeditor/third-party/mathquill/font/stixgeneral-bundle/stixgeneralitalic-webfont.ttf +0 -0
- data/vendor/assets/javascripts/umeditor/third-party/mathquill/font/stixgeneral-bundle/stixgeneralitalic-webfont.woff +0 -0
- data/vendor/assets/javascripts/umeditor/third-party/mathquill/mathquill.css +357 -0
- data/vendor/assets/javascripts/umeditor/third-party/mathquill/mathquill.js +3888 -0
- data/vendor/assets/javascripts/umeditor/third-party/mathquill/mathquill.min.js +2 -0
- data/vendor/assets/javascripts/umeditor/umeditor.config.js +249 -0
- data/vendor/assets/javascripts/umeditor/umeditor.js +10923 -0
- data/vendor/assets/javascripts/umeditor/umeditor.min.js +264 -0
- 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
|
+
|