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.