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,59 @@
|
|
1
|
+
@charset "utf-8";
|
2
|
+
.edui-dialog-video .edui-video-wrapper{ width: 570px;_width:575px;margin: 10px auto; zoom:1;position: relative}
|
3
|
+
.edui-dialog-video .edui-video-tabbody{height:335px;}
|
4
|
+
.edui-dialog-video .edui-video-panel { position: absolute;width:100%; height:100%;background: #fff;}
|
5
|
+
.edui-dialog-video .edui-video-panel table td{vertical-align: middle;}
|
6
|
+
.edui-dialog-video #eduiVideoUrl {
|
7
|
+
width: 470px;
|
8
|
+
height: 21px;
|
9
|
+
line-height: 21px;
|
10
|
+
margin: 8px 5px;
|
11
|
+
background: #FFF;
|
12
|
+
border: 1px solid #d7d7d7;
|
13
|
+
}
|
14
|
+
.edui-dialog-video #eduiVideoSearchTxt{margin-left:15px;background: #FFF;width:200px;height:21px;line-height:21px;border: 1px solid #d7d7d7;}
|
15
|
+
.edui-dialog-video #searchList{width: 570px;overflow: auto;zoom:1;height: 270px;}
|
16
|
+
.edui-dialog-video #searchList div{float: left;width: 120px;height: 135px;margin: 5px 15px;}
|
17
|
+
.edui-dialog-video #searchList img{margin: 2px 8px;cursor: pointer;border: 2px solid #fff} /*不用缩略图*/
|
18
|
+
.edui-dialog-video #searchList p{margin-left: 10px;}
|
19
|
+
.edui-dialog-video #eduiVideoType{
|
20
|
+
width: 65px;
|
21
|
+
height: 23px;
|
22
|
+
line-height: 22px;
|
23
|
+
border: 1px solid #d7d7d7;
|
24
|
+
}
|
25
|
+
.edui-dialog-video #eduiVideoSearchBtn,.edui-dialog-video #eduiVideoSearchReset{
|
26
|
+
/*width: 80px;*/
|
27
|
+
height: 25px;
|
28
|
+
line-height: 25px;
|
29
|
+
background: #eee;
|
30
|
+
border: 1px solid #d7d7d7;
|
31
|
+
cursor: pointer;
|
32
|
+
padding: 0 5px;
|
33
|
+
}
|
34
|
+
|
35
|
+
|
36
|
+
|
37
|
+
.edui-dialog-video #eduiVideoPreview{width: 420px; margin-left: 10px; _margin-left:5px; height: 280px;background-color: #ddd;float: left}
|
38
|
+
.edui-dialog-video #eduiVideoInfo {width: 120px;float: left;margin-left: 10px;_margin-left:7px;}
|
39
|
+
.edui-dialog-video .edui-video-wrapper fieldset{
|
40
|
+
border: 1px solid #ddd;
|
41
|
+
padding-left: 5px;
|
42
|
+
margin-bottom: 20px;
|
43
|
+
padding-bottom: 5px;
|
44
|
+
width: 115px;
|
45
|
+
}
|
46
|
+
.edui-dialog-video .edui-video-wrapper fieldset legend{font-weight: bold;}
|
47
|
+
.edui-dialog-video .edui-video-wrapper fieldset p{line-height: 30px;}
|
48
|
+
.edui-dialog-video .edui-video-wrapper fieldset input.edui-video-txt{
|
49
|
+
width: 65px;
|
50
|
+
height: 21px;
|
51
|
+
line-height: 21px;
|
52
|
+
margin: 8px 5px;
|
53
|
+
background: #FFF;
|
54
|
+
border: 1px solid #d7d7d7;
|
55
|
+
}
|
56
|
+
.edui-dialog-video .edui-video-wrapper label.edui-video-url{font-weight: bold;margin-left: 5px;color: #06c;}
|
57
|
+
.edui-dialog-video #eduiVideoFloat div{cursor:pointer;opacity: 0.5;filter: alpha(opacity = 50);margin:9px;_margin:5px;width:38px;height:36px;float:left;}
|
58
|
+
.edui-dialog-video #eduiVideoFloat .edui-video-focus{opacity: 1;filter: alpha(opacity = 100)}
|
59
|
+
.edui-dialog-video .edui-video-wrapper span.edui-video-view{display: inline-block;width: 30px;float: right;cursor: pointer;color: blue}
|
@@ -0,0 +1,282 @@
|
|
1
|
+
|
2
|
+
(function(){
|
3
|
+
var domUtils = UM.dom.domUtils;
|
4
|
+
var widgetName = 'video';
|
5
|
+
|
6
|
+
UM.registerWidget( widgetName,{
|
7
|
+
|
8
|
+
tpl: "<link rel=\"stylesheet\" type=\"text/css\" href=\"<%=video_url%>video.css\" />" +
|
9
|
+
"<div class=\"edui-video-wrapper\">" +
|
10
|
+
"<div id=\"eduiVideoTab\">" +
|
11
|
+
"<div id=\"eduiVideoTabHeads\" class=\"edui-video-tabhead\">" +
|
12
|
+
"<span tabSrc=\"video\" class=\"edui-video-focus\"><%=lang_tab_insertV%></span>" +
|
13
|
+
"</div>" +
|
14
|
+
"<div id=\"eduiVideoTabBodys\" class=\"edui-video-tabbody\">" +
|
15
|
+
"<div id=\"eduiVideoPanel\" class=\"edui-video-panel\">" +
|
16
|
+
"<table><tr><td><label for=\"eduiVideoUrl\" class=\"edui-video-url\"><%=lang_video_url%></label></td><td><input id=\"eduiVideoUrl\" type=\"text\"></td></tr></table>" +
|
17
|
+
"<div id=\"eduiVideoPreview\"></div>" +
|
18
|
+
"<div id=\"eduiVideoInfo\">" +
|
19
|
+
"<fieldset>" +
|
20
|
+
"<legend><%=lang_video_size%></legend>" +
|
21
|
+
"<table>" +
|
22
|
+
"<tr><td><label for=\"eduiVideoWidth\"><%=lang_videoW%></label></td><td><input class=\"edui-video-txt\" id=\"eduiVideoWidth\" type=\"text\"/></td></tr>" +
|
23
|
+
"<tr><td><label for=\"eduiVideoHeight\"><%=lang_videoH%></label></td><td><input class=\"edui-video-txt\" id=\"eduiVideoHeight\" type=\"text\"/></td></tr>" +
|
24
|
+
"</table>" +
|
25
|
+
"</fieldset>" +
|
26
|
+
"<fieldset>" +
|
27
|
+
"<legend><%=lang_alignment%></legend>" +
|
28
|
+
"<div id=\"eduiVideoFloat\"></div>" +
|
29
|
+
"</fieldset>" +
|
30
|
+
"</div>" +
|
31
|
+
"</div>" +
|
32
|
+
"</div>" +
|
33
|
+
"</div>" +
|
34
|
+
"</div>",
|
35
|
+
initContent:function( editor, $widget ){
|
36
|
+
|
37
|
+
var me = this,
|
38
|
+
lang = editor.getLang( widgetName),
|
39
|
+
video_url = UMEDITOR_CONFIG.UMEDITOR_HOME_URL + 'dialogs/video/';
|
40
|
+
|
41
|
+
me.lang = lang;
|
42
|
+
me.editor = editor;
|
43
|
+
me.$widget = $widget;
|
44
|
+
me.root().html( $.parseTmpl( me.tpl, $.extend( { video_url: video_url }, lang['static'] ) ) );
|
45
|
+
|
46
|
+
me.initController( lang );
|
47
|
+
|
48
|
+
},
|
49
|
+
initEvent:function(){
|
50
|
+
|
51
|
+
var me = this,
|
52
|
+
url = $("#eduiVideoUrl", me.$widget)[0];
|
53
|
+
|
54
|
+
if( 'oninput' in url ) {
|
55
|
+
url.oninput = function(){
|
56
|
+
me.createPreviewVideo( this.value );
|
57
|
+
};
|
58
|
+
} else {
|
59
|
+
url.onpropertychange = function () {
|
60
|
+
me.createPreviewVideo( this.value );
|
61
|
+
}
|
62
|
+
}
|
63
|
+
|
64
|
+
},
|
65
|
+
initController: function( lang ){
|
66
|
+
|
67
|
+
var me = this,
|
68
|
+
img = me.editor.selection.getRange().getClosedNode(),
|
69
|
+
url;
|
70
|
+
|
71
|
+
me.createAlignButton( ["eduiVideoFloat"] );
|
72
|
+
|
73
|
+
//编辑视频时初始化相关信息
|
74
|
+
if(img && img.className == "edui-faked-video"){
|
75
|
+
$("#eduiVideoUrl", me.$widget)[0].value = url = img.getAttribute("_url");
|
76
|
+
$("#eduiVideoWidth", me.$widget)[0].value = img.width;
|
77
|
+
$("#eduiVideoHeight", me.$widget)[0].value = img.height;
|
78
|
+
var align = domUtils.getComputedStyle(img,"float"),
|
79
|
+
parentAlign = domUtils.getComputedStyle(img.parentNode,"text-align");
|
80
|
+
me.updateAlignButton(parentAlign==="center"?"center":align);
|
81
|
+
}
|
82
|
+
me.createPreviewVideo(url);
|
83
|
+
|
84
|
+
},
|
85
|
+
/**
|
86
|
+
* 根据url生成视频预览
|
87
|
+
*/
|
88
|
+
createPreviewVideo: function(url){
|
89
|
+
|
90
|
+
if ( !url )return;
|
91
|
+
|
92
|
+
var me = this,
|
93
|
+
lang = me.lang,
|
94
|
+
conUrl = me.convert_url(url);
|
95
|
+
|
96
|
+
if(!me.endWith(conUrl,[".swf",".flv",".wmv"])){
|
97
|
+
$("#eduiVideoPreview", me.$widget).html( lang.urlError );
|
98
|
+
return;
|
99
|
+
}
|
100
|
+
$("#eduiVideoPreview", me.$widget)[0].innerHTML = '<embed type="application/x-shockwave-flash" pluginspage="http://www.macromedia.com/go/getflashplayer"' +
|
101
|
+
' src="' + url + '"' +
|
102
|
+
' width="' + 420 + '"' +
|
103
|
+
' height="' + 280 + '"' +
|
104
|
+
' wmode="transparent" play="true" loop="false" menu="false" allowscriptaccess="never" allowfullscreen="true" ></embed>';
|
105
|
+
|
106
|
+
},
|
107
|
+
/**
|
108
|
+
* 将单个视频信息插入编辑器中
|
109
|
+
*/
|
110
|
+
insertSingle: function(){
|
111
|
+
|
112
|
+
var me = this,
|
113
|
+
width = $("#eduiVideoWidth", me.$widget)[0],
|
114
|
+
height = $("#eduiVideoHeight", me.$widget)[0],
|
115
|
+
url=$('#eduiVideoUrl', me.$widget)[0].value,
|
116
|
+
align = this.findFocus("eduiVideoFloat","name");
|
117
|
+
|
118
|
+
if(!url) return false;
|
119
|
+
if ( !me.checkNum( [width, height] ) ) return false;
|
120
|
+
this.editor.execCommand('insertvideo', {
|
121
|
+
url: me.convert_url(url),
|
122
|
+
width: width.value,
|
123
|
+
height: height.value,
|
124
|
+
align: align
|
125
|
+
});
|
126
|
+
|
127
|
+
},
|
128
|
+
/**
|
129
|
+
* URL转换
|
130
|
+
*/
|
131
|
+
convert_url: function(url){
|
132
|
+
if ( !url ) return '';
|
133
|
+
var matches = url.match(/youtu.be\/(\w+)$/) ||
|
134
|
+
url.match(/youtube\.com\/watch\?v=(\w+)/) ||
|
135
|
+
url.match(/youtube.com\/v\/(\w+)/),
|
136
|
+
youku = url.match(/youku\.com\/v_show\/id_(\w+)/),
|
137
|
+
youkuPlay = /player\.youku\.com/ig.test(url);
|
138
|
+
|
139
|
+
if(youkuPlay){
|
140
|
+
url = url.replace(/\?f=.*/, "");
|
141
|
+
} else if (matches){
|
142
|
+
url = "https://www.youtube.com/v/" + matches[1] + "?version=3&feature=player_embedded";
|
143
|
+
}else if(youku){
|
144
|
+
url = "http://player.youku.com/player.php/sid/"+youku[1]+"/v.swf"
|
145
|
+
} else {
|
146
|
+
url = url.replace(/http:\/\/www\.tudou\.com\/programs\/view\/([\w\-]+)\/?/i, "http://www.tudou.com/v/$1")
|
147
|
+
.replace(/http:\/\/www\.youtube\.com\/watch\?v=([\w\-]+)/i, "http://www.youtube.com/v/$1")
|
148
|
+
.replace(/http:\/\/v\.youku\.com\/v_show\/id_([\w\-=]+)\.html/i, "http://player.youku.com/player.php/sid/$1")
|
149
|
+
.replace(/http:\/\/www\.56\.com\/u\d+\/v_([\w\-]+)\.html/i, "http://player.56.com/v_$1.swf")
|
150
|
+
.replace(/http:\/\/www.56.com\/w\d+\/play_album\-aid\-\d+_vid\-([^.]+)\.html/i, "http://player.56.com/v_$1.swf")
|
151
|
+
.replace(/http:\/\/v\.ku6\.com\/.+\/([^.]+)\.html/i, "http://player.ku6.com/refer/$1/v.swf")
|
152
|
+
.replace(/\?f=.*/, "");
|
153
|
+
}
|
154
|
+
return url;
|
155
|
+
},
|
156
|
+
/**
|
157
|
+
* 检测传入的所有input框中输入的长宽是否是正数
|
158
|
+
*/
|
159
|
+
checkNum: function checkNum( nodes ) {
|
160
|
+
|
161
|
+
var me = this;
|
162
|
+
|
163
|
+
for ( var i = 0, ci; ci = nodes[i++]; ) {
|
164
|
+
var value = ci.value;
|
165
|
+
if ( !me.isNumber( value ) && value) {
|
166
|
+
alert( me.lang.numError );
|
167
|
+
ci.value = "";
|
168
|
+
ci.focus();
|
169
|
+
return false;
|
170
|
+
}
|
171
|
+
}
|
172
|
+
return true;
|
173
|
+
},
|
174
|
+
/**
|
175
|
+
* 数字判断
|
176
|
+
* @param value
|
177
|
+
*/
|
178
|
+
isNumber: function( value ) {
|
179
|
+
return /(0|^[1-9]\d*$)/.test( value );
|
180
|
+
},
|
181
|
+
updateAlignButton: function( align ) {
|
182
|
+
var aligns = $( "#eduiVideoFloat", this.$widget )[0].children;
|
183
|
+
|
184
|
+
for ( var i = 0, ci; ci = aligns[i++]; ) {
|
185
|
+
if ( ci.getAttribute( "name" ) == align ) {
|
186
|
+
if ( ci.className !="edui-video-focus" ) {
|
187
|
+
ci.className = "edui-video-focus";
|
188
|
+
}
|
189
|
+
} else {
|
190
|
+
if ( ci.className =="edui-video-focus" ) {
|
191
|
+
ci.className = "";
|
192
|
+
}
|
193
|
+
}
|
194
|
+
}
|
195
|
+
|
196
|
+
},
|
197
|
+
/**
|
198
|
+
* 创建图片浮动选择按钮
|
199
|
+
* @param ids
|
200
|
+
*/
|
201
|
+
createAlignButton: function( ids ) {
|
202
|
+
var lang = this.lang,
|
203
|
+
vidoe_home = UMEDITOR_CONFIG.UMEDITOR_HOME_URL + 'dialogs/video/';
|
204
|
+
|
205
|
+
for ( var i = 0, ci; ci = ids[i++]; ) {
|
206
|
+
var floatContainer = $( "#" + ci, this.$widget ) [0],
|
207
|
+
nameMaps = {"none":lang['default'], "left":lang.floatLeft, "right":lang.floatRight};
|
208
|
+
for ( var j in nameMaps ) {
|
209
|
+
var div = document.createElement( "div" );
|
210
|
+
div.setAttribute( "name", j );
|
211
|
+
if ( j == "none" ) div.className="edui-video-focus";
|
212
|
+
div.style.cssText = "background:url("+ vidoe_home +"images/" + j + "_focus.jpg);";
|
213
|
+
div.setAttribute( "title", nameMaps[j] );
|
214
|
+
floatContainer.appendChild( div );
|
215
|
+
}
|
216
|
+
this.switchSelect( ci );
|
217
|
+
}
|
218
|
+
},
|
219
|
+
/**
|
220
|
+
* 选择切换
|
221
|
+
*/
|
222
|
+
switchSelect: function( selectParentId ) {
|
223
|
+
var selects = $( "#" + selectParentId, this.$widget )[0].children;
|
224
|
+
for ( var i = 0, ci; ci = selects[i++]; ) {
|
225
|
+
$(ci).on("click", function () {
|
226
|
+
for ( var j = 0, cj; cj = selects[j++]; ) {
|
227
|
+
cj.className = "";
|
228
|
+
cj.removeAttribute && cj.removeAttribute( "class" );
|
229
|
+
}
|
230
|
+
this.className = "edui-video-focus";
|
231
|
+
} )
|
232
|
+
}
|
233
|
+
},
|
234
|
+
/**
|
235
|
+
* 找到id下具有focus类的节点并返回该节点下的某个属性
|
236
|
+
* @param id
|
237
|
+
* @param returnProperty
|
238
|
+
*/
|
239
|
+
findFocus: function( id, returnProperty ) {
|
240
|
+
var tabs = $( "#" + id , this.$widget)[0].children,
|
241
|
+
property;
|
242
|
+
for ( var i = 0, ci; ci = tabs[i++]; ) {
|
243
|
+
if ( ci.className=="edui-video-focus" ) {
|
244
|
+
property = ci.getAttribute( returnProperty );
|
245
|
+
break;
|
246
|
+
}
|
247
|
+
}
|
248
|
+
return property;
|
249
|
+
},
|
250
|
+
/**
|
251
|
+
* 末尾字符检测
|
252
|
+
*/
|
253
|
+
endWith: function(str,endStrArr){
|
254
|
+
for(var i=0,len = endStrArr.length;i<len;i++){
|
255
|
+
var tmp = endStrArr[i];
|
256
|
+
if(str.length - tmp.length<0) return false;
|
257
|
+
|
258
|
+
if(str.substring(str.length-tmp.length)==tmp){
|
259
|
+
return true;
|
260
|
+
}
|
261
|
+
}
|
262
|
+
return false;
|
263
|
+
},
|
264
|
+
width:610,
|
265
|
+
height:498,
|
266
|
+
buttons: {
|
267
|
+
ok: {
|
268
|
+
exec: function( editor, $w ){
|
269
|
+
$("#eduiVideoPreview", $w).html("");
|
270
|
+
editor.getWidgetData(widgetName).insertSingle();
|
271
|
+
}
|
272
|
+
},
|
273
|
+
cancel: {
|
274
|
+
exec: function(){
|
275
|
+
//清除视频
|
276
|
+
$("#eduiVideoPreview").html("");
|
277
|
+
}
|
278
|
+
}
|
279
|
+
}
|
280
|
+
});
|
281
|
+
|
282
|
+
})();
|
@@ -0,0 +1,277 @@
|
|
1
|
+
<!DOCTYPE HTML>
|
2
|
+
<html>
|
3
|
+
<head>
|
4
|
+
|
5
|
+
<meta http-equiv="Content-Type" content="text/html;charset=utf-8"/>
|
6
|
+
<title>UMEDITOR 完整demo</title>
|
7
|
+
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
|
8
|
+
<link href="themes/default/css/umeditor.css" type="text/css" rel="stylesheet">
|
9
|
+
<script type="text/javascript" src="third-party/jquery.min.js"></script>
|
10
|
+
<script type="text/javascript" charset="utf-8" src="umeditor.config.js"></script>
|
11
|
+
<script type="text/javascript" charset="utf-8" src="umeditor.min.js"></script>
|
12
|
+
<script type="text/javascript" src="lang/zh-cn/zh-cn.js"></script>
|
13
|
+
<style type="text/css">
|
14
|
+
h1{
|
15
|
+
font-family: "微软雅黑";
|
16
|
+
font-weight: normal;
|
17
|
+
}
|
18
|
+
.btn {
|
19
|
+
display: inline-block;
|
20
|
+
*display: inline;
|
21
|
+
padding: 4px 12px;
|
22
|
+
margin-bottom: 0;
|
23
|
+
*margin-left: .3em;
|
24
|
+
font-size: 14px;
|
25
|
+
line-height: 20px;
|
26
|
+
color: #333333;
|
27
|
+
text-align: center;
|
28
|
+
text-shadow: 0 1px 1px rgba(255, 255, 255, 0.75);
|
29
|
+
vertical-align: middle;
|
30
|
+
cursor: pointer;
|
31
|
+
background-color: #f5f5f5;
|
32
|
+
*background-color: #e6e6e6;
|
33
|
+
background-image: -moz-linear-gradient(top, #ffffff, #e6e6e6);
|
34
|
+
background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#ffffff), to(#e6e6e6));
|
35
|
+
background-image: -webkit-linear-gradient(top, #ffffff, #e6e6e6);
|
36
|
+
background-image: -o-linear-gradient(top, #ffffff, #e6e6e6);
|
37
|
+
background-image: linear-gradient(to bottom, #ffffff, #e6e6e6);
|
38
|
+
background-repeat: repeat-x;
|
39
|
+
border: 1px solid #cccccc;
|
40
|
+
*border: 0;
|
41
|
+
border-color: #e6e6e6 #e6e6e6 #bfbfbf;
|
42
|
+
border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);
|
43
|
+
border-bottom-color: #b3b3b3;
|
44
|
+
-webkit-border-radius: 4px;
|
45
|
+
-moz-border-radius: 4px;
|
46
|
+
border-radius: 4px;
|
47
|
+
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffffff', endColorstr='#ffe6e6e6', GradientType=0);
|
48
|
+
filter: progid:DXImageTransform.Microsoft.gradient(enabled=false);
|
49
|
+
*zoom: 1;
|
50
|
+
-webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.2), 0 1px 2px rgba(0, 0, 0, 0.05);
|
51
|
+
-moz-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.2), 0 1px 2px rgba(0, 0, 0, 0.05);
|
52
|
+
box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.2), 0 1px 2px rgba(0, 0, 0, 0.05);
|
53
|
+
}
|
54
|
+
|
55
|
+
.btn:hover,
|
56
|
+
.btn:focus,
|
57
|
+
.btn:active,
|
58
|
+
.btn.active,
|
59
|
+
.btn.disabled,
|
60
|
+
.btn[disabled] {
|
61
|
+
color: #333333;
|
62
|
+
background-color: #e6e6e6;
|
63
|
+
*background-color: #d9d9d9;
|
64
|
+
}
|
65
|
+
|
66
|
+
.btn:active,
|
67
|
+
.btn.active {
|
68
|
+
background-color: #cccccc \9;
|
69
|
+
}
|
70
|
+
|
71
|
+
.btn:first-child {
|
72
|
+
*margin-left: 0;
|
73
|
+
}
|
74
|
+
|
75
|
+
.btn:hover,
|
76
|
+
.btn:focus {
|
77
|
+
color: #333333;
|
78
|
+
text-decoration: none;
|
79
|
+
background-position: 0 -15px;
|
80
|
+
-webkit-transition: background-position 0.1s linear;
|
81
|
+
-moz-transition: background-position 0.1s linear;
|
82
|
+
-o-transition: background-position 0.1s linear;
|
83
|
+
transition: background-position 0.1s linear;
|
84
|
+
}
|
85
|
+
|
86
|
+
.btn:focus {
|
87
|
+
outline: thin dotted #333;
|
88
|
+
outline: 5px auto -webkit-focus-ring-color;
|
89
|
+
outline-offset: -2px;
|
90
|
+
}
|
91
|
+
|
92
|
+
.btn.active,
|
93
|
+
.btn:active {
|
94
|
+
background-image: none;
|
95
|
+
outline: 0;
|
96
|
+
-webkit-box-shadow: inset 0 2px 4px rgba(0, 0, 0, 0.15), 0 1px 2px rgba(0, 0, 0, 0.05);
|
97
|
+
-moz-box-shadow: inset 0 2px 4px rgba(0, 0, 0, 0.15), 0 1px 2px rgba(0, 0, 0, 0.05);
|
98
|
+
box-shadow: inset 0 2px 4px rgba(0, 0, 0, 0.15), 0 1px 2px rgba(0, 0, 0, 0.05);
|
99
|
+
}
|
100
|
+
|
101
|
+
.btn.disabled,
|
102
|
+
.btn[disabled] {
|
103
|
+
cursor: default;
|
104
|
+
background-image: none;
|
105
|
+
opacity: 0.65;
|
106
|
+
filter: alpha(opacity=65);
|
107
|
+
-webkit-box-shadow: none;
|
108
|
+
-moz-box-shadow: none;
|
109
|
+
box-shadow: none;
|
110
|
+
}
|
111
|
+
</style>
|
112
|
+
</head>
|
113
|
+
<body>
|
114
|
+
<h1>UMEDITOR 完整demo</h1>
|
115
|
+
|
116
|
+
<!--style给定宽度可以影响编辑器的最终宽度-->
|
117
|
+
<script type="text/plain" id="myEditor" style="width:1000px;height:240px;">
|
118
|
+
<p>这里我可以写一些输入提示</p>
|
119
|
+
</script>
|
120
|
+
|
121
|
+
|
122
|
+
<div class="clear"></div>
|
123
|
+
<div id="btns">
|
124
|
+
<table>
|
125
|
+
<tr>
|
126
|
+
<td>
|
127
|
+
<button class="btn" unselected="on" onclick="getAllHtml()">获得整个html的内容</button>
|
128
|
+
<button class="btn" onclick="getContent()">获得内容</button>
|
129
|
+
<button class="btn" onclick="setContent()">写入内容</button>
|
130
|
+
<button class="btn" onclick="setContent(true)">追加内容</button>
|
131
|
+
<button class="btn" onclick="getContentTxt()">获得纯文本</button>
|
132
|
+
<button class="btn" onclick="getPlainTxt()">获得带格式的纯文本</button>
|
133
|
+
<button class="btn" onclick="hasContent()">判断是否有内容</button>
|
134
|
+
</td>
|
135
|
+
</tr>
|
136
|
+
<tr>
|
137
|
+
<td>
|
138
|
+
<button class="btn" onclick="setFocus()">编辑器获得焦点</button>
|
139
|
+
<button class="btn" onmousedown="isFocus();return false;">编辑器是否获得焦点</button>
|
140
|
+
<button class="btn" onclick="doBlur()">编辑器取消焦点</button>
|
141
|
+
<button class="btn" onclick="insertHtml()">插入给定的内容</button>
|
142
|
+
<button class="btn" onclick="getContentTxt()">获得纯文本</button>
|
143
|
+
<button class="btn" id="enable" onclick="setEnabled()">可以编辑</button>
|
144
|
+
<button class="btn" onclick="setDisabled()">不可编辑</button>
|
145
|
+
</td>
|
146
|
+
</tr>
|
147
|
+
<tr>
|
148
|
+
<td>
|
149
|
+
<button class="btn" onclick="UM.getEditor('myEditor').setHide()">隐藏编辑器</button>
|
150
|
+
<button class="btn" onclick="UM.getEditor('myEditor').setShow()">显示编辑器</button>
|
151
|
+
<button class="btn" onclick="UM.getEditor('myEditor').setHeight(300)">设置编辑器的高度为300</button>
|
152
|
+
<button class="btn" onclick="UM.getEditor('myEditor').setWidth(1200)">设置编辑器的宽度为1200</button>
|
153
|
+
</td>
|
154
|
+
</tr>
|
155
|
+
|
156
|
+
</table>
|
157
|
+
</div>
|
158
|
+
<table>
|
159
|
+
<tr>
|
160
|
+
<td>
|
161
|
+
<button class="btn" onclick="createEditor()"/>创建编辑器</button>
|
162
|
+
<button class="btn" onclick="deleteEditor()"/>删除编辑器</button>
|
163
|
+
</td>
|
164
|
+
</tr>
|
165
|
+
</table>
|
166
|
+
|
167
|
+
<div>
|
168
|
+
<h3 id="focush2"></h3>
|
169
|
+
</div>
|
170
|
+
<script type="text/javascript">
|
171
|
+
//实例化编辑器
|
172
|
+
var um = UM.getEditor('myEditor');
|
173
|
+
um.addListener('blur',function(){
|
174
|
+
$('#focush2').html('编辑器失去焦点了')
|
175
|
+
});
|
176
|
+
um.addListener('focus',function(){
|
177
|
+
$('#focush2').html('')
|
178
|
+
});
|
179
|
+
//按钮的操作
|
180
|
+
function insertHtml() {
|
181
|
+
var value = prompt('插入html代码', '');
|
182
|
+
um.execCommand('insertHtml', value)
|
183
|
+
}
|
184
|
+
function isFocus(){
|
185
|
+
alert(um.isFocus())
|
186
|
+
}
|
187
|
+
function doBlur(){
|
188
|
+
um.blur()
|
189
|
+
}
|
190
|
+
function createEditor() {
|
191
|
+
enableBtn();
|
192
|
+
um = UM.getEditor('myEditor');
|
193
|
+
}
|
194
|
+
function getAllHtml() {
|
195
|
+
alert(UM.getEditor('myEditor').getAllHtml())
|
196
|
+
}
|
197
|
+
function getContent() {
|
198
|
+
var arr = [];
|
199
|
+
arr.push("使用editor.getContent()方法可以获得编辑器的内容");
|
200
|
+
arr.push("内容为:");
|
201
|
+
arr.push(UM.getEditor('myEditor').getContent());
|
202
|
+
alert(arr.join("\n"));
|
203
|
+
}
|
204
|
+
function getPlainTxt() {
|
205
|
+
var arr = [];
|
206
|
+
arr.push("使用editor.getPlainTxt()方法可以获得编辑器的带格式的纯文本内容");
|
207
|
+
arr.push("内容为:");
|
208
|
+
arr.push(UM.getEditor('myEditor').getPlainTxt());
|
209
|
+
alert(arr.join('\n'))
|
210
|
+
}
|
211
|
+
function setContent(isAppendTo) {
|
212
|
+
var arr = [];
|
213
|
+
arr.push("使用editor.setContent('欢迎使用umeditor')方法可以设置编辑器的内容");
|
214
|
+
UM.getEditor('myEditor').setContent('欢迎使用umeditor', isAppendTo);
|
215
|
+
alert(arr.join("\n"));
|
216
|
+
}
|
217
|
+
function setDisabled() {
|
218
|
+
UM.getEditor('myEditor').setDisabled('fullscreen');
|
219
|
+
disableBtn("enable");
|
220
|
+
}
|
221
|
+
|
222
|
+
function setEnabled() {
|
223
|
+
UM.getEditor('myEditor').setEnabled();
|
224
|
+
enableBtn();
|
225
|
+
}
|
226
|
+
|
227
|
+
function getText() {
|
228
|
+
//当你点击按钮时编辑区域已经失去了焦点,如果直接用getText将不会得到内容,所以要在选回来,然后取得内容
|
229
|
+
var range = UM.getEditor('myEditor').selection.getRange();
|
230
|
+
range.select();
|
231
|
+
var txt = UM.getEditor('myEditor').selection.getText();
|
232
|
+
alert(txt)
|
233
|
+
}
|
234
|
+
|
235
|
+
function getContentTxt() {
|
236
|
+
var arr = [];
|
237
|
+
arr.push("使用editor.getContentTxt()方法可以获得编辑器的纯文本内容");
|
238
|
+
arr.push("编辑器的纯文本内容为:");
|
239
|
+
arr.push(UM.getEditor('myEditor').getContentTxt());
|
240
|
+
alert(arr.join("\n"));
|
241
|
+
}
|
242
|
+
function hasContent() {
|
243
|
+
var arr = [];
|
244
|
+
arr.push("使用editor.hasContents()方法判断编辑器里是否有内容");
|
245
|
+
arr.push("判断结果为:");
|
246
|
+
arr.push(UM.getEditor('myEditor').hasContents());
|
247
|
+
alert(arr.join("\n"));
|
248
|
+
}
|
249
|
+
function setFocus() {
|
250
|
+
UM.getEditor('myEditor').focus();
|
251
|
+
}
|
252
|
+
function deleteEditor() {
|
253
|
+
disableBtn();
|
254
|
+
UM.getEditor('myEditor').destroy();
|
255
|
+
}
|
256
|
+
function disableBtn(str) {
|
257
|
+
var div = document.getElementById('btns');
|
258
|
+
var btns = domUtils.getElementsByTagName(div, "button");
|
259
|
+
for (var i = 0, btn; btn = btns[i++];) {
|
260
|
+
if (btn.id == str) {
|
261
|
+
domUtils.removeAttributes(btn, ["disabled"]);
|
262
|
+
} else {
|
263
|
+
btn.setAttribute("disabled", "true");
|
264
|
+
}
|
265
|
+
}
|
266
|
+
}
|
267
|
+
function enableBtn() {
|
268
|
+
var div = document.getElementById('btns');
|
269
|
+
var btns = domUtils.getElementsByTagName(div, "button");
|
270
|
+
for (var i = 0, btn; btn = btns[i++];) {
|
271
|
+
domUtils.removeAttributes(btn, ["disabled"]);
|
272
|
+
}
|
273
|
+
}
|
274
|
+
</script>
|
275
|
+
|
276
|
+
</body>
|
277
|
+
</html>
|