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,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>&nbsp;
128
+ <button class="btn" onclick="getContent()">获得内容</button>&nbsp;
129
+ <button class="btn" onclick="setContent()">写入内容</button>&nbsp;
130
+ <button class="btn" onclick="setContent(true)">追加内容</button>&nbsp;
131
+ <button class="btn" onclick="getContentTxt()">获得纯文本</button>&nbsp;
132
+ <button class="btn" onclick="getPlainTxt()">获得带格式的纯文本</button>&nbsp;
133
+ <button class="btn" onclick="hasContent()">判断是否有内容</button>
134
+ </td>
135
+ </tr>
136
+ <tr>
137
+ <td>
138
+ <button class="btn" onclick="setFocus()">编辑器获得焦点</button>&nbsp;
139
+ <button class="btn" onmousedown="isFocus();return false;">编辑器是否获得焦点</button>&nbsp;
140
+ <button class="btn" onclick="doBlur()">编辑器取消焦点</button>&nbsp;
141
+ <button class="btn" onclick="insertHtml()">插入给定的内容</button>&nbsp;
142
+ <button class="btn" onclick="getContentTxt()">获得纯文本</button>&nbsp;
143
+ <button class="btn" id="enable" onclick="setEnabled()">可以编辑</button>&nbsp;
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>&nbsp;
150
+ <button class="btn" onclick="UM.getEditor('myEditor').setShow()">显示编辑器</button>&nbsp;
151
+ <button class="btn" onclick="UM.getEditor('myEditor').setHeight(300)">设置编辑器的高度为300</button>&nbsp;
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>