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
Binary file
|
Binary file
|
Binary file
|
@@ -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
|
+
|