PageSourceSearch

https://www.bgcgh.ca/wp-content/plugins/wp-google-maps/js/v8/settings-page.js?ver=10.0.09+pro-10.0.07

js bgcgh.ca collected 2026-10-06 18:39:34 UTC 15,150 bytes, 505 lines download raw bytes

1/**
2 * @namespace WPGMZA
3 * @module SettingsPage
4 * @requires WPGMZA
5 */
6
7var $_GET = {};
8if(document.location.toString().indexOf('?') !== -1) {
9    var query = document.location
10                   .toString()
11                   // get the query string
12                   .replace(/^.*?\?/, '')
13                   // and remove any existing hash string (thanks, @vrijdenker)
14                   .replace(/#.*$/, '')
15                   .split('&');
16
17    for(var wpgmza_i=0, wpgmza_l=query.length; wpgmza_i<wpgmza_l; wpgmza_i++) {
18       var aux = decodeURIComponent(query[wpgmza_i]).split('=');
19       $_GET[aux[0]] = aux[1];
20    }
21}
22
23jQuery(function($) {
24	
25	WPGMZA.SettingsPage = function()
26	{
27		var self = this;
28		
29		this._keypressHistory = [];
30		this._codemirrors = {};
31		
32		this.updateEngineSpecificControls();
33		this.updateMarkerRenderSpecificControls();
34		this.updateAddressProviderSpecificControls();
35		this.updateStorageControls();
36		this.updateBatchControls();
37		this.updateGDPRControls();
38		this.updateWooControls();
39		this.updateInsightsControls();
40		
41		//$("#wpgmza-developer-mode").hide();
42		$(window).on("keypress", function(event) {
43			self.onKeyPress(event);
44		});
45
46
47		
48
49		
50		jQuery('body').on('click',".wpgmza_destroy_data", function(e) {
51			e.preventDefault();
52			var ttype = jQuery(this).attr('danger');
53			var warning = 'Are you sure?';
54			if (ttype == 'wpgmza_destroy_all_data') { warning = 'Are you sure? This will delete ALL data and settings for WP Go Maps!'; }
55
56			let destroyPacket = {
57				action: 'wpgmza_maps_settings_danger_zone_delete_data',
58				type: ttype,
59				nonce: wpgmza_dz_nonce
60			};
61
62			if(ttype == 'wpgmza_destroy_by_map'){
63				destroyPacket.map_id = $('.wpgmza-danger-zone-map-target-select select').val();
64				destroyPacket.data_type = $('.wpgmza-danger-zone-map-target-data-select').val();
65
66				warning = `Are you sure? This will delete all ${destroyPacket.data_type} for map ID: ${destroyPacket.map_id}`;
67			}
68
69			if (window.confirm(warning)) {
70				jQuery.ajax(WPGMZA.ajaxurl, {
71		    		method: 'POST',
72		    		data: destroyPacket,
73		    		success: function(response, status, xhr) {
74		    			if (ttype == 'wpgmza_destroy_all_data') {
75		    				window.location.replace('admin.php?page=wp-google-maps-menu&action=welcome_page');
76		    			} else if (ttype == 'wpgmza_reset_all_settings') {
77		    				window.location.reload();
78		    			}  else {
79		    				alert('Complete.');
80		    			}
81		    			
82	    			}
83		    	});
84	        }
85
86			
87
88		});
89
90		
91		$("select[name='wpgmza_maps_engine']").on("change", function(event) {
92			self.updateEngineSpecificControls();
93		});
94
95		$("input[name='wpgmza_maps_engine']").on("change", function(event) {
96			self.updateEngineSpecificControls();
97		});
98
99		$("select[name='googleMarkerMode']").on('change', function(event){
100			/* For google maps, let's just trigger the event dispatch for render mode - Later, we'll do the same with OL I imagine */
101			self.updateMarkerRenderSpecificControls();
102		})
103
104		$("select[name='address_provider']").on('change', function(event) {
105			self.updateAddressProviderSpecificControls();
106		});
107		
108		$('[name="wpgmza_settings_marker_pull"]').on('click', function(event) {
109			self.updateStorageControls();
110		});
111
112		$('input[name="enable_batch_loading"]').on('change', function(event) {
113			self.updateBatchControls();
114		});
115		
116		$("input[name='wpgmza_gdpr_require_consent_before_load'], input[name='wpgmza_gdpr_require_consent_before_vgm_submit'], input[name='wpgmza_gdpr_override_notice']").on("change", function(event) {
117			self.updateGDPRControls();
118		});
119
120		$('input[name="woo_checkout_map_enabled"]').on('change', function(event) {
121			self.updateWooControls();
122		});
123
124		$('input[name="enable_insights"]').on('change', function(event) {
125			self.updateInsightsControls();
126		});
127
128		$('select[name="tile_server_url"]').on('change', function(event){
129			if($('select[name="tile_server_url"]').val() === "custom_override"){
130				$('.wpgmza_tile_server_override_component').removeClass('wpgmza-hidden');
131				$('.wpgmza_tile_server_key_field_name_override').removeClass('wpgmza-hidden');
132				$('.wpgmza_tile_server_type_override').removeClass('wpgmza-hidden');
133			} else {
134				$('.wpgmza_tile_server_override_component').addClass('wpgmza-hidden');
135				$('.wpgmza_tile_server_key_field_name_override').addClass('wpgmza-hidden');
136				$('.wpgmza_tile_server_type_override').addClass('wpgmza-hidden');
137			}
138		});
139		$('select[name="tile_server_url"]').trigger('change');
140		
141		jQuery('#wpgmza_flush_cache_btn').on('click', function(){
142			jQuery(this).attr('disabled', 'disabled');
143			WPGMZA.settingsPage.flushGeocodeCache();
144		});
145		
146		$("#wpgmza-global-settings").tabs({
147	       create: function(event, ui) {
148	       		
149	       	if (typeof $_GET['highlight'] !== 'undefined') {
150
151					var elmnt = document.getElementById($_GET['highlight']);
152					elmnt.classList.add('highlight-item');
153					
154					setTimeout(function() {
155						elmnt.classList.add('highlight-item-step-2');	
156					},1000);
157					
158					var yOffset = -100; 
159					var y = elmnt.getBoundingClientRect().top + window.pageYOffset + yOffset;
160					window.scrollTo({top: y, behavior: 'smooth'});
161				
162				}
163	       },
164	       activate: function(event, ui){
165	       	for(var i in self._codemirrors){
166	       		self._codemirrors[i].refresh();
167	       	}
168
169			/* Trigger tile server update changes */
170			$(document.body).trigger('tileserverpreview.update.wpgmza');
171	       }
172	    });
173
174	    $( "#wpgmza-global-setting" ).on( "create", function(event, ui) {
175			/* Not used */
176			// alert('now');
177		});
178		
179		$("#wpgmza-global-settings fieldset").each(function(index, el) {
180			
181			var children = $(el).children(":not(legend)");
182			children.wrapAll("<span class='settings-group'></span>");
183			
184		});
185
186		$("textarea[name^='wpgmza_custom_']").each(function(){
187			var name = $(this).attr('name');
188			var type = name.replace("wpgmza_custom_", "") === "js" ? "javascript" : "css";
189
190			self._codemirrors[name] = wp.CodeMirror.fromTextArea(this, {
191				lineNumbers: true,
192				mode: type,
193				theme: "wpgmza"
194			});
195
196			self._codemirrors[name].on('change', function(instance){
197				instance.save();
198			});
199
200			self._codemirrors[name].refresh();
201		});
202
203		$('.wpgmza-integration-tool-button').on('click', function(event){
204			event.preventDefault();
205			const type = $(this).data('tool-type');
206			if(type){
207				const data = {
208					type : type
209				};
210
211				const button = $(this);
212				button.attr('disabled', 'disabled');
213
214				WPGMZA.restAPI.call("/integration-tools/", {
215					method:	"POST",
216					data:	data,
217					success: function(data, status, xhr) {
218						button.removeAttr('disabled');
219
220						if(data){
221							if(data.type){
222								switch(data.type){
223									case 'test_collation':
224										if(!data.success){
225											$('.wpgmza-integration-tool-button[data-tool-type="test_collation"]').addClass('wpgmza-hidden');
226											$('.wpgmza-integration-tool-button[data-tool-type="resolve_collation"]').removeClass('wpgmza-hidden');
227										}
228
229										if(data.message){
230											window.alert(data.message);
231										}
232										break;
233									case 'resolve_collation':
234										if(!data.success){
235											$('.wpgmza-integration-tool-button[data-tool-type="test_collation"]').removeClass('wpgmza-hidden');
236											$('.wpgmza-integration-tool-button[data-tool-type="resolve_collation"]').addClass('wpgmza-hidden');
237										}
238
239										if(data.message){
240											window.alert(data.message);
241										}
242										break;
243									default:
244										if(data.message){
245											window.alert(data.message);
246										}
247										break;
248								}
249							}
250						}
251					}
252				});
253
254			}
255		});
256
257		$('.wpgmza-system-health-tool-button').on('click', function(event){
258			event.preventDefault();
259			const type = $(this).data('tool-type');
260			if(type){
261				const data = {
262					type : type
263				};
264
265				const button = $(this);
266				button.attr('disabled', 'disabled');
267
268				WPGMZA.restAPI.call("/system-health-tools/", {
269					method:	"POST",
270					data:	data,
271					success: function(data, status, xhr) {
272						button.removeAttr('disabled');
273						if(data){
274							if(data.message){
275								window.alert(data.message);
276							}
277						}
278					}
279				});
280			}
281		});
282
283		$('.wpgmza-performance-tool-button').on('click', function(event){
284			event.preventDefault();
285			const type = $(this).data('tool-type');
286			if(type){
287				const data = {
288					type : type
289				};
290
291				const button = $(this);
292				button.attr('disabled', 'disabled');
293
294				WPGMZA.restAPI.call("/performance-tools/", {
295					method:	"POST",
296					data:	data,
297					success: function(data, status, xhr) {
298						button.removeAttr('disabled');
299						if(data){
300							if(data.message){
301								window.alert(data.message);
302							}
303						}
304					}
305				});
306			}
307		});
308	}
309	
310	WPGMZA.SettingsPage.createInstance = function()
311	{
312		return new WPGMZA.SettingsPage();
313	}
314	
315	/**
316	 * Updates engine specific controls, hiding irrelevant controls (eg Google controls when OpenLayers is the selected engine) and showing relevant controls.
317	 * @method
318	 * @memberof WPGMZA.SettingsPage
319	 */
320	WPGMZA.SettingsPage.prototype.updateEngineSpecificControls = function(){
321		let engine = $("select[name='wpgmza_maps_engine']").val();
322		if($("select[name='wpgmza_maps_engine']").length <= 0){
323			/* Likely using the new grid selector */
324			engine = $('input[type="radio"][name="wpgmza_maps_engine"]:checked').val();
325		}
326		
327		$("[data-required-maps-engine]").each((index, element) => {
328			element = $(element);
329			let supported = element.data('required-maps-engine');
330			if(supported){
331				supported = supported.split('|');
332				if(supported.indexOf(engine) !== -1){
333					element.show();
334				} else {
335					element.hide();
336				}
337			}
338		});
339
340		/* Trigger tile server update changes */
341		$(document.body).trigger('tileserverpreview.update.wpgmza');
342
343		this.updateMarkerRenderSpecificControls();
344	}
345
346	WPGMZA.SettingsPage.prototype.updateMarkerRenderSpecificControls = function(){
347		let engine = $("select[name='wpgmza_maps_engine']").val();
348		if($("select[name='wpgmza_maps_engine']").length <= 0){
349			/* Likely using the new grid selector */
350			engine = $('input[type="radio"][name="wpgmza_maps_engine"]:checked').val();
351		}
352		
353		let renderMode = false;
354		if(engine === 'google-maps'){
355			renderMode = $("select[name='googleMarkerMode']").val();
356		} else if(engine === 'open-layers' || engine === 'open-layers-latest'){
357			renderMode = $("select[name='olMarkerMode']").val();
358		}
359
360		const compileMode = `${engine}.${renderMode}`;
361		$("[data-required-marker-renderer]").each((index, element) => {
362			element = $(element);
363			let target = element.data('required-marker-renderer');
364			if(target){
365				if(target === compileMode){
366					element.show();
367				} else {
368					element.hide();
369				}
370			}
371		});
372
373		/* Trigger tile server update changes */
374		$(document.body).trigger('tileserverpreview.update.wpgmza');
375	}
376
377	WPGMZA.SettingsPage.prototype.updateAddressProviderSpecificControls = function(){
378		let provider = $("select[name='address_provider']").val();
379
380		$("[data-required-address-provider]").each((index, element) => {
381			element = $(element);
382			let supported = element.data('required-address-provider');
383			if(supported){
384				supported = supported.split('|');
385				if(supported.indexOf(provider) !== -1){
386					element.show();
387				} else {
388					element.hide();
389				}
390			}
391		});
392
393		$(document.body).trigger('addressprovider.update.wpgmza');
394	}
395	
396	WPGMZA.SettingsPage.prototype.updateStorageControls = function()
397	{
398		if($("input[name='wpgmza_settings_marker_pull'][value='1']").is(":checked"))
399			$("#xml-cache-settings").show();
400		else
401			$("#xml-cache-settings").hide();
402	}
403
404	WPGMZA.SettingsPage.prototype.updateBatchControls = function(){
405		if($("input[name='enable_batch_loading']").is(":checked")){
406			$('#batch-loader-settings').show();
407		} else {
408			$('#batch-loader-settings').hide();
409		}
410	}
411	
412	/**
413	 * Updates the GDPR controls (eg visibility state) based on the selected GDPR settings
414	 * @method
415	 * @memberof WPGMZA.SettingsPage
416	 */
417	WPGMZA.SettingsPage.prototype.updateGDPRControls = function()
418	{
419		var showNoticeControls = $("input[name='wpgmza_gdpr_require_consent_before_load']").prop("checked");
420		
421		var vgmCheckbox = $("input[name='wpgmza_gdpr_require_consent_before_vgm_submit']");
422		
423		if(vgmCheckbox.length)
424			showNoticeControls = showNoticeControls || vgmCheckbox.prop("checked");
425		
426		var showOverrideTextarea = showNoticeControls && $("input[name='wpgmza_gdpr_override_notice']").prop("checked");
427		
428		if(showNoticeControls) {
429			$("#wpgmza-gdpr-compliance-notice").show(WPGMZA.InternalEngine.isLegacy() ? "slow" : false);
430		} else {
431			$("#wpgmza-gdpr-compliance-notice").hide(WPGMZA.InternalEngine.isLegacy() ? "slow" : false);
432		}
433		
434		if(showOverrideTextarea) {
435			$("#wpgmza_gdpr_override_notice_text").show(WPGMZA.InternalEngine.isLegacy() ? "slow" : false);
436		} else {
437			$("#wpgmza_gdpr_override_notice_text").hide(WPGMZA.InternalEngine.isLegacy() ? "slow" : false);
438		}
439	}
440
441	/**
442	 * Update the Woo controls (visibility etc) based on toggle selections
443	 * @method
444	 * @memberof WPGMZA.SettingsPage
445	*/
446	WPGMZA.SettingsPage.prototype.updateWooControls = function(){
447		const showMapSelect =  $("input[name='woo_checkout_map_enabled']").prop("checked");
448		if(showMapSelect){
449			$('.woo-checkout-maps-select-row').show();
450		} else {
451			$('.woo-checkout-maps-select-row').hide();
452		}
453	}
454
455	/**
456	 * Update the Insight controls (visibility etc) based on toggle selections
457	 * @method
458	 * @memberof WPGMZA.SettingsPage
459	*/
460	WPGMZA.SettingsPage.prototype.updateInsightsControls = function(){
461		const showInsightControls =  $("input[name='enable_insights']").prop("checked");
462		if(showInsightControls){
463			$('.wpgmza-insights-controls').show();
464		} else {
465			$('.wpgmza-insights-controls').hide();
466		}
467	}
468
469	/**
470	 * Flushes the geocode cache
471	 */
472	WPGMZA.SettingsPage.prototype.flushGeocodeCache = function()
473	{
474		var OLGeocoder = new WPGMZA.OLGeocoder();
475		OLGeocoder.clearCache(function(response){
476			jQuery('#wpgmza_flush_cache_btn').removeAttr('disabled');
477		});
478	}
479	
480	WPGMZA.SettingsPage.prototype.onKeyPress = function(event)
481	{
482		var string;
483		
484		this._keypressHistory.push(event.key);
485		
486		if(this._keypressHistory.length > 9)
487			this._keypressHistory = this._keypressHistory.slice(this._keypressHistory.length - 9);
488		
489		string = this._keypressHistory.join("");
490		
491		if(string == "codecabin" && !this._developerModeRevealed)
492		{
493			$("fieldset#wpgmza-developer-mode").show();
494			this._developerModeRevealed = true;
495		}
496	}
497	
498	$(document).ready(function(event) {
499		
500		if(WPGMZA.getCurrentPage())
501			WPGMZA.settingsPage = WPGMZA.SettingsPage.createInstance();
502		
503	});
504	
505});

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.