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,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>
@@ -0,0 +1,263 @@
1
+ (function () {
2
+
3
+ var widgetName = 'map';
4
+
5
+ UM.registerWidget(widgetName, {
6
+
7
+ tpl: "<style type=\"text/css\">" +
8
+ ".edui-dialog-map .edui-map-content{width:530px; height: 350px;margin: 10px auto;}" +
9
+ ".edui-dialog-map .edui-map-content table{width: 100%}" +
10
+ ".edui-dialog-map .edui-map-content table td{vertical-align: middle;}" +
11
+ ".edui-dialog-map .edui-map-button { border: 1px solid #ccc; float: left; cursor: default; height: 23px; width: 70px; cursor: pointer; margin: 0; font-size: 12px; line-height: 24px; text-align: center; }" +
12
+ ".edui-dialog-map .edui-map-button:hover {background:#eee;}" +
13
+ ".edui-dialog-map .edui-map-city,.edui-dialog-map .edui-map-address{height:21px;background: #FFF;border:1px solid #d7d7d7; line-height: 21px;}" +
14
+ ".edui-dialog-map .edui-map-city{width:90px}" +
15
+ ".edui-dialog-map .edui-map-address{width:150px}" +
16
+ ".edui-dialog-map .edui-map-dynamic-label span{vertical-align:middle;margin: 3px 0px 3px 3px;}" +
17
+ ".edui-dialog-map .edui-map-dynamic-label input{vertical-align:middle;margin: 3px;}" +
18
+ "</style>" +
19
+ "<div class=\"edui-map-content\">" +
20
+ "<table>" +
21
+ "<tr>" +
22
+ "<td><%=lang_city%>:</td>" +
23
+ "<td><input class=\"edui-map-city\" type=\"text\" value=\"<%=city.value%>\"/></td>" +
24
+ "<td><%=lang_address%>:</td>" +
25
+ "<td><input class=\"edui-map-address\" type=\"text\" value=\"\" /></td>" +
26
+ "<td><a class=\"edui-map-button\"><%=lang_search%></a></td>" +
27
+ "<td><label class=\"edui-map-dynamic-label\"><input class=\"edui-map-dynamic\" type=\"checkbox\" name=\"edui-map-dynamic\" /><span><%=lang_dynamicmap%></span></label></td>"+
28
+ "</tr>" +
29
+ "</table>" +
30
+ "<div style=\"width:100%;height:340px;margin:5px auto;border:1px solid gray\" class=\"edui-map-container\"></div>" +
31
+ "</div>" +
32
+ "<script class=\"edui-tpl-container\" type=\"text/plain\">" +
33
+ "<!DOCTYPE html>" +
34
+ "<html>" +
35
+ "<head>" +
36
+ "<title></title>" +
37
+ "</head>" +
38
+ "<body>" +
39
+ "<scr_ipt>" +
40
+ "window.onload = function(){" +
41
+ "var scripts = document.scripts || document.getElementsByTagName(\"script\")," +
42
+ "src = [];" +
43
+ "for( var i = 1, len = scripts.length; i<len; i++ ) {" +
44
+ "src.push( scripts[i].src );" +
45
+ "}" +
46
+ "parent.UM.getEditor(<<id>>).getWidgetData(\'map\').requestMapApi( src );" +
47
+ "};" +
48
+ "function mapReadyStateChange ( state ) { " +
49
+ " if ( state === 'complete' || state === 'loaded' ) {" +
50
+ " document.close(); " +
51
+ " } }" +
52
+ "</scr_ipt>" +
53
+ "<scr_ipt onreadystatechange='mapReadyStateChange(this.readyState);' onload='mapReadyStateChange(\"loaded\");' src=\"http://api.map.baidu.com/api?v=2.0&ak=6b6c1a67eaa7db1ca6d6da28e590e343&services=true\"></scr_ipt>" +
54
+ "</body>" +
55
+ "</html>" +
56
+ "</script>",
57
+ initContent: function (editor, $widget) {
58
+
59
+ var me = this,
60
+ lang = editor.getLang(widgetName),
61
+ theme_url = editor.options.themePath + editor.options.theme;
62
+
63
+ if( me.inited ) {
64
+ me.preventDefault();
65
+ return false;
66
+ }
67
+
68
+ me.inited = true;
69
+
70
+ me.lang = lang;
71
+ me.editor = editor;
72
+
73
+ me.root().html($.parseTmpl(me.tpl, $.extend({}, lang['static'], {
74
+ 'theme_url': theme_url
75
+ })));
76
+
77
+ me.initRequestApi();
78
+
79
+ },
80
+ /**
81
+ * 初始化请求API
82
+ */
83
+ initRequestApi: function () {
84
+
85
+ var $ifr = null;
86
+
87
+ //已经初始化过, 不用再次初始化
88
+ if (window.BMap && window.BMap.Map) {
89
+ this.initBaiduMap();
90
+ } else {
91
+
92
+ $ifr = $('<iframe style="display: none;"></iframe>');
93
+ $ifr.appendTo( this.root() );
94
+
95
+ $ifr = $ifr[ 0 ].contentWindow.document;
96
+
97
+ $ifr.open();
98
+ $ifr.write( this.root().find(".edui-tpl-container").html().replace( /scr_ipt/g, 'script').replace('<<id>>',"'" + this.editor.id + "'") );
99
+
100
+ }
101
+
102
+ },
103
+ requestMapApi: function (src) {
104
+
105
+ var me = this;
106
+
107
+ if (src.length) {
108
+
109
+ var _src = src[0];
110
+
111
+ src = src.slice(1);
112
+
113
+ if (_src) {
114
+ $.getScript(_src, function () {
115
+ me.requestMapApi(src);
116
+ });
117
+ } else {
118
+ me.requestMapApi(src);
119
+ }
120
+
121
+ } else {
122
+
123
+ me.initBaiduMap();
124
+
125
+ }
126
+
127
+
128
+ },
129
+ initBaiduMap: function () {
130
+
131
+ var $root = this.root(),
132
+ map = new BMap.Map($root.find(".edui-map-container")[0]),
133
+ me = this,
134
+ marker,
135
+ point,
136
+ imgcss,
137
+ img = $(me.editor.selection.getRange().getClosedNode());
138
+
139
+ map.enableInertialDragging();
140
+ map.enableScrollWheelZoom();
141
+ map.enableContinuousZoom();
142
+
143
+ if (img.length && /api[.]map[.]baidu[.]com/ig.test(img.attr("src"))) {
144
+ var url = img.attr("src"),
145
+ centerPos = me.getPars(url, "center").split(","),
146
+ markerPos = me.getPars(url, "markers").split(",");
147
+ point = new BMap.Point(Number(centerPos[0]), Number(centerPos[1]));
148
+ marker = new BMap.Marker(new BMap.Point(Number(markerPos[0]), Number(markerPos[1])));
149
+ map.addControl(new BMap.NavigationControl());
150
+ map.centerAndZoom(point, Number(me.getPars(url, "zoom")));
151
+ imgcss = img.attr('style');
152
+ } else {
153
+ point = new BMap.Point(116.404, 39.915); // 创建点坐标
154
+ marker = new BMap.Marker(point);
155
+ map.addControl(new BMap.NavigationControl());
156
+ map.centerAndZoom(point, 10); // 初始化地图,设置中心点坐标和地图级别。
157
+ }
158
+ marker.enableDragging();
159
+ map.addOverlay(marker);
160
+
161
+ me.map = map;
162
+ me.marker = marker;
163
+ me.imgcss = imgcss;
164
+ },
165
+ doSearch: function () {
166
+ var me = this,
167
+ city = me.root().find('.edui-map-city').val(),
168
+ address = me.root().find('.edui-map-address').val();
169
+
170
+ if (!city) {
171
+ alert(me.lang.cityMsg);
172
+ return;
173
+ }
174
+ var search = new BMap.LocalSearch(city, {
175
+ onSearchComplete: function (results) {
176
+ if (results && results.getNumPois()) {
177
+ var points = [];
178
+ for (var i = 0; i < results.getCurrentNumPois(); i++) {
179
+ points.push(results.getPoi(i).point);
180
+ }
181
+ if (points.length > 1) {
182
+ me.map.setViewport(points);
183
+ } else {
184
+ me.map.centerAndZoom(points[0], 13);
185
+ }
186
+ point = me.map.getCenter();
187
+ me.marker.setPoint(point);
188
+ } else {
189
+ alert(me.lang.errorMsg);
190
+ }
191
+ }
192
+ });
193
+ search.search(address || city);
194
+ },
195
+ getPars: function (str, par) {
196
+ var reg = new RegExp(par + "=((\\d+|[.,])*)", "g");
197
+ return reg.exec(str)[1];
198
+ },
199
+ reset: function(){
200
+ this.map && this.map.reset();
201
+ },
202
+ initEvent: function () {
203
+ var me = this,
204
+ $root = me.root();
205
+
206
+ $root.find('.edui-map-address').on('keydown', function (evt) {
207
+ evt = evt || event;
208
+ if (evt.keyCode == 13) {
209
+ me.doSearch();
210
+ return false;
211
+ }
212
+ });
213
+
214
+ $root.find(".edui-map-button").on('click', function (evt) {
215
+ me.doSearch();
216
+ });
217
+
218
+ $root.find(".edui-map-address").focus();
219
+
220
+ $root.on( "mousewheel DOMMouseScroll", function ( e ) {
221
+ return false;
222
+ } );
223
+
224
+ },
225
+ width: 580,
226
+ height: 408,
227
+ buttons: {
228
+ ok: {
229
+ exec: function (editor) {
230
+ var widget = editor.getWidgetData(widgetName),
231
+ center = widget.map.getCenter(),
232
+ zoom = widget.map.getZoom(),
233
+ size = widget.map.getSize(),
234
+ point = widget.marker.P;
235
+
236
+ if (widget.root().find(".edui-map-dynamic")[0].checked) {
237
+ var URL = editor.getOpt('UMEDITOR_HOME_URL'),
238
+ url = [URL + (/\/$/.test(URL) ? '':'/') + "dialogs/map/map.html" +
239
+ '#center=' + center.lng + ',' + center.lat,
240
+ '&zoom=' + zoom,
241
+ '&width=' + size.width,
242
+ '&height=' + size.height,
243
+ '&markers=' + point.lng + ',' + point.lat].join('');
244
+ editor.execCommand('inserthtml', '<iframe class="ueditor_baidumap" src="' + url + '" frameborder="0" width="' + (size.width+4) + '" height="' + (size.height+4) + '"></iframe>');
245
+ } else {
246
+ url = "http://api.map.baidu.com/staticimage?center=" + center.lng + ',' + center.lat +
247
+ "&zoom=" + zoom + "&width=" + size.width + '&height=' + size.height + "&markers=" + point.lng + ',' + point.lat;
248
+ editor.execCommand('inserthtml', '<img width="' + size.width + '"height="' + size.height + '" src="' + url + '"' + (widget.imgcss ? ' style="' + widget.imgcss + '"' : '') + '/>', true);
249
+ }
250
+
251
+ widget.reset();
252
+ }
253
+ },
254
+ cancel: {
255
+ exec: function(editor){
256
+ editor.getWidgetData(widgetName).reset();
257
+ }
258
+ }
259
+ }
260
+ });
261
+
262
+ })();
263
+