PluginProbe
CodePeople Post Map for Google Maps / 1.2.3
CodePeople Post Map for Google Maps v1.2.3
1.3.0 1.2.9 1.2.8 1.2.7 1.2.6 trunk 1.0.44 1.1.0 1.1.1 1.1.2 1.1.3 1.1.4 1.1.5 1.1.6 1.1.7 1.1.8 1.2.0 1.2.1 1.2.2 1.2.3 1.2.4 1.2.5
codepeople-post-map / js / cpm.admin.js

cpm.admin.js in CodePeople Post Map for Google Maps 1.2.3, at js/cpm.admin.js

266 lines 8.9 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 /**
2 * CodePeople Post Map
3 * Version: 1.0.1
4 * Author: CodePeople
5 * Plugin URI: http://wordpress.dwbooster.com
6 */
7
8 (function ($) {
9 var _latlng_btn, _api_key = '';
10
11 if(
12 typeof cpm_global != 'undefined' &&
13 typeof cpm_global['api_key'] != 'undefined' &&
14 cpm_global['api_key'] != ''
15 ) _api_key = 'key='+cpm_global['api_key']+'&';
16
17 if(!('gm_authFailure' in window))
18 {
19 window['gm_authFailure'] = function()
20 {
21 $('.cpm_error_mssg').css({'font-weight': 'bold', 'font-size': '1.2em', 'color':'#FF0000', 'padding': '10px 0'}).html('Google maps failed to load! Be sure has been entered an API Key through the settings page of the plugin, and it can be used on this website.');
22 };
23 }
24
25 window["cpm_thumbnail_selection"] = function(e){
26 var thumbnail_field = $(e).parent().find('input[type="text"]');
27 var media = wp.media({
28 title: 'Select Point Thumbnail',
29 button: {
30 text: 'Select Image'
31 },
32 multiple: false
33 }).on('select',
34 (function( field ){
35 return function() {
36 var attachment = media.state().get('selection').first().toJSON();
37 if( !/image/g.test( attachment.mime ) ) return;
38 var fullSize = attachment.url;
39 var imgUrl = (typeof attachment.sizes.thumbnail === "undefined") ? fullSize : attachment.sizes.thumbnail.url;
40 field.val( imgUrl );
41 };
42 })( thumbnail_field )
43 ).open();
44 return false;
45 };
46
47 //---------------------------------------------------------
48
49 function _get_latlng(request, callback){
50 var g = new google.maps.Geocoder();
51 g.geocode(request, callback);
52 };
53
54 window['cpm_get_latlng'] = function (){
55 function transform( v )
56 {
57 if( !isNaN( parseFloat( v ) ) && isFinite( v ) ) return v;
58 v = v.replace(/[\W_]/g, " " ).replace(/\s+/g, ' ' ).replace( /^\s+/, '' ).replace( /\s+$/, '' ).toLowerCase();
59 var ref = ( /[ne]/.test( v ) ) ? 1 : -1,
60 parts = v.split( ' ' ),
61 l = parts.length;
62
63 if( l >= 3 ) return ref * ( parts[ l - 3 ]*1 + parts[ l - 2 ]*1 / 60 + parts[ l - 1 ]*1 / 3600 );
64 return v;
65 };
66
67 var f = _latlng_btn.parents('.point_form'),
68 a = $('#cpm_point_address').val(),
69 longitude = $('#cpm_point_longitude').val(),
70 latitude = $('#cpm_point_latitude').val(),
71 language = $('#cpm_map_language').val(),
72 request = {};
73
74 // Remove unnecessary spaces characters
75 longitude = longitude.replace(/^\s+/, '').replace(/\s+$/, '');
76 latitude = latitude.replace(/^\s+/, '').replace(/\s+$/, '');
77 a = a.replace(/^\s+/, '').replace(/\s+$/, '');
78
79 if(longitude.length && latitude.length){
80 request['location'] = new google.maps.LatLng( transform( latitude ), transform( longitude ) );
81 }else if(a.length){
82 request['address'] = a.replace(/[\n\r]/g, '');
83 }else{
84 return false;
85 }
86
87 _get_latlng(
88 request,
89 (function( a, r )
90 {
91 return function(result, status)
92 {
93 if(status && status == "OK"){
94 // Update fields
95 var address = ( String( a ).trim().length && typeof r[ 'location' ] != 'undefined' ) ? a : result[0]['formatted_address'],
96 latitude = result[0]['geometry']['location'].lat(),
97 longitude = result[0]['geometry']['location'].lng();
98
99 if(address && latitude && longitude){
100 $('#cpm_point_address').val(address);
101 $('#cpm_point_longitude').val(longitude);
102 $('#cpm_point_latitude').val(latitude);
103
104 // Load Map
105 cpm_load_map(f.find('.cpm_map_container'),latitude, longitude);
106 }
107 }else{
108 alert('The point is not located: Be sure the address is valid, has been entered an API Key through the settings page of the plugin, and the Geocoding API is enabled in the Google Project.');
109 }
110 };
111
112 } )( a, request )
113 );
114 };
115
116 // Check the point or address existence
117 window['cpm_checking_point'] = function (e){
118 var language = 'en';
119 _latlng_btn = $(e);
120
121 if(typeof google != 'undefined' && google.maps){
122 cpm_get_latlng();
123 }else{
124 $('<script type="text/javascript" src="'+(( typeof window.location.protocol != 'undefined' ) ? window.location.protocol : 'http:' )+'//maps.google.com/maps/api/js?loading=async&'+_api_key+'callback=cpm_get_latlng'+((language) ? '&language='+language: '')+'&libraries=marker"></script>').appendTo('body');
125 }
126 };
127
128 window['cpm_load_map'] = function(container, latitude, longitude){
129 var icon_img = document.createElement("img");
130 icon_img.src = cpm_default_marker.replace(/^http:/i, '');
131
132 var c = container,
133 f = c.parents('.point_form'),
134 p = new google.maps.LatLng(latitude, longitude),
135 m = new google.maps.Map(c[0], {
136 zoom: 5,
137 center: p,
138 mapTypeId: google.maps.MapTypeId['ROADMAP'],
139
140 // Show / Hide controls
141 panControl: true,
142 scaleControl: true,
143 zoomControl: true,
144 mapTypeControl: true,
145 scrollWheel: true,
146
147 mapId: 'cpm_main_map'
148 }),
149 mk = new google.maps.marker.AdvancedMarkerElement({
150 position: p,
151 map: m,
152 content: icon_img,
153 draggable: true
154 });
155
156 google.maps.event.addListener(m, "click", function(e){
157 var latLng = e.latLng;
158 mk.setPosition(latLng);
159 });
160
161 google.maps.event.addListener(mk, 'position_changed', function(){
162 f.find('#cpm_point_latitude').val(mk.getPosition().lat());
163 f.find('#cpm_point_longitude').val(mk.getPosition().lng());
164 });
165 };
166
167 window['cpm_set_map_flag'] = function(){
168 var request = {};
169 if(cpm_point['longitude'] && cpm_point['latitude']){
170 request['location'] = new google.maps.LatLng(cpm_point['latitude'], cpm_point['longitude']);
171 }else if(cpm_point['address']){
172 request['address'] = cpm_point['address'].replace(/[\n\r]/g, '');
173 }
174
175 _get_latlng(request, function(result, status){
176 if(status && status == "OK"){
177 // Update fields
178 var address = result[0]['formatted_address'],
179 latitude = result[0]['geometry']['location'].lat(),
180 longitude = result[0]['geometry']['location'].lng();
181
182 if(address && latitude && longitude){
183 // Load Map
184 cpm_load_map($('.cpm_map_container'),latitude, longitude);
185 }
186 }
187 });
188 };
189
190 window[ 'cpm_display_more_info' ] = function( e ){
191 e = $( e );
192 e.parent().hide().siblings( '.cpm_more_info' ).show();
193 };
194
195 window[ 'cpm_hide_more_info' ] = function( e ){
196 e = $( e );
197 e.parent().hide().siblings( '.cpm_more_info_hndl' ).show();
198 };
199
200 function enable_disable_fields(f, v){
201 var p = f.parents('#map_data');
202 p.find('input[type="text"]').attr({'DISABLED':v,'READONLY':v});
203 p.find('select').attr({'DISABLED':v,'READONLY':v});
204 p.find('input[type="checkbox"]').filter('[id!="cpm_map_single"]').attr({'DISABLED':v,'READONLY':v});
205 };
206
207 $(function(){
208 // Actions for icons
209 $(".cpm_icon").on('click',function(){
210 var i = $(this);
211 $('.cpm_icon.cpm_selected').removeClass('cpm_selected');
212 i.addClass('cpm_selected');
213 $('#default_icon').val($('img', i).attr('src'));
214 }).on('mouseover',function(){
215 $(this).css({"border":"solid #BBBBBB 1px"})
216 }).on('mouseout',function(){
217 $(this).css({"border":"solid #F9F9F9 1px"})
218 });
219
220 window[ 'cpm_generate_shortcode' ] = function()
221 {
222 return '[codepeople-post-map mapid=""]';
223 };
224
225 // Action for insert shortcode
226 $('#cpm_map_shortcode').on('click',function(){
227 if(window.cpm_send_to_editor_default)
228 window.send_to_editor = window.cpm_send_to_editor_default;
229 if(send_to_editor){
230 send_to_editor(cpm_generate_shortcode());
231 }
232 var t = $('#content');
233 if(t.length){
234 var v= t.val()
235 if(v.indexOf('codepeople-post-map') == -1)
236 t.val(v+'[codepeople-post-map]');
237 }
238 });
239
240 // Create the script tag and load the maps api
241 if($('.cpm_map_container').length){
242 if(typeof google != 'undefined' && google.maps)
243 {
244 cpm_set_map_flag();
245 }
246 else
247 {
248 $('<script type="text/javascript" src="'+(( typeof window.location.protocol != 'undefined' ) ? window.location.protocol : 'http:' )+'//maps.google.com/maps/api/js?loading=async&'+_api_key+'callback=cpm_set_map_flag&libraries=marker"></script>').appendTo('body');
249 }
250 }
251
252 $('#cpm_map_single').each(function(){
253 var f = $(this);
254 enable_disable_fields(f, !f[0].checked);
255 f.on('click',function(){
256 enable_disable_fields(f,!f[0].checked);
257 });
258 });
259
260 // Show/hide map settings on single pages.
261 $('#cpm_map_single').on('change',function(){
262 $('.cpm-map-settings')[this.checked ? 'show' : 'hide']();
263 });
264
265 });
266 })(jQuery);