umeditor-rails 1.0.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (107) hide show
  1. checksums.yaml +7 -0
  2. data/.gitignore +14 -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/lib/tasks/umeditor.rake +12 -0
  9. data/lib/umeditor/rails/engine.rb +20 -0
  10. data/lib/umeditor/rails/version.rb +6 -0
  11. data/lib/umeditor/rails.rb +7 -0
  12. data/lib/umeditor-rails.rb +1 -0
  13. data/umeditor-rails.gemspec +23 -0
  14. data/vendor/assets/javascripts/umeditor/dialogs/emotion/emotion.css +87 -0
  15. data/vendor/assets/javascripts/umeditor/dialogs/emotion/emotion.js +272 -0
  16. data/vendor/assets/javascripts/umeditor/dialogs/emotion/images/0.gif +0 -0
  17. data/vendor/assets/javascripts/umeditor/dialogs/emotion/images/bface.gif +0 -0
  18. data/vendor/assets/javascripts/umeditor/dialogs/emotion/images/cface.gif +0 -0
  19. data/vendor/assets/javascripts/umeditor/dialogs/emotion/images/fface.gif +0 -0
  20. data/vendor/assets/javascripts/umeditor/dialogs/emotion/images/jxface2.gif +0 -0
  21. data/vendor/assets/javascripts/umeditor/dialogs/emotion/images/neweditor-tab-bg.png +0 -0
  22. data/vendor/assets/javascripts/umeditor/dialogs/emotion/images/tface.gif +0 -0
  23. data/vendor/assets/javascripts/umeditor/dialogs/emotion/images/wface.gif +0 -0
  24. data/vendor/assets/javascripts/umeditor/dialogs/emotion/images/yface.gif +0 -0
  25. data/vendor/assets/javascripts/umeditor/dialogs/formula/formula.css +32 -0
  26. data/vendor/assets/javascripts/umeditor/dialogs/formula/formula.html +212 -0
  27. data/vendor/assets/javascripts/umeditor/dialogs/formula/formula.js +124 -0
  28. data/vendor/assets/javascripts/umeditor/dialogs/formula/images/formula.png +0 -0
  29. data/vendor/assets/javascripts/umeditor/dialogs/image/image.css +42 -0
  30. data/vendor/assets/javascripts/umeditor/dialogs/image/image.js +445 -0
  31. data/vendor/assets/javascripts/umeditor/dialogs/image/images/close.png +0 -0
  32. data/vendor/assets/javascripts/umeditor/dialogs/image/images/upload1.png +0 -0
  33. data/vendor/assets/javascripts/umeditor/dialogs/image/images/upload2.png +0 -0
  34. data/vendor/assets/javascripts/umeditor/dialogs/link/link.js +73 -0
  35. data/vendor/assets/javascripts/umeditor/dialogs/map/map.html +148 -0
  36. data/vendor/assets/javascripts/umeditor/dialogs/map/map.js +263 -0
  37. data/vendor/assets/javascripts/umeditor/dialogs/video/images/center_focus.jpg +0 -0
  38. data/vendor/assets/javascripts/umeditor/dialogs/video/images/left_focus.jpg +0 -0
  39. data/vendor/assets/javascripts/umeditor/dialogs/video/images/none_focus.jpg +0 -0
  40. data/vendor/assets/javascripts/umeditor/dialogs/video/images/right_focus.jpg +0 -0
  41. data/vendor/assets/javascripts/umeditor/dialogs/video/video.css +59 -0
  42. data/vendor/assets/javascripts/umeditor/dialogs/video/video.js +282 -0
  43. data/vendor/assets/javascripts/umeditor/index.html +277 -0
  44. data/vendor/assets/javascripts/umeditor/lang/en/en.js +150 -0
  45. data/vendor/assets/javascripts/umeditor/lang/en/images/addimage.png +0 -0
  46. data/vendor/assets/javascripts/umeditor/lang/en/images/alldeletebtnhoverskin.png +0 -0
  47. data/vendor/assets/javascripts/umeditor/lang/en/images/alldeletebtnupskin.png +0 -0
  48. data/vendor/assets/javascripts/umeditor/lang/en/images/background.png +0 -0
  49. data/vendor/assets/javascripts/umeditor/lang/en/images/button.png +0 -0
  50. data/vendor/assets/javascripts/umeditor/lang/en/images/copy.png +0 -0
  51. data/vendor/assets/javascripts/umeditor/lang/en/images/deletedisable.png +0 -0
  52. data/vendor/assets/javascripts/umeditor/lang/en/images/deleteenable.png +0 -0
  53. data/vendor/assets/javascripts/umeditor/lang/en/images/imglabel.png +0 -0
  54. data/vendor/assets/javascripts/umeditor/lang/en/images/listbackground.png +0 -0
  55. data/vendor/assets/javascripts/umeditor/lang/en/images/localimage.png +0 -0
  56. data/vendor/assets/javascripts/umeditor/lang/en/images/music.png +0 -0
  57. data/vendor/assets/javascripts/umeditor/lang/en/images/rotateleftdisable.png +0 -0
  58. data/vendor/assets/javascripts/umeditor/lang/en/images/rotateleftenable.png +0 -0
  59. data/vendor/assets/javascripts/umeditor/lang/en/images/rotaterightdisable.png +0 -0
  60. data/vendor/assets/javascripts/umeditor/lang/en/images/rotaterightenable.png +0 -0
  61. data/vendor/assets/javascripts/umeditor/lang/en/images/upload.png +0 -0
  62. data/vendor/assets/javascripts/umeditor/lang/zh-cn/images/copy.png +0 -0
  63. data/vendor/assets/javascripts/umeditor/lang/zh-cn/images/imglabel.png +0 -0
  64. data/vendor/assets/javascripts/umeditor/lang/zh-cn/images/localimage.png +0 -0
  65. data/vendor/assets/javascripts/umeditor/lang/zh-cn/images/music.png +0 -0
  66. data/vendor/assets/javascripts/umeditor/lang/zh-cn/images/upload.png +0 -0
  67. data/vendor/assets/javascripts/umeditor/lang/zh-cn/zh-cn.js +150 -0
  68. data/vendor/assets/javascripts/umeditor/themes/default/css/umeditor.css +773 -0
  69. data/vendor/assets/javascripts/umeditor/themes/default/css/umeditor.min.css +8 -0
  70. data/vendor/assets/javascripts/umeditor/themes/default/images/caret.png +0 -0
  71. data/vendor/assets/javascripts/umeditor/themes/default/images/close.png +0 -0
  72. data/vendor/assets/javascripts/umeditor/themes/default/images/icons.gif +0 -0
  73. data/vendor/assets/javascripts/umeditor/themes/default/images/icons.png +0 -0
  74. data/vendor/assets/javascripts/umeditor/themes/default/images/ok.gif +0 -0
  75. data/vendor/assets/javascripts/umeditor/themes/default/images/pop-bg.png +0 -0
  76. data/vendor/assets/javascripts/umeditor/themes/default/images/spacer.gif +0 -0
  77. data/vendor/assets/javascripts/umeditor/themes/default/images/videologo.gif +0 -0
  78. data/vendor/assets/javascripts/umeditor/third-party/jquery.min.js +6 -0
  79. data/vendor/assets/javascripts/umeditor/third-party/mathquill/font/Symbola.eot +0 -0
  80. data/vendor/assets/javascripts/umeditor/third-party/mathquill/font/Symbola.otf +0 -0
  81. data/vendor/assets/javascripts/umeditor/third-party/mathquill/font/Symbola.svg +5102 -0
  82. data/vendor/assets/javascripts/umeditor/third-party/mathquill/font/Symbola.ttf +0 -0
  83. data/vendor/assets/javascripts/umeditor/third-party/mathquill/font/Symbola.woff +0 -0
  84. data/vendor/assets/javascripts/umeditor/third-party/mathquill/font/stixgeneral-bundle/STIXFontLicense2010.txt +103 -0
  85. data/vendor/assets/javascripts/umeditor/third-party/mathquill/font/stixgeneral-bundle/stixgeneral-webfont.eot +0 -0
  86. data/vendor/assets/javascripts/umeditor/third-party/mathquill/font/stixgeneral-bundle/stixgeneral-webfont.svg +3318 -0
  87. data/vendor/assets/javascripts/umeditor/third-party/mathquill/font/stixgeneral-bundle/stixgeneral-webfont.ttf +0 -0
  88. data/vendor/assets/javascripts/umeditor/third-party/mathquill/font/stixgeneral-bundle/stixgeneral-webfont.woff +0 -0
  89. data/vendor/assets/javascripts/umeditor/third-party/mathquill/font/stixgeneral-bundle/stixgeneralbol-webfont.eot +0 -0
  90. data/vendor/assets/javascripts/umeditor/third-party/mathquill/font/stixgeneral-bundle/stixgeneralbol-webfont.svg +1738 -0
  91. data/vendor/assets/javascripts/umeditor/third-party/mathquill/font/stixgeneral-bundle/stixgeneralbol-webfont.ttf +0 -0
  92. data/vendor/assets/javascripts/umeditor/third-party/mathquill/font/stixgeneral-bundle/stixgeneralbol-webfont.woff +0 -0
  93. data/vendor/assets/javascripts/umeditor/third-party/mathquill/font/stixgeneral-bundle/stixgeneralbolita-webfont.eot +0 -0
  94. data/vendor/assets/javascripts/umeditor/third-party/mathquill/font/stixgeneral-bundle/stixgeneralbolita-webfont.svg +1137 -0
  95. data/vendor/assets/javascripts/umeditor/third-party/mathquill/font/stixgeneral-bundle/stixgeneralbolita-webfont.ttf +0 -0
  96. data/vendor/assets/javascripts/umeditor/third-party/mathquill/font/stixgeneral-bundle/stixgeneralbolita-webfont.woff +0 -0
  97. data/vendor/assets/javascripts/umeditor/third-party/mathquill/font/stixgeneral-bundle/stixgeneralitalic-webfont.eot +0 -0
  98. data/vendor/assets/javascripts/umeditor/third-party/mathquill/font/stixgeneral-bundle/stixgeneralitalic-webfont.svg +1089 -0
  99. data/vendor/assets/javascripts/umeditor/third-party/mathquill/font/stixgeneral-bundle/stixgeneralitalic-webfont.ttf +0 -0
  100. data/vendor/assets/javascripts/umeditor/third-party/mathquill/font/stixgeneral-bundle/stixgeneralitalic-webfont.woff +0 -0
  101. data/vendor/assets/javascripts/umeditor/third-party/mathquill/mathquill.css +357 -0
  102. data/vendor/assets/javascripts/umeditor/third-party/mathquill/mathquill.js +3888 -0
  103. data/vendor/assets/javascripts/umeditor/third-party/mathquill/mathquill.min.js +2 -0
  104. data/vendor/assets/javascripts/umeditor/umeditor.config.js +249 -0
  105. data/vendor/assets/javascripts/umeditor/umeditor.js +10923 -0
  106. data/vendor/assets/javascripts/umeditor/umeditor.min.js +264 -0
  107. metadata +178 -0
@@ -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
+
@@ -0,0 +1,73 @@
1
+ (function(){
2
+ var utils = UM.utils;
3
+ function hrefStartWith(href, arr) {
4
+ href = href.replace(/^\s+|\s+$/g, '');
5
+ for (var i = 0, ai; ai = arr[i++];) {
6
+ if (href.indexOf(ai) == 0) {
7
+ return true;
8
+ }
9
+ }
10
+ return false;
11
+ }
12
+
13
+ UM.registerWidget('link', {
14
+ tpl: "<style type=\"text/css\">" +
15
+ ".edui-dialog-link .edui-link-table{font-size: 12px;margin: 10px;line-height: 30px}" +
16
+ ".edui-dialog-link .edui-link-txt{width:300px;height:21px;line-height:21px;border:1px solid #d7d7d7;}" +
17
+ "</style>" +
18
+ "<table class=\"edui-link-table\">" +
19
+ "<tr>" +
20
+ "<td><label for=\"href\"><%=lang_input_url%></label></td>" +
21
+ "<td><input class=\"edui-link-txt\" id=\"edui-link-Jhref\" type=\"text\" /></td>" +
22
+ "</tr>" +
23
+ "<tr>" +
24
+ "<td><label for=\"title\"><%=lang_input_title%></label></td>" +
25
+ "<td><input class=\"edui-link-txt\" id=\"edui-link-Jtitle\" type=\"text\"/></td>" +
26
+ "</tr>" +
27
+ "<tr>" +
28
+ "<td colspan=\"2\">" +
29
+ "<label for=\"target\"><%=lang_input_target%></label>" +
30
+ "<input id=\"edui-link-Jtarget\" type=\"checkbox\"/>" +
31
+ "</td>" +
32
+ "</tr>" +
33
+ // "<tr>" +
34
+ // "<td colspan=\"2\" id=\"edui-link-Jmsg\"></td>" +
35
+ // "</tr>" +
36
+ "</table>",
37
+ initContent: function (editor) {
38
+ var lang = editor.getLang('link');
39
+ if (lang) {
40
+ var html = $.parseTmpl(this.tpl, lang.static);
41
+ }
42
+ this.root().html(html);
43
+ },
44
+ initEvent: function (editor, $w) {
45
+ var link = editor.queryCommandValue('link');
46
+ if(link){
47
+ $('#edui-link-Jhref',$w).val(utils.html($(link).attr('href')));
48
+ $('#edui-link-Jtitle',$w).val($(link).attr('title'));
49
+ $(link).attr('target') == '_blank' && $('#edui-link-Jtarget').attr('checked',true)
50
+ }
51
+ $('#edui-link-Jhref',$w).focus();
52
+ },
53
+ buttons: {
54
+ 'ok': {
55
+ exec: function (editor, $w) {
56
+ var href = $('#edui-link-Jhref').val().replace(/^\s+|\s+$/g, '');
57
+
58
+ if (href) {
59
+ editor.execCommand('link', {
60
+ 'href': href,
61
+ 'target': $("#edui-link-Jtarget:checked").length ? "_blank" : '_self',
62
+ 'title': $("#edui-link-Jtitle").val().replace(/^\s+|\s+$/g, ''),
63
+ '_href': href
64
+ });
65
+ }
66
+ }
67
+ },
68
+ 'cancel':{}
69
+ },
70
+ width: 400
71
+ })
72
+ })();
73
+
@@ -0,0 +1,148 @@
1
+ <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
2
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
3
+ <html xmlns="http://www.w3.org/1999/xhtml">
4
+ <head>
5
+ <meta charset="utf-8"/>
6
+ <meta name="keywords" content="百度地图,百度地图API,百度地图自定义工具,百度地图所见即所得工具"/>
7
+ <meta name="description" content="百度地图API自定义地图,帮助用户在可视化操作下生成百度地图"/>
8
+ <title>百度地图API自定义地图</title>
9
+ <!--引用百度地图API-->
10
+ <style type="text/css">
11
+ html, body {
12
+ margin: 0;
13
+ padding: 0;
14
+ overflow: hidden;
15
+ }
16
+ </style>
17
+ <script type="text/javascript" src="http://api.map.baidu.com/api?key=&v=2.0&ak=6b6c1a67eaa7db1ca6d6da28e590e343&services=true"></script>
18
+ </head>
19
+
20
+ <body onload="initMap();">
21
+ <!--百度地图容器-->
22
+ <div style="width:697px;height:550px;border:#ccc solid 1px;" id="dituContent"></div>
23
+ </body>
24
+ <script type="text/javascript">
25
+ function getParam(name) {
26
+ return location.href.match(new RegExp('[?#&]' + name + '=([^?#&]+)', 'i')) ? RegExp.$1 : '';
27
+ }
28
+ var map, marker;
29
+ var centerParam = getParam('center');
30
+ var zoomParam = getParam('zoom');
31
+ var widthParam = getParam('width');
32
+ var heightParam = getParam('height');
33
+ var markersParam = getParam('markers');
34
+ var markerStylesParam = getParam('markerStyles');
35
+ var iframe = getSelfIframe();
36
+ var UM = parent.UM;
37
+ var editor = getEditor();
38
+
39
+ //创建和初始化地图函数:
40
+ function initMap() {
41
+ // [FF]切换模式后报错
42
+ if (!window.BMap) {
43
+ return;
44
+ }
45
+ var dituContent = document.getElementById('dituContent');
46
+ dituContent.style.width = widthParam + 'px';
47
+ dituContent.style.height = heightParam + 'px';
48
+
49
+ createMap();//创建地图
50
+ setMapEvent();//设置地图事件
51
+ addMapControl();//向地图添加控件
52
+
53
+ // 创建标注
54
+ var markersArr = markersParam.split(',');
55
+ var point = new BMap.Point(markersArr[0], markersArr[1]);
56
+ marker = new BMap.Marker(point);
57
+ marker.enableDragging();
58
+ map.addOverlay(marker); // 将标注添加到地图中
59
+
60
+ if(iframe && UM && editor) { //在编辑状态下
61
+ setMapListener();//地图改变修改外层的iframe标签src属性
62
+ } else {
63
+ document.focus();
64
+ }
65
+ }
66
+
67
+ //创建地图函数:
68
+ function createMap() {
69
+ map = new BMap.Map("dituContent");//在百度地图容器中创建一个地图
70
+ var centerArr = centerParam.split(',');
71
+ var point = new BMap.Point(parseFloat(centerArr[0]), parseFloat(centerArr[1]));//定义一个中心点坐标
72
+ map.centerAndZoom(point, parseInt(zoomParam));//设定地图的中心点和坐标并将地图显示在地图容器中
73
+ }
74
+
75
+ //地图事件设置函数:
76
+ function setMapEvent() {
77
+ map.enableDragging();//启用地图拖拽事件,默认启用(可不写)
78
+ map.enableScrollWheelZoom();//启用地图滚轮放大缩小
79
+ map.enableDoubleClickZoom();//启用鼠标双击放大,默认启用(可不写)
80
+ map.enableKeyboard();//启用键盘上下左右键移动地图
81
+ }
82
+
83
+ //地图控件添加函数:
84
+ function addMapControl() {
85
+ //向地图中添加缩放控件
86
+ var ctrl_nav = new BMap.NavigationControl({anchor: BMAP_ANCHOR_TOP_LEFT, type: BMAP_NAVIGATION_CONTROL_LARGE});
87
+ map.addControl(ctrl_nav);
88
+ //向地图中添加缩略图控件
89
+ var ctrl_ove = new BMap.OverviewMapControl({anchor: BMAP_ANCHOR_BOTTOM_RIGHT, isOpen: 1});
90
+ map.addControl(ctrl_ove);
91
+ //向地图中添加比例尺控件
92
+ var ctrl_sca = new BMap.ScaleControl({anchor: BMAP_ANCHOR_BOTTOM_LEFT});
93
+ map.addControl(ctrl_sca);
94
+ }
95
+
96
+ function setMapListener() {
97
+ var timer;
98
+
99
+ map.addEventListener('moveend', mapListenerHandler);
100
+ map.addEventListener('zoomend', mapListenerHandler);
101
+ marker.addEventListener('dragend', mapListenerHandler);
102
+
103
+ function mapListenerHandler() {
104
+ var zoom = map.getZoom(),
105
+ center = map.getCenter(),
106
+ marker = window.marker.P;
107
+
108
+ iframe.src = iframe.src.
109
+ replace(new RegExp('([?#&])center=([^?#&]+)', 'i'), '$1center=' + center.lng + ',' + center.lat).
110
+ replace(new RegExp('([?#&])markers=([^?#&]+)', 'i'), '$1markers=' + marker.lng + ',' + marker.lat).
111
+ replace(new RegExp('([?#&])zoom=([^?#&]+)', 'i'), '$1zoom=' + zoom);
112
+ editor.fireEvent('saveScene');
113
+ saveScene(editor);
114
+ }
115
+
116
+ function saveScene(){
117
+ if(!timer) {
118
+ timer = setTimeout(function(){
119
+ editor.fireEvent('savescene');
120
+ editor.fireEvent('contentchange');
121
+ timer = null;
122
+ }, 1000);
123
+ }
124
+ }
125
+ }
126
+
127
+ function getSelfIframe(){
128
+ var iframes = parent.document.getElementsByTagName('iframe');
129
+ for (var key in iframes) {
130
+ if (iframes[key].contentWindow == window) {
131
+ return iframes[key];
132
+ }
133
+ }
134
+ return null;
135
+ }
136
+
137
+ function getEditor(){
138
+ var parentNode = iframe.parentNode;
139
+ while (parentNode && parentNode.tagName && parentNode.tagName.toLowerCase() != 'body') {
140
+ if (parentNode.className && parentNode.className.indexOf('edui-body-container')!=-1) {
141
+ return UM.getEditor(parentNode.id);
142
+ }
143
+ parentNode = parentNode.parentNode;
144
+ }
145
+ return null;
146
+ }
147
+ </script>
148
+ </html>