MapPress Easy Google Maps - Version 2.52.1

Version Description

  • Fixed: ajax error when opening map for edit
Download this release

Release Info

Developer chrisvrichardson
Plugin Icon 128x128 MapPress Easy Google Maps
Version 2.52.1
Comparing to
See all releases

Code changes from version 2.50.11 to 2.52.1

forms/media.php CHANGED
@@ -9,7 +9,8 @@
9
  <option value='post'><?php _e('This post', 'mappress-google-maps-for-wordpress');?></option>
10
  <option value='all'><?php _e('All posts', 'mappress-google-maps-for-wordpress');?></option>
11
  </select>
12
- <input type='text' size="15" class='mapp-media-search' placeholder='<?php _e('Search post title', 'mappress-google-maps-for-wordpress');?>'>
 
13
  </div>
14
  <div class='mapp-list mapp-media-list'></div>
15
  </div>
@@ -55,8 +56,8 @@
55
 
56
  <script type='text/template' id='mapp-tmpl-media-list'>
57
  <div class='mapp-items'>
58
- <# _.forEach(list.items, function(item, i) { #>
59
- <div class='mapp-item' data-mapp-media='edit' data-mapp-mapid='{{ item.mapid }}'>
60
 
61
  <# if (type == 'all') { #>
62
  <# if (item.post_title) { #>{{ item.post_title }}<# } else { #><?php _e('Untitled', 'mappress-google-maps-for-wordpress');?><# } #>
@@ -66,21 +67,18 @@
66
  <# if (item.map_title) { #>{{ item.map_title }}<# } else { #><?php _e('Untitled', 'mappress-google-maps-for-wordpress');?><# } #>
67
 
68
  <div class='mapp-actions'>
69
- <a href='#' data-mapp-media='edit'><?php _e('Edit', 'mappress-google-maps-for-wordpress');?></a> |&nbsp;
70
- <a href='#' data-mapp-media='insert'><?php _e('Insert into post', 'mappress-google-maps-for-wordpress');?></a> |&nbsp;
71
- <a href='#' data-mapp-media='remove'><?php _e('Delete', 'mappress-google-maps-for-wordpress');?></a>
72
  </div>
73
  </div>
74
  <# }); #>
75
  </div>
76
  <div class='mapp-list-footer'>
77
- <# if (list.items.length == 0) { #>
78
  <?php _e('No maps found', 'mappress-google-maps-for-wordpress');?>
79
  <# } #>
80
- <# if (list.page < list.pages) { #>
81
- <input type='button' class='button' data-mapp-media='more' value='<?php _e('Load More', 'mappress-google-maps-for-wordpress');?>'>
82
- <span class='spinner'></span>
83
- <# } #>
84
  </div>
85
  </div>
86
  </script>
9
  <option value='post'><?php _e('This post', 'mappress-google-maps-for-wordpress');?></option>
10
  <option value='all'><?php _e('All posts', 'mappress-google-maps-for-wordpress');?></option>
11
  </select>
12
+ <input type='text' size="15" class='mapp-media-search' placeholder='<?php _e('Filter by title', 'mappress-google-maps-for-wordpress');?>'>
13
+ <span class='spinner'></span>
14
  </div>
15
  <div class='mapp-list mapp-media-list'></div>
16
  </div>
56
 
57
  <script type='text/template' id='mapp-tmpl-media-list'>
58
  <div class='mapp-items'>
59
+ <# _.forEach(items, function(item, i) { #>
60
+ <div class='mapp-item' data-mapp-media-list='edit' data-mapp-mapid='{{ item.mapid }}'>
61
 
62
  <# if (type == 'all') { #>
63
  <# if (item.post_title) { #>{{ item.post_title }}<# } else { #><?php _e('Untitled', 'mappress-google-maps-for-wordpress');?><# } #>
67
  <# if (item.map_title) { #>{{ item.map_title }}<# } else { #><?php _e('Untitled', 'mappress-google-maps-for-wordpress');?><# } #>
68
 
69
  <div class='mapp-actions'>
70
+ <a href='#' data-mapp-media-list='edit'><?php _e('Edit', 'mappress-google-maps-for-wordpress');?></a> |&nbsp;
71
+ <a href='#' data-mapp-media-list='insert'><?php _e('Insert into post', 'mappress-google-maps-for-wordpress');?></a> |&nbsp;
72
+ <a href='#' data-mapp-media-list='remove'><?php _e('Delete', 'mappress-google-maps-for-wordpress');?></a>
73
  </div>
74
  </div>
75
  <# }); #>
76
  </div>
77
  <div class='mapp-list-footer'>
78
+ <# if (items.length == 0) { #>
79
  <?php _e('No maps found', 'mappress-google-maps-for-wordpress');?>
80
  <# } #>
81
+ {{{more}}}
 
 
 
82
  </div>
83
  </div>
84
  </script>
js/mappress.min.js CHANGED
@@ -1 +1 @@
1
- var mapp=window.mapp||{};+function(n){mapp.Map=function(n,t){this.defaults={center:null,editable:null,height:null,initialOpenDirections:null,initialOpenInfo:null,layers:null,mapid:null,mapTypeId:null,metaKey:null,mapOpts:null,name:null,pois:null,postid:null,query:null,sel:null,title:null,width:null,zoom:null};this.highlight=null;this.iw=null;this.places=null;this.poi=null;this.settings=t?t:{};this.templates=null;this.dir_=null;this.div={};this.layers_={};this.map_=null;this.pois_=[];this.xhr_;this.zindex_=0;_.extend(this,this.defaults,n,this.settings)};mapp.Map.prototype={display:function(){var t=this,i;if(this.div.layout=this.sel?n(".mapp-layout",this.sel):n("#"+this.name+"-layout"),n.each(["canvas","controls","dialog","directions","filters","iw","list","menu","search"],function(i,r){t.div[r]=n(".mapp-"+r,t.div.layout)}),this.sanity()===!0){this.templates=this.editable?{loop:"edit-loop",item:"edit-item",popup:"edit-popup"}:this.query?{loop:"map-loop",item:"mashup-item",popup:"mashup-popup"}:{loop:"map-loop",item:"map-item",popup:"map-popup"};mappl10n.options.engine=="leaflet"?(i=_.extend({attribution:'Map data © <a href="https://openstreetmap.org">OpenStreetMap<\/a>',minZoom:0,scrollWheelZoom:!1,worldCopyJump:!0,zoomControl:null},this.mapOpts),i.minZoom=isNaN(parseInt(i.minZoom))?0:parseInt(i.minZoom),this.map_=new L.Map(this.div.canvas.get(0),i),L.control.zoom({position:"bottomright",zoomInTitle:"",zoomOutTitle:""}).addTo(this.map_),this.iw=L.popup(),this.iw.setContent(this.div.iw.get(0))):(this.map_=new google.maps.Map(this.div.canvas.get(0),{mapTypeId:"roadmap",zoom:1}),i=_.extend({backgroundColor:"transparent",clickableIcons:!1,fullscreenControl:!1,keyboardShortcuts:!1,mapTypeControl:!0,mapTypeControlOptions:{position:google.maps.ControlPosition.TOP_RIGHT,style:google.maps.MapTypeControlStyle.DROPDOWN_MENU},minZoom:0,scaleControl:!0,scrollwheel:!1,streetViewControl:!this.editable&&!this.query},this.mapOpts),i.minZoom=isNaN(parseInt(i.minZoom))?0:parseInt(i.minZoom),this.map_.setOptions(i),this.iw=mappl10n.options.iwType=="ib"||this.editable?new mapp.InfoBox(this):new google.maps.InfoWindow,this.iw.setContent(this.div.iw.get(0)),this.addLayers());this.addStyles();this.addControls();this.addMenu();this.setMapTypeId(this.mapTypeId,!0);this.places=new mapp.Places(n(".mapp-places",this.div.search),{map:t});n(this.places).on("search.mapp",function(n,i){t.search(i)});this.addEvents("click drag",function(){t.close()});this.toggleView("mini",this.div.layout.width()<mappl10n.options.mini);this.div.layout.on("click","[data-mapp-action]",function(i){var r=n(this).attr("data-mapp-action");i.preventDefault();t.action(r,n(this).attr("data-mapp-"+r),n(this))});this.div.filters.on("change",function(){t.ajaxQuery()});n(window).resize(function(){t.resize()});this.places.parse(this.center,function(n){t.center=n&&n.geometry&&n.geometry.location?{lat:n.geometry.location.lat,lng:n.geometry.location.lng}:null;t.query?t.ajaxQuery(function(){t.initCenter()}):(t.setPois(t.pois),t.initCenter())})}},initCenter:function(){var n=this;this.recenter();this.renderList();this.query&&mappl10n.options.search&&!this.editable&&this.addSearchMove();mappl10n.options.engine=="leaflet"?this.initOpen():mapp.event.addListenerOnce(n.map_,"idle",function(){n.initOpen()})},initOpen:function(){var n=this.pois_.length?this.pois_[0]:null;this.initialOpenDirections?this.openDirections(null,n):n&&this.initialOpenInfo&&n.open()},search:function(n){var i,t,f,u,r;n&&n.geometry&&(i=n.geometry.location?n.geometry.location:null,t=n.geometry.viewport?n.geometry.viewport:null,mappl10n.options.engine=="leaflet"?(f=new L.LatLng(i.lat,i.lng),r=f.toBounds(mappl10n.options.radius*1e3)):(u=new google.maps.Circle({center:i,radius:mappl10n.options.radius*1e3}),r=t?new google.maps.LatLngBounds(new google.maps.LatLng(t.sw.lat,t.sw.lng),new google.maps.LatLng(t.ne.lat,t.ne.lng)).union(u.getBounds()):u.getBounds()),this.fitBounds(r),this.setView(i))},load:function(n){_.extend(this,this.defaults,n,this.settings);this.setMapTypeId(this.mapTypeId,!0);this.setPois(this.pois);this.recenter()},action:function(t,i,r){var f=this,u;switch(t){case"center":this.toggleView("menu",!1);this.close();this.recenter();break;case"dir":this.openDirections(null,this.poi);break;case"dir-from":this.openDirections(this.poi,null);break;case"filters-reset":this.div.filters.find(":input").each(function(){this.type=="checkbox"||this.type=="radio"?n(this).prop("checked",!1):n(this).val("")});this.ajaxQuery();break;case"filters-toggle":this.toggleView("filters");break;case"geolocate":this.places.geolocate(function(n){f.search(n)});break;case"layer":this.toggleLayer(i);this.toggleView("menu",!1);break;case"menu-toggle":this.toggleView("menu");break;case"open":u=r.attr("data-mapp-poi");this.open(this.pois_[u]);break;case"show":this.div.layout.show();this.resize();this.initCenter();break;case"view-map":this.toggleView("list",!1);break;case"view-list":this.toggleView("list",!0);break;default:return!0}},dialog:function(n,t){var i=this;n?(this.div.dialog.html(n),this.div.dialog.show(),t&&(clearTimeout(this.dialog.fade),this.dialog.fade=setTimeout(function(){i.dialog(null)},4e3))):this.div.dialog.hide()},addEvents:function(n,t){n=n.split(" ");for(var i=0;i<n.length;i++)mapp.event.addListener(this.map_,n[i],t)},close:function(){mappl10n.options.engine=="leaflet"?this.map_.closePopup():this.iw.close();this.select(null);n(this).triggerHandler("mapp.close")},openDirections:function(n,t){var i=n?n.getAddress():"",r=t?t.getAddress():"";this.dir_||(this.dir_=new mapp.Directions(this.div.directions,this));this.dir_.open(i,r)},sanity:function(){if(!this.div.canvas.length)return mapp.lib.log("MapPress: Missing map name or container for map: "+this.name);if(mappl10n.options.autoupdate==="tc")return mapp.lib.log("Maps API missing (800001)");if(typeof _=="undefined")return mapp.lib.alert("ERROR: underscore.js not loaded. Check cacheing / optimizing plugins.");if(mappl10n.options.engine=="leaflet"){if(typeof L=="undefined")return mapp.lib.alert("ERROR: Unable to load Leaflet")}else{if(typeof google=="undefined")return mapp.lib.alert("ERROR: Google Maps API not loaded");n(document).ready(function(){n('script[src*="https://maps.googleapis.com/maps/api/js?v=3"]').length>1&&mapp.lib.alert("ERROR: Google Maps API key loaded multiple times, please see MapPress FAQ.")})}return!0},select:function(t){if(n("[data-mapp-poi]",this.div.list).removeClass("mapp-selected"),t){var r=n.inArray(t,this.pois_),i=n('[data-mapp-poi="'+r+'"]',this.div.list);i.addClass("mapp-selected");mapp.lib.scrollTo(this.div.list,i);t.setZIndex(++this.zindex_)}this.poi=t},setHighlight:function(n){this.highlight&&(mappl10n.options.engine=="leaflet"?this.highlight.remove():this.highlight.setMap(null));n&&(mappl10n.options.engine=="leaflet"?this.highlight=new L.Marker(n.getPosition()).addTo(this.map_):(this.highlight=new google.maps.Marker({position:n.getPosition()}),this.highlight.setMap(this.map_)))},getMap:function(){return this.map_},renderList:function(){var i=this.getBounds(),r=0,u=this,t;if(!this.editable)for(t=0;t<this.pois_.length;t++)this.pois_[t].visible=this.pois_[t].type!="kml",this.query&&i&&!i.contains(this.pois_[t].getPosition())&&(this.pois_[t].visible=!1),r+=this.pois_[t].visible;this.div.list.html(mapp.lib.template(this.templates.loop,{map:this,pois:this.pois_,count:r}));this.editable&&n(".mapp-items",u.sel).sortable({axis:"y",cursor:"move",delay:200,update:function(){u.sortPois(n(this).sortable("toArray",{attribute:"data-mapp-poi"}))}})},getPois:function(){return this.pois_},insertPoi:function(n){var t=this;this.pois_.unshift(n);n.setMap(this);t.renderList();this.select(n)},removePoi:function(t){var r=this,i=n.inArray(t,this.pois_);i!=-1&&(this.pois_[i].setMap(null),this.pois_.splice(i,1),r.renderList())},resetPois:function(){for(i=0;i<this.pois_.length;i++)this.pois_[i].setMap(null);this.pois_=[];this.zindex_=0},setPois:function(n){var t,i;if(this.resetPois(),n){for(t=0;t<n.length;t++)i=new mapp.Poi(n[t]),this.pois_.push(i),i.id=this.pois_.length-1,i.setMap(this),i.setZIndex(this.zindex_+n.length-1-t);this.zindex_+=n.length-1}this.renderList()},sortPois:function(n){for(var r,t=Array(),i=0;i<n.length;i++){if(r=parseInt(n[i]),isNaN(r))return!1;t.push(this.pois_[r])}if(t.length!=this.pois_.length)return!1;this.pois_=t;this.renderList()},open:function(t,i){if(this.close(),this.select(t),mappl10n.options.mashupClick!="poi"&&t.postid&&t.url){window.open(t.url);return}if(this.toggleView("list",!1),this.div.iw.html(t.render("popup")),mappl10n.options.engine=="leaflet")this.iw.setLatLng(t.getPosition()),this.iw.options.offset=t.getAnchorPoint(),this.map_.openPopup(this.iw);else{var r=new google.maps.MVCObject;r.setValues({position:t.getPosition(i),anchorPoint:t.getAnchorPoint(i)});this.iw.open(this.map_,r)}n(this).triggerHandler("mapp.open",t)},renderMenu:function(){var t=this;for(layer in this.layers_)this.layers_[layer].getMap()&&n('[data-mapp-layer="'+layer+'"]',this.div.layout).addClass("mapp-active")},addStyles:function(){var u=this,l,f,r,i;if(mappl10n.options.engine=="leaflet"){if(this.editable){for(l=[],f=L.control.layers(),r=0;r<mappl10n.options.baseLayers.length;r++){var o=mappl10n.options.baseLayers[r],s=mappl10n.options.providers[o.provider],h=n.extend({},s,o);f.addBaseLayer(L.tileLayer(s.url,h),h.label)}mappl10n.options.baseLayers.length>1&&f.addTo(this.map_)}this.map_.on("baselayerchange",function(n){u.mapTypeId=n.layer.options.name})}else{var t=mappl10n.options.styles?mappl10n.options.styles:[],e=mappl10n.options.style,c=["roadmap","satellite","terrain","hybrid"];if(e&&typeof t[e]!="undefined"&&this.map_.setOptions({styles:t[e]}),this.editable){for(i in t)this.map_.mapTypes.set(i,new google.maps.StyledMapType(t[i],{name:i})),c.push(i);this.map_.setOptions({mapTypeControlOptions:{mapTypeIds:c,position:google.maps.ControlPosition.TOP_RIGHT,style:google.maps.MapTypeControlStyle.DROPDOWN_MENU}})}else this.mapTypeId&&typeof t[this.mapTypeId]!="undefined"&&this.map_.setOptions({styles:t[this.mapTypeId]});mapp.event.addListener(this.map_,"maptypeid_changed",function(){u.mapTypeId=u.map_.getMapTypeId()})}},addControls:function(){var n=this;this.div.controls.html(mapp.lib.template("map-controls",{map:this}))},addLayers:function(){var u,i,t,r;for(this.layers_={traffic:new google.maps.TrafficLayer,bicycling:new google.maps.BicyclingLayer,transit:new google.maps.TransitLayer},u=n.makeArray(this.layers),i=0;i<u.length;i++)t=n.trim(u[i]),r=t.split(".").pop(),this.layers_[t]?this.toggleLayer(t):r=="kml"||r=="kmz"?this.layers_[t]=new google.maps.KmlLayer({map:this.map_,preserveViewport:!0,url:t}):r=="json"&&(this.layers_[t]=new google.maps.Data({map:this.map_}).loadGeoJson(t))},addMenu:function(){var t=this;n("body").on("click",function(i){var r=n(i.target),u=r.attr("data-mapp-action");r==t.div.filters||u=="filters-toggle"||r.closest(t.div.filters).length||t.toggleView("filters",!1);r==t.div.menu||u=="menu-toggle"||r.closest(t.div.menu).length||t.toggleView("menu",!1)})},toggleLayer:function(t,i){var r=this;i=typeof i!="undefined"?i:this.layers_[t].getMap()==null;n.each(["traffic","bicycling","transit"],function(n,t){r.layers_[t].setMap(null)});i&&this.layers_[t].setMap(this.map_)},togglePois:function(n){n=!!n;for(var t=0;t<this.pois_.length;t++)this.pois_[t].setVisible(n)},toggleView:function(n,t){t=typeof t=="undefined"?!this.div.layout.hasClass("mapp-view-"+n):t;this.div.layout.toggleClass("mapp-view-"+n,t);n=="menu"&&t&&this.renderMenu();n=="directions"&&(this.close(),this.resize())},resize:function(){var n=this.getCenter();this.toggleView("mini",this.div.layout.width()<mappl10n.options.mini);mappl10n.options.engine=="leaflet"?this.map_.invalidateSize():mapp.event.trigger(this.map_,"resize");n&&this.setView(n)},recenter:function(){var t=this.center&&this.center.lat&&this.center.lng?this.center:null,n=this.zoom&&parseInt(this.zoom)?parseInt(this.zoom):null,i,r;if(t&&!n&&this.query){this.search({geometry:{location:{lat:t.lat,lng:t.lng}}});return}if(t){this.setView(t,n?n:1);return}if(this.pois_.length==0){this.setView({lat:0,lng:0},n?n:1);return}if(this.pois_.length==1){this.pois_[0].center(n);return}for(bounds=mappl10n.options.engine=="leaflet"?new L.LatLngBounds:new google.maps.LatLngBounds,i=0;i<this.pois_.length;i++)r=this.pois_[i].getBounds(),bounds=r?mappl10n.options.engine=="leaflet"?bounds.extend(r):bounds.union(r):bounds.extend(this.pois_[i].getPosition());n?this.setView(bounds.getCenter().toJSON(),n):this.fitBounds(bounds)},toJSON:function(){var n;for(this.pois=[],n=0;n<this.pois_.length;n++)this.pois.push(this.pois_[n].toJSON());return{center:this.center,height:this.height,mapid:this.mapid,mapTypeId:this.mapTypeId,metaKey:this.metaKey,pois:this.pois,title:this.title,width:this.width,zoom:this.zoom}},ajaxSave:function(n){var t=this,i=JSON.stringify(this),r=!this.mapid||!this.postid?mappl10n.options.postid:this.postid;mapp.lib.ajax({type:"POST",data:{action:"mapp_save",map:i,postid:r},callback:function(i){i.status=="OK"&&(t.mapid=i.data.mapid,n(i.data))}})},fitBounds:function(n,t){var t=mappl10n.options.engine=="leaflet"&&t?{paddingTopLeft:[t.left,t.top],paddingBottomRight:[t.right,t.bottom]}:t;return this.map_.fitBounds(n,t)},getBounds:function(){try{return this.map_.getBounds()}catch(n){return null}},getCenter:function(){try{return this.map_.getCenter()}catch(n){return null}},getMapTypeId:function(n){return mappl10n.options.engine=="leaflet"?"roadmap":this.map_.getMapTypeId(n)},setMapTypeId:function(t){var s=this,i,r,e,u,o,f;if(mappl10n.options.engine=="leaflet")for(this.map_.eachLayer(function(n){s.map_.removeLayer(n)}),t=!this.editable&&mappl10n.options.style&&t=="streets"?mappl10n.options.style:t,t=_.findIndex(mappl10n.options.baseLayers,{name:t})>=0?t:mappl10n.options.baseLayers[0].name,i=0;i<mappl10n.options.baseLayers.length;i++)r=mappl10n.options.baseLayers[i],e=mappl10n.options.providers[r.provider],r.name==t&&(u=n.extend({},e,r),o=L.tileLayer(u.url,u),o.addTo(this.map_));else f=n.inArray(t,["roadmap","satellite","terrain","hybrid"])!=-1,t=this.editable?f||typeof mappl10n.options.styles[t]!="undefined"?t:"roadmap":f?t:"roadmap",this.map_.setMapTypeId(t)},setView:function(n,t,i){mappl10n.options.engine=="leaflet"?(t==null&&(t=this.map_.getZoom()?this.map_.getZoom():0),this.map_.setView(n,t,i)):(n&&this.map_.setCenter(n),t&&this.map_.setZoom(parseInt(t)))}};mapp.Map.ajaxGet=function(n,t,i){mapp.lib.ajax({type:"GET",data:{action:"mapp_get",mapid:n},callback:function(n){if(n.status=="OK"){var r=new mapp.Map(n.data.map,t);i(r)}}})};mapp.Map.ajaxDelete=function(n,t){mapp.lib.ajax({type:"POST",data:{action:"mapp_delete",mapid:n},callback:function(n){n.status=="OK"&&t&&t()}})}}(jQuery);mapp=window.mapp||{};+function(n){mapp.Directions=function(t,i){this.sel=n(t);this.map=i;this.directionsRenderer=null;this.directionsService=null;this.placesService=null;var r=this;this.sel.on("keydown",function(n){n.which==13?(r.getDirections(),n.preventDefault()):n.which==27&&r.close()});this.sel.on("click","[data-mapp-action]",function(t){var i=n(this).attr("data-mapp-action"),u=n(".mapp-dir-daddr",r.sel).val(),f=n(".mapp-dir-saddr",r.sel).val();t.preventDefault();switch(i){case"dir-cancel":r.close();break;case"dir-get":r.getDirections();break;case"dir-myloc":r.map.places.geolocate(function(t){n(".mapp-dir-saddr",r.sel).val(t.name);r.getDirections()});break;case"dir-swap":n(".mapp-dir-saddr",r.sel).val(u);n(".mapp-dir-daddr",r.sel).val(f);r.getDirections()}});this.open=function(t,i){if(mappl10n.options.directions=="google"){this.openGoogle(t,i);return}this.map.toggleView("directions",!0);n(".mapp-dir-addr",this.sel).removeClass("mapp-error");n(".mapp-dir-saddr",this.sel).val(t);n(".mapp-dir-daddr",this.sel).val(i);n(".mapp-dir-get",this.sel).focus();n(".mapp-dir-saddr",this.sel).focus()};this.close=function(){this.map.toggleView("directions",!1);this.directionsRenderer&&(this.directionsRenderer.setPanel(null),this.directionsRenderer.getMap()&&(this.directionsRenderer.setMap(null),this.map.togglePois(!0)))};this.getDirections=function(){this.map.close();this.openGoogle(n(".mapp-dir-saddr",this.sel).val(),n(".mapp-dir-daddr",this.sel).val());return};this.openGoogle=function(n,t){var i=mappl10n.options.directionsServer;i.toLowerCase().indexOf("http")==-1&&(i="https://"+i);i+="?saddr="+encodeURIComponent(n);i+="&daddr="+encodeURIComponent(t);window.open(i)}}}(jQuery);mapp=window.mapp||{};mapp.geocoders={};+function(){mapp.geocoders.Algolia=function(n){this.map=n;this.places=algoliasearch.initPlaces()};mapp.geocoders.Algolia.prototype={geocode:function(n,t){var i=this;this.getPredictions(n,function(i){i&&i.hits.length?t({formatted_address:i.hits[0].locale_names[0],name:n,geometry:{location:{lat:i.hits[0]._geoloc.lat,lng:i.hits[0]._geoloc.lng}}}):t(null)})},getDetails:function(n,t){t({formatted_address:n.value,name:n.name,geometry:{location:n.latlng}})},getPredictions:function(n,t){this.places.search({query:n,language:mappl10n.options.language},function(n,i){n||!i?t(null):t(i)})}}}(jQuery);+function(n){mapp.geocoders.Google=function(t){this.map=t;this.token=null;this.types=this.map.editable?null:["geocode"];var i=n('<div style="display:none">').appendTo("body");this.placesService=new google.maps.places.PlacesService(i.get(0));this.autocompleteService=new google.maps.places.AutocompleteService;i.remove()};mapp.geocoders.Google.prototype={geocode:function(t,i){var r=this;this.getPredictions(t,function(t){t&&n.isArray(t)?r.getDetails(t[0],function(n){i(n)}):i(null)})},getDetails:function(n,t){this.token=this.token?this.token:new google.maps.places.AutocompleteSessionToken;this.token=null;var i={placeId:n.place_id,sessionToken:this.token};this.placesService.getDetails(i,function(n,i){if(i=="OK"&&n&&n.geometry){if(n.geometry.location&&(n.geometry.location=n.geometry.location.toJSON()),n.geometry.viewport){var r=n.geometry.viewport.toJSON();n.geometry.viewport={sw:{lat:r.south,lng:r.west},ne:{lat:r.north,lng:r.east}}}t(n)}else t(null)})},getPredictions:function(n,t){var i,r;this.token=this.token?this.token:new google.maps.places.AutocompleteSessionToken;i=this.map.getMap().getBounds();i=i?i:new google.maps.LatLngBounds(new google.maps.LatLng(85,-180),new google.maps.LatLng(-85,180));r={input:n,bounds:i,sessionToken:this.token,types:this.types};this.autocompleteService.getPlacePredictions(r,function(n,i){i=="OK"&&n&&n.length?t(n):(i==google.maps.places.PlacesServiceStatus.REQUEST_DENIED?alert("Google Maps API Key error: please enable the Places API in the Google Developer Console."):i==google.maps.places.PlacesServiceStatus.OVER_QUERY_LIMIT&&alert("Google Maps API Key has exceeded its query limit"),t(null))})}}}(jQuery);mapp=window.mapp||{};mapp.Icons={};mapp.Icons.get=function(){var n="https://maps.google.com/intl/en_us/mapfiles/ms/micons/red-dot.png";return mappl10n.options.engine=="leaflet"?L.icon({iconUrl:n,iconAnchor:[16,32],iconSize:[32,32],popupAnchor:[0,-32]}):{url:n}};mapp.Icons.getUrl=function(){return"https://maps.google.com/intl/en_us/mapfiles/ms/micons/red-dot.png"};mapp=window.mapp||{};+function(n){mapp.InfoBox=function(t,i){var f=n.extend({border:20},i),u=null,r=null,o,e=this;r=n('<div class="mapp-ib-wrapper" tabindex="0"><div class="mapp-ib" tabindex="0"><\/div><div class="mapp-ib-tip"><\/div><\/div>').appendTo(t.getMap().getDiv());jQuery(window).resize(function(){e.close()});r.on("keydown",function(n){n.which==27&&e.close()});r.on("click",".mapp-close",function(){e.close()});this.getContent=function(){return n(".mapp-ib",r)};this.setContent=function(t){n(".mapp-ib",r).empty().append(t)};this.open=function(n,t){u=t;this.setMap(n)};this.onAdd=function(){o=!1;var t=n(":input",r);r.show();t.length?t.first().focus():r.focus();google.maps.event.trigger(e,"domready")};this.draw=function(){var l=this.getMap(),a=n(".mapp-ib-body",r),s=this.getProjection().fromLatLngToContainerPixel(u.position),t,h,c,i,e;o||(o=!0,t={width:n(":first-child",l.getDiv()).width(),height:n(":first-child",l.getDiv()).height()},r.css({"max-height":"9999px",left:0,bottom:0,top:"auto",right:"auto"}),h=r.outerWidth(!0),c=r.outerHeight(!0),c>t.height+u.anchorPoint.y-2*f.border&&(c=t.height+u.anchorPoint.y-2*f.border,r.css({"max-height":c+2})),i=s.x,e=s.y,i+h/2>t.width&&(i=t.width-h/2),i-h/2<0&&(i=h/2),e-c+u.anchorPoint.y<f.border&&(e=c-u.anchorPoint.y+f.border),e>t.height&&(e=t.height),(s.x-i||s.y-e)&&l.panBy(s.x-i,s.y-e),r.css({left:i-h/2,bottom:t.height-e-u.anchorPoint.y}))};this.close=function(){r.is(":visible")&&(this.setMap(null),google.maps.event.trigger(this,"closed"))};this.onRemove=function(){r.hide()}};mappl10n.options.engine!="leaflet"&&(mapp.InfoBox.prototype=new google.maps.OverlayView)}(jQuery);mapp=window.mapp||{};+function(n){mapp.lib={ajax:function(t){var r=this,u,i;if(n.extend({type:"GET",cache:!1,data:null,spinner:null,callback:n.noop},t),t.cache)for(typeof mapp.lib.ajax.cache=="undefined"&&(mapp.lib.ajax.cache=[]),u=JSON.stringify(t.data),i=0;i<mapp.lib.ajax.cache.length;i++)if(mapp.lib.ajax.cache[i].hash==u){t.callback(mapp.lib.ajax.cache[i].response);return}return t.spinner&&t.spinner.show(),n.ajax({type:t.type,cache:!1,url:mappl10n.options.ajaxurl,data:t.data,success:function(n,i,u){if(t.spinner&&t.spinner.hide(),n.output){r.alert("AJAX Error\r\n"+n.output);return}if(n.status=="OK"){t.cache&&mapp.lib.ajax.cache.push({hash:JSON.stringify(t.data),response:n});t.callback&&t.callback(n,u);return}var f=typeof n=="object"?n.status:n;r.alert("AJAX ERROR\r\nResponse="+f+" TextStatus="+i+"\r\nResponseText="+u.responseText)},error:function(n,i,u){(t.spinner&&t.spinner.hide(),i!="cancel")&&typeof u!="undefined"&&u!=""&&r.alert("AJAX ERROR\r\nTextStatus="+i+"\r\nError="+u+"\r\nResponseText="+n.responseText)}})},alert:function(n){mappl10n.options.admin||mappl10n.options.debug?alert(n):window.console&&console.error(n)},jqVersionCheck:function(t){if(typeof n=="undefined"||typeof t=="undefined")return!1;for(t=t.split("."),v=n.fn.jquery.split("."),i=0;i<t.length;i++){var r=parseInt(t[i]),u=typeof v[i]!="undefined"?parseInt(v[i]):0;if(u!=r)return u>r}return!0},log:function(n){window.console&&console.error(n)},scrollTo:function(n,t){if(n&&t&&n.length&&t.length){var i=n.scrollTop(),u=n.height(),r=i+t.position().top,f=r+t.outerHeight(!0);r<i?n.scrollTop(r):f>i+u&&n.scrollTop(f-u)}},template:function(t,i){if(mapp.lib.templates=mapp.lib.templates?mapp.lib.templates:{},!mapp.lib.templates[t]){var r=mappl10n.options.templates?mappl10n.options.template[t]:n("#mapp-tmpl-"+t).html();if(r)mapp.lib.templates[t]=_.template(r.replace(/[\n\r\t]/g,""),null,{evaluate:/<#([\s\S]+?)#>/g,interpolate:/\{\{\{([\s\S]+?)\}\}\}/g,escape:/\{\{([^\}]+?)\}\}(?!\})/g});else return""}return mapp.lib.templates[t](i)}};mapp.lib.jqVersionCheck("1.7")||mapp.lib.alert("jQuery version is too old: "+n.fn.jquery);n("body").on("tabsactivate tabsshow",function(t,i){var r=i.newPanel?i.newPanel:i.panel;r&&n(".mapp-layout",r).each(function(){var i=n(this).find(".mapp-canvas").attr("id"),t=window[i];t.resize();t.recenter()})})}(jQuery);+function(){mappl10n.options.engine=="leaflet"&&(L.LatLng.prototype.toJSON=function(){return{lat:this.lat,lng:this.lng}},L.LatLngBounds.prototype.toJSON=function(){return{south:this.getSouth(),west:this.getWest(),north:this.getNorth(),east:this.getEast()}},L.LatLng.prototype.toUrlValue=function(){return Math.round(this.lat*1e6)/1e6+", "+Math.round(this.lng*1e6)/1e6});mapp.event={addListener:function(n,t,i){if(mappl10n.options.engine=="leaflet")n.on(t,i);else google.maps.event.addListener(n,t,i)},addListenerOnce:function(n,t,i){if(mappl10n.options.engine=="leaflet")n.once(t,i);else google.maps.event.addListenerOnce(n,t,i)},clearInstanceListeners:function(n){mappl10n.options.engine=="leaflet"?n.off():google.maps.event.clearInstanceListeners(n)},clearListeners:function(n,t){mappl10n.options.engine=="leaflet"?n.off(t):google.maps.event.clearListeners(n,"rightclick")},trigger:function(n,t,i){mappl10n.options.engine=="leaflet"?n.fire(t,i):google.maps.event.trigger(n,t,i)}}}(jQuery);mapp=window.mapp||{};jQuery.fn.AlgoliaAutocomplete=jQuery.fn.autocomplete.noConflict();+function(n){mapp.Places=function(t,i){var r=this;this.sel=n(t);this.opts=n.extend({map:null},i);this.geocoder=mappl10n.options.engine=="leaflet"?new mapp.geocoders.Algolia(this.opts.map):new mapp.geocoders.Google(this.opts.map);this.sel.on("keydown",function(t){if(t.which==13){t.preventDefault();var i=r.parseLatLng(r.sel.val());i&&(n(r).triggerHandler("search.mapp",i),r.sel.AlgoliaAutocomplete("close"),t.stopImmediatePropagation())}});this.autocomplete();this.sel.focus()};mapp.Places.prototype={parse:function(t,i){var f=this,u=t&&t.name?n.trim(t.name):n.trim(t),r;if(!u){i(null);return}if(u=="user"){this.geolocate(function(n){i(n)});return}if(t&&t.geometry){i(t);return}if(r=this.parseLatLng(t),r){i(r);return}this.geocoder.geocode(t,function(n){i(n)})},parseLatLng:function(t){var i,e,r,u,f;return t.lat&&t.lng?i=t:(e=t&&t.name?n.trim(t.name):n.trim(t),r=e.split(","),r.length==2&&(u=parseFloat(r[0]),f=parseFloat(r[1]),isNaN(u)||isNaN(f)||(i={lat:u,lng:f}))),i?{name:i.lat+", "+i.lng,geometry:{location:i}}:null},geolocate:function(n){var t=this;if(!navigator||!navigator.geolocation){alert(mappl10n.no_geolocate);return}navigator.geolocation.getCurrentPosition(function(t){var i={lat:t.coords.latitude,lng:t.coords.longitude};n({name:i.lat+", "+i.lng,geometry:{location:i}})},function(t){var i=t&&t.message?" : "+t.message:"";alert(mappl10n.no_geolocate+i);n(null)},{timeout:15e3,enableHighAccuracy:!0,maximumAge:3e4})},autocomplete:function(){var t=this,r,i,u;this.sel.on("autocomplete:selected",function(i,r){t.geocoder.getDetails(r,function(i){t.parse(i,function(i){i&&n(t).triggerHandler("search.mapp",i)})})});r={empty:'<div class="list-group search-results-dropdown"><div class="list-group-item">'+mappl10n.no_results+"<\/div><\/div>",header:'<div class="list-group search-results-dropdown">'};mappl10n.options.engine=="leaflet"?(i={algoliasearch:algoliasearch,templates:r},mappl10n.options.country&&(i.countries=[mappl10n.options.country]),mappl10n.options.language&&(i.language=mappl10n.options.language),u=placesAutocompleteDataset(i)):u={display:"description",source:function(n,i){t.geocoder.getPredictions(n,function(n){matches=n;i(matches)})},templates:r};this.sel.AlgoliaAutocomplete({autoselect:!0,cssClasses:{prefix:"mapp-aa"},debug:!1,hint:!0,highlight:!0,minLength:1},u)}}}(jQuery);mapp=window.mapp||{};+function(n){mapp.Poi=function(t){var u,f,r,o,i,e,h,s;if(this.defaults={address:null,body:null,iconid:null,kml:null,map:null,overlay:null,postid:null,title:"",url:null,type:null,viewport:null},n.extend(this,this.defaults,t),t&&t.correctedAddress&&(this.address=t.correctedAddress),mappl10n.options.engine=="leaflet"&&this.isPoly()&&(this.type=null),t.viewport&&t.viewport.sw&&t.viewport.ne&&(u=t.viewport.sw,f=t.viewport.ne,this.viewport=mappl10n.options.engine=="leaflet"?new L.LatLngBounds(L.latLng(u.lat,u.lng),L.latLng(f.lat,f.lng)):new google.maps.LatLngBounds(new google.maps.LatLng(u.lat,u.lng),new google.maps.LatLng(f.lat,f.lng))),r=[],o=[],!t.overlay)switch(this.type){case"polygon":if(t.poly&&t.poly.paths)for(i=0;i<t.poly.paths.length;i++){for(r=[],e=0;e<t.poly.paths[i].length;e++)r.push(new google.maps.LatLng(t.poly.paths[i][e].lat,t.poly.paths[i][e].lng));o.push(new google.maps.MVCArray(r))}this.overlay=new google.maps.Polygon({paths:new google.maps.MVCArray(o)});this.setColors(t.poly);break;case"polyline":if(t.poly&&t.poly.path)for(i=0;i<t.poly.path.length;i++)r.push(new google.maps.LatLng(t.poly.path[i].lat,t.poly.path[i].lng));this.overlay=new google.maps.Polyline({path:new google.maps.MVCArray(r)});this.setColors(t.poly);break;case"circle":h=new google.maps.LatLng(t.point.lat,t.point.lng);this.overlay=new google.maps.Circle({center:h,radius:parseFloat(t.poly.radius)});this.setColors(t.poly);break;case"rectangle":this.overlay=new google.maps.Rectangle({bounds:this.viewport});this.setColors(t.poly);break;case"kml":s=t.kml&&t.kml.url?t.kml.url:"";this.overlay=mappl10n.options.engine=="leaflet"?omnivore.kml(s):new google.maps.KmlLayer(s,{preserveViewport:!0,suppressInfoWindows:!0});break;case"":default:this.overlay=mappl10n.options.engine=="leaflet"?L.marker([t.point.lat,t.point.lng]):new google.maps.Marker({position:new google.maps.LatLng(t.point.lat,t.point.lng)})}t.type||this.setIcon(t.iconid)};mapp.Poi.prototype={toJSON:function(){var n={address:this.address,body:this.body,correctedAddress:this.address,iconid:this.iconid,point:null,poly:null,title:this.title,type:this.type,viewport:null},u=this.getPosition(),i,t,r;if(n.point=u.toJSON(),i=this.viewport?this.viewport:this.getBounds(),i&&(t=i.toJSON(),n.viewport={sw:{lat:t.south,lng:t.west},ne:{lat:t.north,lng:t.east}}),this.type=="kml"&&(n.kml=this.kml),this.isPoly()){n.poly=this.getColors();switch(this.type){case"circle":n.poly.radius=this.overlay.getRadius();break;case"polyline":n.poly.path=[];this.overlay.getPath().forEach(function(t){n.poly.path.push(t.toJSON())});break;case"polygon":n.poly.paths=[];this.overlay.getPaths().forEach(function(t){var i=[];t.forEach(function(n){i.push(n.toJSON())});n.poly.paths.push(i)});break;case"rectangle":r=this.overlay.getBounds();n.viewport={sw:r.getSouthWest().toJSON(),ne:r.getNorthEast().toJSON()}}}return n},setMap:function(t){var i=this;if(this.map=t,mapp.event.clearInstanceListeners(this.overlay),t==null){mappl10n.options.engine=="leaflet"?this.overlay.remove():this.overlay.setMap(null);return}this.type=="kml"&&(mappl10n.options.engine=="leaflet"?(mapp.event.addListenerOnce(this.overlay,"ready",function(){i.viewport=i.overlay.getBounds()}),mapp.event.addListenerOnce(this.overlay,"error",function(){alert(mappl10n.kml_error)})):(mapp.event.addListener(this.overlay,"defaultviewport_changed",function(){i.viewport=i.overlay.getDefaultViewport()}),mapp.event.addListener(this.overlay,"status_changed",function(){var n=i.overlay.getStatus();n!="OK"&&mappl10n.ajaxErrors&&alert(mappl10n.kml_error+":"+n)})));mapp.event.addListener(this.overlay,"click",function(n){i.open(n)});this.setTitle(n("<div>").html(this.title).text());this.setEditable(this.map.editable);mappl10n.options.engine=="leaflet"?this.overlay.addTo(t.getMap()):this.overlay.setMap(t.getMap())},setEditable:function(n){var t=this;this.type!="kml"&&(mappl10n.options.engine=="leaflet"?this.overlay.options.draggable=n:this.overlay.setDraggable(n),this.isPoly()&&this.overlay.setEditable(n),mapp.event.clearListeners(this.overlay,"rightclick"),mapp.event.clearListeners(this.overlay,"dragstart"),n&&(mapp.event.addListener(this.overlay,"dragstart",function(){t.viewport=null;t.map.close()}),(this.type=="polygon"||this.type=="polyline")&&mapp.event.addListener(this.overlay,"rightclick",function(n){n.vertex!=null&&t.overlay.getPath().getLength()>2&&t.overlay.getPath().removeAt(n.vertex)})))},setTitle:function(n){this.type||(mappl10n.options.engine=="leaflet"?this.overlay.title=n:this.overlay.setTitle(n))},setZIndex:function(n){mappl10n.options.engine=="leaflet"?this.type||this.overlay.setZIndexOffset(n):this.overlay.set("zIndex",n)},setIcon:function(n){this.type||typeof mapp.Icons=="undefined"||(this.iconid=n,mappl10n.options.engine=="leaflet"?this.overlay.setIcon(mapp.Icons.get(n)):(this.overlay.setIcon(null),this.overlay.setIcon(mapp.Icons.get(n))))},setVisible:function(n){typeof this.overlay.setVisible!="undefined"&&this.overlay.setVisible(n)},setColors:function(n){var i={};for(var t in{strokeColor:"",strokeOpacity:"",strokeWeight:"",fillColor:"",fillOpacity:""})n&&typeof n[t]!="undefined"&&(i[t]=n[t]);this.overlay.setOptions(i)},setTemplateColors:function(n,t,i){var r=this.type=="polyline"?{strokeColor:n,strokeOpacity:t/100,strokeWeight:i}:{fillColor:n,fillOpacity:t/100,strokeColor:n,strokeWeight:i,strokeOpacity:1};this.setColors(r)},getColors:function(){var t={};for(var n in{strokeColor:"",strokeOpacity:"",strokeWeight:"",fillColor:"",fillOpacity:""})typeof this.overlay[n]!="undefined"&&(t[n]=this.overlay[n]);return t},getTemplateColors:function(){var n=this.getColors();return this.type=="polyline"?{color:n.strokeColor,opacity:n.strokeOpacity*100,weight:n.strokeWeight}:{color:n.fillColor,opacity:n.fillOpacity*100,weight:n.strokeWeight}},center:function(n){var t=this.getBounds();if(typeof n=="number"){this.map.setView(this.getPosition(),n);return}if(!t){this.map.setView(this.getPosition(),parseInt(mappl10n.options.poiZoom));return}this.map.fitBounds(t);this.map.setView(this.getPosition(),n)},open:function(n){this.map.open(this,n)},isPoly:function(){return jQuery.inArray(this.type,["polyline","polygon","circle","rectangle"])!=-1},getBounds:function(){var n;switch(this.type){case"polyline":n=new google.maps.LatLngBounds;this.overlay.getPath().forEach(function(t){n.extend(t)});break;case"polygon":n=new google.maps.LatLngBounds;this.overlay.getPaths().forEach(function(t){t.forEach(function(t){n.extend(t)})});break;case"rectangle":case"circle":n=this.overlay.getBounds();break;case"kml":n=mappl10n.options.engine=="leaflet"?this.overlay.getBounds().isValid()?this.overlay.getBounds():null:this.overlay.getDefaultViewport();n=n?n:this.viewport;break;default:return this.viewport}return n},getPosition:function(n){if(!this.type)return mappl10n.options.engine=="leaflet"?this.overlay.getLatLng():this.overlay.getPosition();if(this.type=="kml"&&n&&n.latLng)return n.latLng;var t=this.getBounds();return t?t.getCenter():mappl10n.options.engine=="leaflet"?new L.latLng(0,0):new google.maps.LatLng(0,0)},getAddress:function(){return this.address?this.address:this.type=="kml"?this.kml.url:this.getPosition().toUrlValue()},getAnchorPoint:function(n){var t=this.isPoly()?"poly":this.type;switch(t){case"kml":return mappl10n.options.engine=="leaflet"?[0,0]:n&&n.pixelOffset?new google.maps.Point(n.pixelOffset.width,n.pixelOffset.height):new google.maps.Point(0,0);case"poly":return mappl10n.options.engine=="leaflet"?[0,0]:new google.maps.Point(0,0);default:return mappl10n.options.engine=="leaflet"?this.overlay.options.icon.options.popupAnchor?this.overlay.options.icon.options.popupAnchor:[0,-32]:typeof this.overlay.anchorPoint!="undefined"?this.overlay.anchorPoint:new google.maps.Point(0,-32)}},render:function(n){return this.icon=mapp.Icons.getUrl(this.iconid),mapp.lib.template(this.map.templates[n],{poi:this,colors:this.getTemplateColors()})}}}(jQuery);mapp=window.mapp||{};mapp.widgets={};+function(n){mapp.widgets.Grid=function(t,i){this.el=n(t);this.options=jQuery.extend({action:null,sortable:!1},i);var r=this;this.table=n("table",this.el);this.template=n("script",this.el).html().replace(new RegExp("'","g"),'"');this.el.on("click",function(t){var u=n(t.target),i=u.attr("data-mapp-action");i&&(r[i](t),t.preventDefault())})};mapp.widgets.Grid.prototype={add:function(){this.table.show();var t=n(this.template).appendTo(this.table);n(":input:eq(0)",t).focus()},remove:function(t){var i=n(t.target).closest("tr").remove();n("tbody > tr",this.table).length||this.table.hide()}}}(jQuery);+function(n){mapp.widgets.Popup=function(t,i){var r,u;if(this.activeToggle=null,this.content=t,this.el=null,r=this,this.options=n.extend({max:!1,modal:!1,position:null,toggle:null},i),this.options.modal?this.el=this.content.addClass("mapp-popup-fixed"):(this.el=n('<div class="mapp-popup">'),this.setContent(t)),this.el.attr("tabindex",0),this.options.max&&this.el.addClass("mapp-popup-max"),this.el.hide(),!this.options.modal)n(document).on("click.mapp.popup",function(t){n.contains(r.el.get(0),t.target)||r.el.get(0)==t.target||r.close()});if(this.options.toggle){u=typeof this.options.toggle=="string"?this.options.toggle:this.options.toggle.selector;n(document).on("click",u,function(t){r.activeToggle=n(this);r.open();t.stopPropagation()})}this.el.on("click",".mapp-close",function(){r.close()});this.el.on("keydown",function(n){n.which==27&&r.close()});return this};mapp.widgets.Popup.prototype={close:function(){this.el&&this.el.is(":visible")&&(this.backdrop&&(this.backdrop.remove(),n("body").removeClass("mapp-popup-modal")),this.el.hide(),this.activeToggle&&this.activeToggle.focus(),this.el.trigger("closed.mapp.popup"))},open:function(){var t=this;this.options.modal||this.el.parent().length||this.el.appendTo("body");this.el.show();this.options.modal?(this.backdrop=n('<div class="mapp-popup-backdrop"><\/div>'),this.el.after(this.backdrop),n("body").addClass("mapp-popup-modal")):this.el.position(n.extend({my:"center bottom",at:"center top-5",of:this.activeToggle,collision:"flipfit"},this.options.position));this.el.focus();this.el.trigger("open.mapp.popup")},setContent:function(n){this.el.empty();this.el.append('<span class="mapp-close">').append(n)},toggle:function(){this.el.is(":visible")?this.close():this.open()}}}(jQuery);+function(){mapp.load=function(){if(typeof mapp!="undefined"&&mapp.data)while(mapp.data.length){var n=mapp.data.pop();window[n.name]=new mapp.Map(n);window[n.name].display()}}}(jQuery);typeof mapp.Media!="undefined"?window.mappEditor=new mapp.Media:mapp.load()
1
+ var mapp=window.mapp||{};+function(n){mapp.Map=function(n,t){this.defaults={center:null,editable:null,height:null,initialOpenDirections:null,initialOpenInfo:null,layers:null,mapid:null,mapTypeId:null,metaKey:null,mapOpts:null,name:null,pois:null,postid:null,query:null,sel:null,title:null,width:null,zoom:null};this.highlight=null;this.iw=null;this.places=null;this.poi=null;this.settings=t?t:{};this.templates=null;this.dir_=null;this.div={};this.layers_={};this.map_=null;this.pois_=[];this.xhr_;this.zindex_=0;_.extend(this,this.defaults,n,this.settings)};mapp.Map.prototype={display:function(){var t=this,i;if(this.div.layout=this.sel?n(".mapp-layout",this.sel):n("#"+this.name+"-layout"),n.each(["canvas","controls","dialog","directions","filters","iw","list","menu","search"],function(i,r){t.div[r]=n(".mapp-"+r,t.div.layout)}),this.sanity()===!0){this.templates=this.editable?{loop:"edit-loop",item:"edit-item",popup:"edit-popup"}:this.query?{loop:"map-loop",item:"mashup-item",popup:"mashup-popup"}:{loop:"map-loop",item:"map-item",popup:"map-popup"};mappl10n.options.engine=="leaflet"?(i=_.extend({attribution:'Map data © <a href="https://openstreetmap.org">OpenStreetMap<\/a>',minZoom:0,scrollWheelZoom:!1,worldCopyJump:!0,zoomControl:null},this.mapOpts),i.minZoom=isNaN(parseInt(i.minZoom))?0:parseInt(i.minZoom),this.map_=new L.Map(this.div.canvas.get(0),i),L.control.zoom({position:"bottomright",zoomInTitle:"",zoomOutTitle:""}).addTo(this.map_),this.iw=L.popup(),this.iw.setContent(this.div.iw.get(0))):(this.map_=new google.maps.Map(this.div.canvas.get(0),{mapTypeId:"roadmap",zoom:1}),i=_.extend({backgroundColor:"transparent",clickableIcons:!1,fullscreenControl:!1,keyboardShortcuts:!1,mapTypeControl:!0,mapTypeControlOptions:{position:google.maps.ControlPosition.TOP_RIGHT,style:google.maps.MapTypeControlStyle.DROPDOWN_MENU},minZoom:0,scaleControl:!0,scrollwheel:!1,streetViewControl:!this.editable&&!this.query},this.mapOpts),i.minZoom=isNaN(parseInt(i.minZoom))?0:parseInt(i.minZoom),this.map_.setOptions(i),this.iw=mappl10n.options.iwType=="ib"||this.editable?new mapp.InfoBox(this):new google.maps.InfoWindow,this.iw.setContent(this.div.iw.get(0)),this.addLayers());this.addStyles();this.addControls();this.addMenu();this.setMapTypeId(this.mapTypeId,!0);this.places=new mapp.Places(n(".mapp-places",this.div.search),{map:t});n(this.places).on("search.mapp",function(n,i){t.search(i)});this.addEvents("click drag",function(){t.close()});this.toggleView("mini",this.div.layout.width()<mappl10n.options.mini);this.div.layout.on("click","[data-mapp-action]",function(i){var r=n(this).attr("data-mapp-action");i.preventDefault();t.action(r,n(this).attr("data-mapp-"+r),n(this))});this.div.filters.on("change",function(){t.ajaxQuery()});n(window).resize(function(){t.resize()});this.places.parse(this.center,function(n){t.center=n&&n.geometry&&n.geometry.location?{lat:n.geometry.location.lat,lng:n.geometry.location.lng}:null;t.query?t.ajaxQuery(function(){t.initCenter()}):(t.setPois(t.pois),t.initCenter())})}},initCenter:function(){var n=this;this.recenter();this.renderList();this.query&&mappl10n.options.search&&!this.editable&&this.addSearchMove();mappl10n.options.engine=="leaflet"?this.initOpen():mapp.event.addListenerOnce(n.map_,"idle",function(){n.initOpen()})},initOpen:function(){var n=this.pois_.length?this.pois_[0]:null;this.initialOpenDirections?this.openDirections(null,n):n&&this.initialOpenInfo&&n.open()},search:function(n){var i,t,f,u,r;n&&n.geometry&&(i=n.geometry.location?n.geometry.location:null,t=n.geometry.viewport?n.geometry.viewport:null,mappl10n.options.engine=="leaflet"?(f=new L.LatLng(i.lat,i.lng),r=f.toBounds(mappl10n.options.radius*1e3)):(u=new google.maps.Circle({center:i,radius:mappl10n.options.radius*1e3}),r=t?new google.maps.LatLngBounds(new google.maps.LatLng(t.sw.lat,t.sw.lng),new google.maps.LatLng(t.ne.lat,t.ne.lng)).union(u.getBounds()):u.getBounds()),this.fitBounds(r),this.setView(i))},load:function(n){_.extend(this,this.defaults,n,this.settings);this.setMapTypeId(this.mapTypeId,!0);this.setPois(this.pois);this.recenter()},action:function(t,i,r){var f=this,u;switch(t){case"center":this.toggleView("menu",!1);this.close();this.recenter();break;case"dir":this.openDirections(null,this.poi);break;case"dir-from":this.openDirections(this.poi,null);break;case"filters-reset":this.div.filters.find(":input").each(function(){this.type=="checkbox"||this.type=="radio"?n(this).prop("checked",!1):n(this).val("")});this.ajaxQuery();break;case"filters-toggle":this.toggleView("filters");break;case"geolocate":this.places.geolocate(function(n){f.search(n)});break;case"layer":this.toggleLayer(i);this.toggleView("menu",!1);break;case"menu-toggle":this.toggleView("menu");break;case"open":u=r.attr("data-mapp-poi");this.open(this.pois_[u]);break;case"show":this.div.layout.show();this.resize();this.initCenter();break;case"view-map":this.toggleView("list",!1);break;case"view-list":this.toggleView("list",!0);break;default:return!0}},dialog:function(n,t){var i=this;n?(this.div.dialog.html(n),this.div.dialog.show(),t&&(clearTimeout(this.dialog.fade),this.dialog.fade=setTimeout(function(){i.dialog(null)},4e3))):this.div.dialog.hide()},addEvents:function(n,t){n=n.split(" ");for(var i=0;i<n.length;i++)mapp.event.addListener(this.map_,n[i],t)},close:function(){mappl10n.options.engine=="leaflet"?this.map_.closePopup():this.iw.close();this.select(null);n(this).triggerHandler("mapp.close")},openDirections:function(n,t){var i=n?n.getAddress():"",r=t?t.getAddress():"";this.dir_||(this.dir_=new mapp.Directions(this.div.directions,this));this.dir_.open(i,r)},sanity:function(){if(!this.div.canvas.length)return mapp.lib.log("MapPress: Missing map name or container for map: "+this.name);if(mappl10n.options.autoupdate==="tc")return mapp.lib.log("Maps API missing (800001)");if(typeof _=="undefined")return mapp.lib.alert("ERROR: underscore.js not loaded. Check cacheing / optimizing plugins.");if(mappl10n.options.engine=="leaflet"){if(typeof L=="undefined")return mapp.lib.alert("ERROR: Unable to load Leaflet")}else{if(typeof google=="undefined")return mapp.lib.alert("ERROR: Google Maps API not loaded");n(document).ready(function(){n('script[src*="https://maps.googleapis.com/maps/api/js?v=3"]').length>1&&mapp.lib.alert("ERROR: Google Maps API key loaded multiple times, please see MapPress FAQ.")})}return!0},select:function(t){if(n("[data-mapp-poi]",this.div.list).removeClass("mapp-selected"),t){var r=n.inArray(t,this.pois_),i=n('[data-mapp-poi="'+r+'"]',this.div.list);i.addClass("mapp-selected");mapp.lib.scrollTo(this.div.list,i);t.setZIndex(++this.zindex_)}this.poi=t},setHighlight:function(n){this.highlight&&(mappl10n.options.engine=="leaflet"?this.highlight.remove():this.highlight.setMap(null));n&&(mappl10n.options.engine=="leaflet"?this.highlight=new L.Marker(n.getPosition()).addTo(this.map_):(this.highlight=new google.maps.Marker({position:n.getPosition()}),this.highlight.setMap(this.map_)))},getMap:function(){return this.map_},renderList:function(){var i=this.getBounds(),r=0,u=this,t;if(!this.editable)for(t=0;t<this.pois_.length;t++)this.pois_[t].visible=this.pois_[t].type!="kml",this.query&&i&&!i.contains(this.pois_[t].getPosition())&&(this.pois_[t].visible=!1),r+=this.pois_[t].visible;this.div.list.html(mapp.lib.template(this.templates.loop,{map:this,pois:this.pois_,count:r}));this.editable&&n(".mapp-items",u.sel).sortable({axis:"y",cursor:"move",delay:200,update:function(){u.sortPois(n(this).sortable("toArray",{attribute:"data-mapp-poi"}))}})},getPois:function(){return this.pois_},insertPoi:function(n){var t=this;this.pois_.unshift(n);n.setMap(this);t.renderList();this.select(n)},removePoi:function(t){var r=this,i=n.inArray(t,this.pois_);i!=-1&&(this.pois_[i].setMap(null),this.pois_.splice(i,1),r.renderList())},resetPois:function(){for(i=0;i<this.pois_.length;i++)this.pois_[i].setMap(null);this.pois_=[];this.zindex_=0},setPois:function(n){var t,i;if(this.resetPois(),n){for(t=0;t<n.length;t++)i=new mapp.Poi(n[t]),this.pois_.push(i),i.id=this.pois_.length-1,i.setMap(this),i.setZIndex(this.zindex_+n.length-1-t);this.zindex_+=n.length-1}this.renderList()},sortPois:function(n){for(var r,t=Array(),i=0;i<n.length;i++){if(r=parseInt(n[i]),isNaN(r))return!1;t.push(this.pois_[r])}if(t.length!=this.pois_.length)return!1;this.pois_=t;this.renderList()},open:function(t,i){var r=null,u;if(this.close(),this.select(t),mappl10n.options.mashupClick!="poi"&&t.postid&&t.url){window.open(t.url);return}this.toggleView("list",!1);i&&i.featureData?r=i.featureData:i&&i.propagatedFrom&&i.propagatedFrom.feature&&i.propagatedFrom.feature.properties&&(r=i.propagatedFrom.feature.properties);this.div.iw.html(t.render("popup",r));mappl10n.options.engine=="leaflet"?(this.iw.setLatLng(t.getPosition()),this.iw.options.offset=t.getAnchorPoint(),this.map_.openPopup(this.iw)):(u=new google.maps.MVCObject,u.setValues({position:t.getPosition(i),anchorPoint:t.getAnchorPoint(i)}),this.iw.open(this.map_,u));n(this).triggerHandler("mapp.open",t)},renderMenu:function(){var t=this;for(layer in this.layers_)this.layers_[layer].getMap()&&n('[data-mapp-layer="'+layer+'"]',this.div.layout).addClass("mapp-active")},addStyles:function(){var u=this,l,f,r,i;if(mappl10n.options.engine=="leaflet"){if(this.editable){for(l=[],f=L.control.layers(),r=0;r<mappl10n.options.baseLayers.length;r++){var o=mappl10n.options.baseLayers[r],s=mappl10n.options.providers[o.provider],h=n.extend({},s,o);f.addBaseLayer(L.tileLayer(s.url,h),h.label)}mappl10n.options.baseLayers.length>1&&f.addTo(this.map_)}this.map_.on("baselayerchange",function(n){u.mapTypeId=n.layer.options.name})}else{var t=mappl10n.options.styles?mappl10n.options.styles:[],e=mappl10n.options.style,c=["roadmap","satellite","terrain","hybrid"];if(e&&typeof t[e]!="undefined"&&this.map_.setOptions({styles:t[e]}),this.editable){for(i in t)this.map_.mapTypes.set(i,new google.maps.StyledMapType(t[i],{name:i})),c.push(i);this.map_.setOptions({mapTypeControlOptions:{mapTypeIds:c,position:google.maps.ControlPosition.TOP_RIGHT,style:google.maps.MapTypeControlStyle.DROPDOWN_MENU}})}else this.mapTypeId&&typeof t[this.mapTypeId]!="undefined"&&this.map_.setOptions({styles:t[this.mapTypeId]});mapp.event.addListener(this.map_,"maptypeid_changed",function(){u.mapTypeId=u.map_.getMapTypeId()})}},addControls:function(){var n=this;this.div.controls.html(mapp.lib.template("map-controls",{map:this}))},addLayers:function(){var u,i,t,r;for(this.layers_={traffic:new google.maps.TrafficLayer,bicycling:new google.maps.BicyclingLayer,transit:new google.maps.TransitLayer},u=n.makeArray(this.layers),i=0;i<u.length;i++)t=n.trim(u[i]),r=t.split(".").pop(),this.layers_[t]?this.toggleLayer(t):r=="kml"||r=="kmz"?this.layers_[t]=new google.maps.KmlLayer({map:this.map_,preserveViewport:!0,url:t}):r=="json"&&(this.layers_[t]=new google.maps.Data({map:this.map_}).loadGeoJson(t))},addMenu:function(){var t=this;n("body").on("click",function(i){var r=n(i.target),u=r.attr("data-mapp-action");r==t.div.filters||u=="filters-toggle"||r.closest(t.div.filters).length||t.toggleView("filters",!1);r==t.div.menu||u=="menu-toggle"||r.closest(t.div.menu).length||t.toggleView("menu",!1)})},toggleLayer:function(t,i){var r=this;i=typeof i!="undefined"?i:this.layers_[t].getMap()==null;n.each(["traffic","bicycling","transit"],function(n,t){r.layers_[t].setMap(null)});i&&this.layers_[t].setMap(this.map_)},togglePois:function(n){n=!!n;for(var t=0;t<this.pois_.length;t++)this.pois_[t].setVisible(n)},toggleView:function(n,t){t=typeof t=="undefined"?!this.div.layout.hasClass("mapp-view-"+n):t;this.div.layout.toggleClass("mapp-view-"+n,t);n=="menu"&&t&&this.renderMenu();n=="directions"&&(this.close(),this.resize())},resize:function(){var n=this.getCenter();this.toggleView("mini",this.div.layout.width()<mappl10n.options.mini);mappl10n.options.engine=="leaflet"?this.map_.invalidateSize():mapp.event.trigger(this.map_,"resize");n&&this.setView(n)},recenter:function(){var t=this.center&&this.center.lat&&this.center.lng?this.center:null,n=this.zoom&&parseInt(this.zoom)?parseInt(this.zoom):null,i,r;if(t&&!n&&this.query){this.search({geometry:{location:{lat:t.lat,lng:t.lng}}});return}if(t){this.setView(t,n?n:1);return}if(this.pois_.length==0){this.setView({lat:0,lng:0},n?n:1);return}if(this.pois_.length==1){this.pois_[0].center(n);return}for(bounds=mappl10n.options.engine=="leaflet"?new L.LatLngBounds:new google.maps.LatLngBounds,i=0;i<this.pois_.length;i++)r=this.pois_[i].getBounds(),bounds=r?mappl10n.options.engine=="leaflet"?bounds.extend(r):bounds.union(r):bounds.extend(this.pois_[i].getPosition());n?this.setView(bounds.getCenter().toJSON(),n):this.fitBounds(bounds)},toJSON:function(){var n;for(this.pois=[],n=0;n<this.pois_.length;n++)this.pois.push(this.pois_[n].toJSON());return{center:this.center,height:this.height,mapid:this.mapid,mapTypeId:this.mapTypeId,metaKey:this.metaKey,pois:this.pois,title:this.title,width:this.width,zoom:this.zoom}},ajaxSave:function(n){var t=this,i=JSON.stringify(this),r=!this.mapid||!this.postid?mappl10n.options.postid:this.postid;mapp.lib.ajax({type:"POST",data:{action:"mapp_save",map:i,postid:r},callback:function(i){i.status=="OK"&&(t.mapid||(t.mapid=i.data.mapid),n())}})},fitBounds:function(n,t){var t=mappl10n.options.engine=="leaflet"&&t?{paddingTopLeft:[t.left,t.top],paddingBottomRight:[t.right,t.bottom]}:t;return this.map_.fitBounds(n,t)},getBounds:function(){try{return this.map_.getBounds()}catch(n){return null}},getCenter:function(){try{return this.map_.getCenter()}catch(n){return null}},getMapTypeId:function(n){return mappl10n.options.engine=="leaflet"?"roadmap":this.map_.getMapTypeId(n)},setMapTypeId:function(t){var s=this,i,r,e,u,o,f;if(mappl10n.options.engine=="leaflet")for(this.map_.eachLayer(function(n){s.map_.removeLayer(n)}),t=!this.editable&&mappl10n.options.style&&t=="streets"?mappl10n.options.style:t,t=_.findIndex(mappl10n.options.baseLayers,{name:t})>=0?t:mappl10n.options.baseLayers[0].name,i=0;i<mappl10n.options.baseLayers.length;i++)r=mappl10n.options.baseLayers[i],e=mappl10n.options.providers[r.provider],r.name==t&&(u=n.extend({},e,r),o=L.tileLayer(u.url,u),o.addTo(this.map_));else f=n.inArray(t,["roadmap","satellite","terrain","hybrid"])!=-1,t=this.editable?f||typeof mappl10n.options.styles[t]!="undefined"?t:"roadmap":f?t:"roadmap",this.map_.setMapTypeId(t)},setView:function(n,t,i){mappl10n.options.engine=="leaflet"?(t==null&&(t=this.map_.getZoom()?this.map_.getZoom():0),this.map_.setView(n,t,i)):(n&&this.map_.setCenter(n),t&&this.map_.setZoom(parseInt(t)))}};mapp.Map.ajaxGet=function(n,t,i){mapp.lib.ajax({type:"GET",data:{action:"mapp_get",mapid:n},callback:function(n){if(n.status=="OK"){var r=new mapp.Map(n.data.map,t);i(r)}}})};mapp.Map.ajaxDelete=function(n,t){mapp.lib.ajax({type:"POST",data:{action:"mapp_delete",mapid:n},callback:function(n){n.status=="OK"&&t&&t()}})}}(jQuery);mapp=window.mapp||{};+function(n){mapp.Directions=function(t,i){this.sel=n(t);this.map=i;this.directionsRenderer=null;this.directionsService=null;this.placesService=null;var r=this;this.sel.on("keydown",function(n){n.which==13?(r.getDirections(),n.preventDefault()):n.which==27&&r.close()});this.sel.on("click","[data-mapp-action]",function(t){var i=n(this).attr("data-mapp-action"),u=n(".mapp-dir-daddr",r.sel).val(),f=n(".mapp-dir-saddr",r.sel).val();t.preventDefault();switch(i){case"dir-cancel":r.close();break;case"dir-get":r.getDirections();break;case"dir-myloc":r.map.places.geolocate(function(t){n(".mapp-dir-saddr",r.sel).val(t.name);r.getDirections()});break;case"dir-swap":n(".mapp-dir-saddr",r.sel).val(u);n(".mapp-dir-daddr",r.sel).val(f);r.getDirections()}});this.open=function(t,i){if(mappl10n.options.directions=="google"){this.openGoogle(t,i);return}this.map.toggleView("directions",!0);n(".mapp-dir-addr",this.sel).removeClass("mapp-error");n(".mapp-dir-saddr",this.sel).val(t);n(".mapp-dir-daddr",this.sel).val(i);n(".mapp-dir-get",this.sel).focus();n(".mapp-dir-saddr",this.sel).focus()};this.close=function(){this.map.toggleView("directions",!1);this.directionsRenderer&&(this.directionsRenderer.setPanel(null),this.directionsRenderer.getMap()&&(this.directionsRenderer.setMap(null),this.map.togglePois(!0)))};this.getDirections=function(){this.map.close();this.openGoogle(n(".mapp-dir-saddr",this.sel).val(),n(".mapp-dir-daddr",this.sel).val());return};this.openGoogle=function(n,t){var i=mappl10n.options.directionsServer;i.toLowerCase().indexOf("http")==-1&&(i="https://"+i);i+="?saddr="+encodeURIComponent(n);i+="&daddr="+encodeURIComponent(t);window.open(i)}}}(jQuery);mapp=window.mapp||{};mapp.geocoders={};+function(){mapp.geocoders.Algolia=function(n){this.map=n;this.places=algoliasearch.initPlaces()};mapp.geocoders.Algolia.prototype={geocode:function(n,t){var i=this;this.getPredictions(n,function(i){i&&i.hits.length?t({formatted_address:i.hits[0].locale_names[0],name:n,geometry:{location:{lat:i.hits[0]._geoloc.lat,lng:i.hits[0]._geoloc.lng}}}):t(null)})},getDetails:function(n,t){t({formatted_address:n.value,name:n.name,geometry:{location:n.latlng}})},getPredictions:function(n,t){this.places.search({query:n,language:mappl10n.options.language},function(n,i){n||!i?t(null):t(i)})}}}(jQuery);+function(n){mapp.geocoders.Google=function(t){this.map=t;this.token=null;this.types=this.map.editable?null:["geocode"];var i=n('<div style="display:none">').appendTo("body");this.placesService=new google.maps.places.PlacesService(i.get(0));this.autocompleteService=new google.maps.places.AutocompleteService;i.remove()};mapp.geocoders.Google.prototype={geocode:function(t,i){var r=this;this.getPredictions(t,function(t){t&&n.isArray(t)?r.getDetails(t[0],function(n){i(n)}):i(null)})},getDetails:function(n,t){this.token=this.token?this.token:new google.maps.places.AutocompleteSessionToken;this.token=null;var i={placeId:n.place_id,sessionToken:this.token};this.placesService.getDetails(i,function(n,i){if(i=="OK"&&n&&n.geometry){if(n.geometry.location&&(n.geometry.location=n.geometry.location.toJSON()),n.geometry.viewport){var r=n.geometry.viewport.toJSON();n.geometry.viewport={sw:{lat:r.south,lng:r.west},ne:{lat:r.north,lng:r.east}}}t(n)}else t(null)})},getPredictions:function(n,t){var i,r;this.token=this.token?this.token:new google.maps.places.AutocompleteSessionToken;i=this.map.getMap().getBounds();i=i?i:new google.maps.LatLngBounds(new google.maps.LatLng(85,-180),new google.maps.LatLng(-85,180));r={input:n,bounds:i,sessionToken:this.token,types:this.types};this.autocompleteService.getPlacePredictions(r,function(n,i){i=="OK"&&n&&n.length?t(n):(i==google.maps.places.PlacesServiceStatus.REQUEST_DENIED?alert("Google Maps API Key error: please enable the Places API in the Google Developer Console."):i==google.maps.places.PlacesServiceStatus.OVER_QUERY_LIMIT&&alert("Google Maps API Key has exceeded its query limit"),t(null))})}}}(jQuery);mapp=window.mapp||{};mapp.Icons={};mapp.Icons.get=function(){var n="https://maps.google.com/intl/en_us/mapfiles/ms/micons/red-dot.png";return mappl10n.options.engine=="leaflet"?L.icon({iconUrl:n,iconAnchor:[16,32],iconSize:[32,32],popupAnchor:[0,-32]}):{url:n}};mapp.Icons.getUrl=function(){return"https://maps.google.com/intl/en_us/mapfiles/ms/micons/red-dot.png"};mapp=window.mapp||{};+function(n){mapp.InfoBox=function(t,i){var f=n.extend({border:20},i),u=null,r=null,o,e=this;r=n('<div class="mapp-ib-wrapper" tabindex="0"><div class="mapp-ib" tabindex="0"><\/div><div class="mapp-ib-tip"><\/div><\/div>').appendTo(t.getMap().getDiv());jQuery(window).resize(function(){e.close()});r.on("keydown",function(n){n.which==27&&e.close()});r.on("click",".mapp-close",function(){e.close()});this.getContent=function(){return n(".mapp-ib",r)};this.setContent=function(t){n(".mapp-ib",r).empty().append(t)};this.open=function(n,t){u=t;this.setMap(n)};this.onAdd=function(){o=!1;var t=n(":input",r);r.show();t.length?t.first().focus():r.focus();google.maps.event.trigger(e,"domready")};this.draw=function(){var l=this.getMap(),a=n(".mapp-ib-body",r),s=this.getProjection().fromLatLngToContainerPixel(u.position),t,h,c,i,e;o||(o=!0,t={width:n(":first-child",l.getDiv()).width(),height:n(":first-child",l.getDiv()).height()},r.css({"max-height":"9999px",left:0,bottom:0,top:"auto",right:"auto"}),h=r.outerWidth(!0),c=r.outerHeight(!0),c>t.height+u.anchorPoint.y-2*f.border&&(c=t.height+u.anchorPoint.y-2*f.border,r.css({"max-height":c+2})),i=s.x,e=s.y,i+h/2>t.width&&(i=t.width-h/2),i-h/2<0&&(i=h/2),e-c+u.anchorPoint.y<f.border&&(e=c-u.anchorPoint.y+f.border),e>t.height&&(e=t.height),(s.x-i||s.y-e)&&l.panBy(s.x-i,s.y-e),r.css({left:i-h/2,bottom:t.height-e-u.anchorPoint.y}))};this.close=function(){r.is(":visible")&&(this.setMap(null),google.maps.event.trigger(this,"closed"))};this.onRemove=function(){r.hide()}};mappl10n.options.engine!="leaflet"&&(mapp.InfoBox.prototype=new google.maps.OverlayView)}(jQuery);mapp=window.mapp||{};+function(n){mapp.lib={ajax:function(t){var i=this;return n.extend({type:"GET",data:null,spinner:null,callback:n.noop},t),t.spinner&&t.spinner.show(),n.ajax({type:t.type,url:mappl10n.options.ajaxurl,data:t.data,success:function(n,r,u){if(t.spinner&&t.spinner.hide(),n.output){i.alert("AJAX Error\r\n"+n.output);return}if(n.status!="OK"){var f=typeof n=="object"?n.status:n;i.alert("AJAX ERROR\r\nResponse="+f+" TextStatus="+r+"\r\nResponseText="+u.responseText)}t.callback&&t.callback(n,u)},error:function(n,r,u){(t.spinner&&t.spinner.hide(),r!="cancel")&&typeof u!="undefined"&&u!=""&&i.alert("AJAX ERROR\r\nTextStatus="+r+"\r\nError="+u+"\r\nResponseText="+n.responseText)}})},alert:function(n){mappl10n.options.admin||mappl10n.options.debug?alert(n):window.console&&console.error(n)},jqVersionCheck:function(t){if(typeof n=="undefined"||typeof t=="undefined")return!1;for(t=t.split("."),v=n.fn.jquery.split("."),i=0;i<t.length;i++){var r=parseInt(t[i]),u=typeof v[i]!="undefined"?parseInt(v[i]):0;if(u!=r)return u>r}return!0},log:function(n){window.console&&console.error(n)},scrollTo:function(n,t){if(n&&t&&n.length&&t.length){var i=n.scrollTop(),u=n.height(),r=i+t.position().top,f=r+t.outerHeight(!0);r<i?n.scrollTop(r):f>i+u&&n.scrollTop(f-u)}},template:function(t,i){if(mapp.lib.templates=mapp.lib.templates?mapp.lib.templates:{},!mapp.lib.templates[t]){var r=mappl10n.options.templates?mappl10n.options.template[t]:n("#mapp-tmpl-"+t).html();if(r)mapp.lib.templates[t]=_.template(r.replace(/[\n\r\t]/g,""),null,{evaluate:/<#([\s\S]+?)#>/g,interpolate:/\{\{\{([\s\S]+?)\}\}\}/g,escape:/\{\{([^\}]+?)\}\}(?!\})/g});else return""}return mapp.lib.templates[t](i)}};mapp.lib.jqVersionCheck("1.7")||mapp.lib.alert("jQuery version is too old: "+n.fn.jquery);n("body").on("tabsactivate tabsshow",function(t,i){var r=i.newPanel?i.newPanel:i.panel;r&&n(".mapp-layout",r).each(function(){var i=n(this).find(".mapp-canvas").attr("id"),t=window[i];t.resize();t.recenter()})})}(jQuery);+function(){mappl10n.options.engine=="leaflet"&&(L.LatLng.prototype.toJSON=function(){return{lat:this.lat,lng:this.lng}},L.LatLngBounds.prototype.toJSON=function(){return{south:this.getSouth(),west:this.getWest(),north:this.getNorth(),east:this.getEast()}},L.LatLng.prototype.toUrlValue=function(){return Math.round(this.lat*1e6)/1e6+", "+Math.round(this.lng*1e6)/1e6});mapp.event={addListener:function(n,t,i){if(mappl10n.options.engine=="leaflet")n.on(t,i);else google.maps.event.addListener(n,t,i)},addListenerOnce:function(n,t,i){if(mappl10n.options.engine=="leaflet")n.once(t,i);else google.maps.event.addListenerOnce(n,t,i)},clearInstanceListeners:function(n){mappl10n.options.engine=="leaflet"?n.off():google.maps.event.clearInstanceListeners(n)},clearListeners:function(n,t){mappl10n.options.engine=="leaflet"?n.off(t):google.maps.event.clearListeners(n,"rightclick")},trigger:function(n,t,i){mappl10n.options.engine=="leaflet"?n.fire(t,i):google.maps.event.trigger(n,t,i)}}}(jQuery);mapp=window.mapp||{};jQuery.fn.AlgoliaAutocomplete=jQuery.fn.autocomplete.noConflict();+function(n){mapp.Places=function(t,i){var r=this;this.sel=n(t);this.opts=n.extend({map:null},i);this.geocoder=mappl10n.options.engine=="leaflet"?new mapp.geocoders.Algolia(this.opts.map):new mapp.geocoders.Google(this.opts.map);this.sel.on("keydown",function(t){if(t.which==13){t.preventDefault();var i=r.parseLatLng(r.sel.val());i&&(n(r).triggerHandler("search.mapp",i),r.sel.AlgoliaAutocomplete("close"),t.stopImmediatePropagation());r.sel.val().substring(0,4)=="http"&&(n(r).triggerHandler("search.mapp",r.sel.val()),r.sel.AlgoliaAutocomplete("close"),t.stopImmediatePropagation())}});this.autocomplete();this.sel.focus()};mapp.Places.prototype={parse:function(t,i){var f=this,u=t&&t.name?n.trim(t.name):n.trim(t),r;if(!u){i(null);return}if(u=="user"){this.geolocate(function(n){i(n)});return}if(t&&t.geometry){i(t);return}if(r=this.parseLatLng(t),r){i(r);return}this.geocoder.geocode(t,function(n){i(n)})},parseLatLng:function(t){var i,e,r,u,f;return t.lat&&t.lng?i=t:(e=t&&t.name?n.trim(t.name):n.trim(t),r=e.split(","),r.length==2&&(u=parseFloat(r[0]),f=parseFloat(r[1]),isNaN(u)||isNaN(f)||(i={lat:u,lng:f}))),i?{name:i.lat+", "+i.lng,geometry:{location:i}}:null},geolocate:function(n){var t=this;if(!navigator||!navigator.geolocation){alert(mappl10n.no_geolocate);return}navigator.geolocation.getCurrentPosition(function(t){var i={lat:t.coords.latitude,lng:t.coords.longitude};n({name:i.lat+", "+i.lng,geometry:{location:i}})},function(t){var i=t&&t.message?" : "+t.message:"";alert(mappl10n.no_geolocate+i);n(null)},{timeout:15e3,enableHighAccuracy:!0,maximumAge:3e4})},autocomplete:function(){var t=this,r,i,u;this.sel.on("autocomplete:selected",function(i,r){t.geocoder.getDetails(r,function(i){t.parse(i,function(i){i&&n(t).triggerHandler("search.mapp",i)})})});r={empty:'<div class="list-group search-results-dropdown"><div class="list-group-item">'+mappl10n.no_results+"<\/div><\/div>",header:'<div class="list-group search-results-dropdown">'};mappl10n.options.engine=="leaflet"?(i={algoliasearch:algoliasearch,templates:r},mappl10n.options.country&&(i.countries=[mappl10n.options.country]),mappl10n.options.language&&(i.language=mappl10n.options.language),u=placesAutocompleteDataset(i)):u={display:"description",source:function(n,i){t.geocoder.getPredictions(n,function(n){matches=n;i(matches)})},templates:r};this.sel.AlgoliaAutocomplete({autoselect:!0,cssClasses:{prefix:"mapp-aa"},debug:!1,hint:!0,highlight:!0,minLength:1},u)}}}(jQuery);mapp=window.mapp||{};+function(n){mapp.Poi=function(t){var u,f,r,o,i,e,h,s;if(this.defaults={address:null,body:null,iconid:null,kml:null,map:null,overlay:null,postid:null,props:null,title:"",url:null,type:null,viewport:null},n.extend(this,this.defaults,t),t&&t.correctedAddress&&(this.address=t.correctedAddress),mappl10n.options.engine=="leaflet"&&this.isPoly()&&(this.type=null),t.viewport&&t.viewport.sw&&t.viewport.ne&&(u=t.viewport.sw,f=t.viewport.ne,this.viewport=mappl10n.options.engine=="leaflet"?new L.LatLngBounds(L.latLng(u.lat,u.lng),L.latLng(f.lat,f.lng)):new google.maps.LatLngBounds(new google.maps.LatLng(u.lat,u.lng),new google.maps.LatLng(f.lat,f.lng))),r=[],o=[],!t.overlay)switch(this.type){case"polygon":if(t.poly&&t.poly.paths)for(i=0;i<t.poly.paths.length;i++){for(r=[],e=0;e<t.poly.paths[i].length;e++)r.push(new google.maps.LatLng(t.poly.paths[i][e].lat,t.poly.paths[i][e].lng));o.push(new google.maps.MVCArray(r))}this.overlay=new google.maps.Polygon({paths:new google.maps.MVCArray(o)});this.setColors(t.poly);break;case"polyline":if(t.poly&&t.poly.path)for(i=0;i<t.poly.path.length;i++)r.push(new google.maps.LatLng(t.poly.path[i].lat,t.poly.path[i].lng));this.overlay=new google.maps.Polyline({path:new google.maps.MVCArray(r)});this.setColors(t.poly);break;case"circle":h=new google.maps.LatLng(t.point.lat,t.point.lng);this.overlay=new google.maps.Circle({center:h,radius:parseFloat(t.poly.radius)});this.setColors(t.poly);break;case"rectangle":this.overlay=new google.maps.Rectangle({bounds:this.viewport});this.setColors(t.poly);break;case"kml":s=t.kml&&t.kml.url?t.kml.url:"";this.overlay=mappl10n.options.engine=="leaflet"?omnivore.kml(s):new google.maps.KmlLayer(s,{preserveViewport:!0,suppressInfoWindows:!0});break;case"":default:this.overlay=mappl10n.options.engine=="leaflet"?L.marker([t.point.lat,t.point.lng],{title:t.title}):new google.maps.Marker({position:new google.maps.LatLng(t.point.lat,t.point.lng),title:t.title})}t.type||this.setIcon(t.iconid)};mapp.Poi.prototype={toJSON:function(){var n={address:this.address,body:this.body,correctedAddress:this.address,iconid:this.iconid,point:null,poly:null,title:this.title,type:this.type,viewport:null},u=this.getPosition(),i,t,r;if(n.point=u.toJSON(),i=this.viewport?this.viewport:this.getBounds(),i&&(t=i.toJSON(),n.viewport={sw:{lat:t.south,lng:t.west},ne:{lat:t.north,lng:t.east}}),this.type=="kml"&&(n.kml=this.kml),this.isPoly()){n.poly=this.getColors();switch(this.type){case"circle":n.poly.radius=this.overlay.getRadius();break;case"polyline":n.poly.path=[];this.overlay.getPath().forEach(function(t){n.poly.path.push(t.toJSON())});break;case"polygon":n.poly.paths=[];this.overlay.getPaths().forEach(function(t){var i=[];t.forEach(function(n){i.push(n.toJSON())});n.poly.paths.push(i)});break;case"rectangle":r=this.overlay.getBounds();n.viewport={sw:r.getSouthWest().toJSON(),ne:r.getNorthEast().toJSON()}}}return n},setMap:function(n){var t=this;if(this.map=n,mapp.event.clearInstanceListeners(this.overlay),n==null){mappl10n.options.engine=="leaflet"?this.overlay.remove():this.overlay.setMap(null);return}this.type=="kml"&&(mappl10n.options.engine=="leaflet"?(mapp.event.addListenerOnce(this.overlay,"ready",function(){t.viewport=t.overlay.getBounds()}),mapp.event.addListenerOnce(this.overlay,"error",function(){alert(mappl10n.kml_error)})):(mapp.event.addListener(this.overlay,"defaultviewport_changed",function(){t.viewport=t.overlay.getDefaultViewport()}),mapp.event.addListener(this.overlay,"status_changed",function(){var n=t.overlay.getStatus();n!="OK"&&mappl10n.ajaxErrors&&alert(mappl10n.kml_error+":"+n)})));mapp.event.addListener(this.overlay,"click",function(n){t.open(n)});this.setEditable(this.map.editable);mappl10n.options.engine=="leaflet"?this.overlay.addTo(n.getMap()):this.overlay.setMap(n.getMap())},setEditable:function(n){var t=this;this.type!="kml"&&(mappl10n.options.engine=="leaflet"?this.overlay.options.draggable=n:this.overlay.setDraggable(n),this.isPoly()&&this.overlay.setEditable(n),mapp.event.clearListeners(this.overlay,"rightclick"),mapp.event.clearListeners(this.overlay,"dragstart"),n&&(mapp.event.addListener(this.overlay,"dragstart",function(){t.viewport=null;t.map.close()}),(this.type=="polygon"||this.type=="polyline")&&mapp.event.addListener(this.overlay,"rightclick",function(n){n.vertex!=null&&t.overlay.getPath().getLength()>2&&t.overlay.getPath().removeAt(n.vertex)})))},setZIndex:function(n){mappl10n.options.engine=="leaflet"?this.type||this.overlay.setZIndexOffset(n):this.overlay.set("zIndex",n)},setIcon:function(n){this.type||typeof mapp.Icons=="undefined"||(this.iconid=n,mappl10n.options.engine=="leaflet"?this.overlay.setIcon(mapp.Icons.get(n)):(this.overlay.setIcon(null),this.overlay.setIcon(mapp.Icons.get(n))))},setVisible:function(n){typeof this.overlay.setVisible!="undefined"&&this.overlay.setVisible(n)},setColors:function(n){var i={};for(var t in{strokeColor:"",strokeOpacity:"",strokeWeight:"",fillColor:"",fillOpacity:""})n&&typeof n[t]!="undefined"&&(i[t]=n[t]);this.overlay.setOptions(i)},setTemplateColors:function(n,t,i){var r=this.type=="polyline"?{strokeColor:n,strokeOpacity:t/100,strokeWeight:i}:{fillColor:n,fillOpacity:t/100,strokeColor:n,strokeWeight:i,strokeOpacity:1};this.setColors(r)},getColors:function(){var t={};for(var n in{strokeColor:"",strokeOpacity:"",strokeWeight:"",fillColor:"",fillOpacity:""})typeof this.overlay[n]!="undefined"&&(t[n]=this.overlay[n]);return t},getTemplateColors:function(){var n=this.getColors();return this.type=="polyline"?{color:n.strokeColor,opacity:n.strokeOpacity*100,weight:n.strokeWeight}:{color:n.fillColor,opacity:n.fillOpacity*100,weight:n.strokeWeight}},center:function(n){var t=this.getBounds();if(typeof n=="number"){this.map.setView(this.getPosition(),n);return}if(!t){this.map.setView(this.getPosition(),parseInt(mappl10n.options.poiZoom));return}this.map.fitBounds(t);this.map.setView(this.getPosition(),n)},open:function(n){this.map.open(this,n)},isPoly:function(){return jQuery.inArray(this.type,["polyline","polygon","circle","rectangle"])!=-1},getBounds:function(){var n;switch(this.type){case"polyline":n=new google.maps.LatLngBounds;this.overlay.getPath().forEach(function(t){n.extend(t)});break;case"polygon":n=new google.maps.LatLngBounds;this.overlay.getPaths().forEach(function(t){t.forEach(function(t){n.extend(t)})});break;case"rectangle":case"circle":n=this.overlay.getBounds();break;case"kml":n=mappl10n.options.engine=="leaflet"?this.overlay.getBounds().isValid()?this.overlay.getBounds():null:this.overlay.getDefaultViewport();n=n?n:this.viewport;break;default:return this.viewport}return n},getPosition:function(n){if(!this.type)return mappl10n.options.engine=="leaflet"?this.overlay.getLatLng():this.overlay.getPosition();if(this.type=="kml"&&n&&n.latLng)return n.latLng;var t=this.getBounds();return t?t.getCenter():mappl10n.options.engine=="leaflet"?new L.latLng(0,0):new google.maps.LatLng(0,0)},getAddress:function(){return this.address?this.address:this.getPosition().toUrlValue()},getAnchorPoint:function(n){var t=this.isPoly()?"poly":this.type;switch(t){case"kml":return mappl10n.options.engine=="leaflet"?[0,0]:n&&n.pixelOffset?new google.maps.Point(n.pixelOffset.width,n.pixelOffset.height):new google.maps.Point(0,0);case"poly":return mappl10n.options.engine=="leaflet"?[0,0]:new google.maps.Point(0,0);default:return mappl10n.options.engine=="leaflet"?this.overlay.options.icon.options.popupAnchor?this.overlay.options.icon.options.popupAnchor:[0,-32]:typeof this.overlay.anchorPoint!="undefined"?this.overlay.anchorPoint:new google.maps.Point(0,-32)}},render:function(n,t){var i=_.extend(this,{icon:mapp.Icons.getUrl(this.iconid)});return t&&(i.body=t.description,i.title=t.name),mapp.lib.template(this.map.templates[n],{poi:i,colors:this.getTemplateColors()})}}}(jQuery);mapp=window.mapp||{};mapp.widgets={};+function(n){mapp.widgets.Grid=function(t,i){this.el=n(t);this.options=jQuery.extend({action:null,sortable:!1},i);var r=this;this.table=n("table",this.el);this.template=n("script",this.el).html().replace(new RegExp("'","g"),'"');this.el.on("click",function(t){var u=n(t.target),i=u.attr("data-mapp-action");i&&(r[i](t),t.preventDefault())})};mapp.widgets.Grid.prototype={add:function(){this.table.show();var t=n(this.template).appendTo(this.table);n(":input:eq(0)",t).focus()},remove:function(t){var i=n(t.target).closest("tr").remove();n("tbody > tr",this.table).length||this.table.hide()}}}(jQuery);+function(n){mapp.widgets.Popup=function(t,i){var r,u;if(this.activeToggle=null,this.content=t,this.el=null,r=this,this.options=n.extend({max:!1,modal:!1,position:null,toggle:null},i),this.options.modal?this.el=this.content.addClass("mapp-popup-fixed"):(this.el=n('<div class="mapp-popup">'),this.setContent(t)),this.el.attr("tabindex",0),this.options.max&&this.el.addClass("mapp-popup-max"),this.el.hide(),!this.options.modal)n(document).on("click.mapp.popup",function(t){n.contains(r.el.get(0),t.target)||r.el.get(0)==t.target||r.close()});if(this.options.toggle){u=typeof this.options.toggle=="string"?this.options.toggle:this.options.toggle.selector;n(document).on("click",u,function(t){r.activeToggle=n(this);r.open();t.stopPropagation()})}this.el.on("click",".mapp-close",function(){r.close()});this.el.on("keydown",function(n){n.which==27&&r.close()});return this};mapp.widgets.Popup.prototype={close:function(){this.el&&this.el.is(":visible")&&(this.backdrop&&(this.backdrop.remove(),n("body").removeClass("mapp-popup-modal")),this.el.hide(),this.activeToggle&&this.activeToggle.focus(),this.el.trigger("closed.mapp.popup"))},open:function(){var t=this;this.options.modal||this.el.parent().length||this.el.appendTo("body");this.el.show();this.options.modal?(this.backdrop=n('<div class="mapp-popup-backdrop"><\/div>'),this.el.after(this.backdrop),n("body").addClass("mapp-popup-modal")):this.el.position(n.extend({my:"center bottom",at:"center top-5",of:this.activeToggle,collision:"flipfit"},this.options.position));this.el.focus();this.el.trigger("open.mapp.popup")},setContent:function(n){this.el.empty();this.el.append('<span class="mapp-close">').append(n)},toggle:function(){this.el.is(":visible")?this.close():this.open()}}}(jQuery);+function(){mapp.load=function(){if(typeof mapp!="undefined"&&mapp.data)while(mapp.data.length){var n=mapp.data.pop();window[n.name]=new mapp.Map(n);window[n.name].display()}}}(jQuery);typeof mapp.Media!="undefined"?window.mappEditor=new mapp.Media:mapp.load()
js/mappress_editor.min.js CHANGED
@@ -1 +1 @@
1
- var mapp=window.mapp||{};+function(n){mapp.Media=function(){this.editor=null;this.map=null;this.settings=null;this.tplEditor=null;this.sel=n(".mapp-media");this.list=[];var t=this;this.initialize=function(){this.find();n(".mapp-media-list-type",this.sel).on("change",function(){var i=n(".mapp-media-list-type",this.sel).val();n(".mapp-media-search").val("");n(".mapp-media-search").toggle(i=="all");t.find()});var i=_.debounce(function(){t.find()});n(".mapp-media-search").keydown(function(){i()});this.settings={editable:!0,name:"mapp0"};this.sel.on("click","[data-mapp-media]",function(i){i.preventDefault();var r=n(this).attr("data-mapp-media");t[r]()});n(".mapp-media-list .mapp-item",this.sel).on("click",function(){n(".mapp-media-list .mapp-item",this.sel).removeClass("mapp-active");n(this).addClass("mapp-active")});n(".mapp-media-list",this.sel).on("click","[data-mapp-media]",function(i){i.preventDefault();var r=n(this).attr("data-mapp-media"),u=n(this).closest(".mapp-item"),f=u.attr("data-mapp-mapid");return t[r](f),!1});this.sel.on("change",".mapp-media-viewport",function(){n(this).is(":checked")||(t.map.center=t.map.zoom=null,t.map.recenter())});n(".mapp-media-size").click(function(t){var i=n(this).data("width"),r=n(this).data("height");n(".mapp-media-width").val(i);n(".mapp-media-height").val(r);t.preventDefault()});n("#publish, #post-preview").click(function(){t.save()});n(".mapp-media-title").keydown(function(n){n.which==13&&(n.preventDefault(),t.save())})};this.add=function(){var n=new mapp.Map(this.settings);n.width=mappl10n.options.sizes[mappl10n.options.size].width;n.height=mappl10n.options.sizes[mappl10n.options.size].height;t.open(n)};this.cancel=function(){t.closeEditor()};this.closeEditor=function(){this.editor.close();this.map=null;this.editor=null;n(".mapp-media-edit-panel").hide();n(".mapp-media-list-panel").show()};this.edit=function(n){mapp.Map.ajaxGet(n,this.settings,function(n){t.open(n)})};this.find=function(t){var i=this,r=n(".mapp-media-list-type",this.sel).val(),u=n(".mapp-media-search").val();n(".spinner",this.sel).css("visibility","visible");mapp.lib.ajax({type:"GET",data:{action:"mapp_find",type:r,page:t,postid:mappl10n.options.postid,search:u},callback:function(t){t.status=="OK"&&(n(".spinner",this.sel).css("visibility","hidden"),i.list=t.data,i.renderList())}})};this.insert=function(n){n=n?n:this.map.mapid;var t='[mappress mapid="'+n+'"]';send_to_editor(t)};this.open=function(t){this.map=t;n(".mapp-edit",this.sel).html(mapp.lib.template("edit-map"));var i=this.map.mapid;i?n(".mapp-media-mapid").text(i):n(".mapp-media-mapid").text("");n(".mapp-media-title").val(this.map.title);n(".mapp-media-width").val(this.map.width);n(".mapp-media-height").val(this.map.height);n(".mapp-media-viewport").prop("checked",!!(this.map.center&&this.map.zoom));n(".mapp-media-edit-panel").show();n(".mapp-media-list-panel").hide();this.editor=new mapp.Editor(this.map)};this.remove=function(n){if(confirm(mappl10n.delete_map_prompt)){var t=_.findIndex(this.list.items,{mapid:n});t>-1&&(this.list.items.splice(t,1),mapp.Map.ajaxDelete(n),this.renderList())}};this.renderList=function(){var t=n(".mapp-media-list-type",this.sel).val();n(".mapp-media-list",this.sel).html(mapp.lib.template("media-list",{list:this.list,type:t}))};this.save=function(){var t=this;this.map&&(this.map.title=n.trim(n(".mapp-media-title").val()),this.map.width=n(".mapp-media-width").val(),this.map.height=n(".mapp-media-height").val(),n(".mapp-media-viewport").prop("checked")?(this.map.center=this.map.getMap().getCenter().toJSON(),this.map.zoom=this.map.getMap().getZoom()):(this.map.center=null,this.map.zoom=null),this.map.ajaxSave(function(n){var i=_.findIndex(t.list.items,{mapid:t.map.mapid});i==-1?t.list.items.unshift(n):t.list.items[i]=n;t.renderList();t.closeEditor()}))};this.initialize.apply(this)}}(jQuery);+function(n){mapp.Editor=function(t){this.drawingManager=null;this.map=t;this.poiEditor=null;this.sel=n(".mapp-edit");var i=this;this.initialize=function(){this.map.display();this.poiEditor=new mapp.PoiEditor(this.map);this.initDrawingManager();n(this.map.places).off("search.mapp");n(this.map.places).on("search.mapp",function(n,t){i.insertPoi(t)});this.sel.on("click","[data-mapp-editor]",function(t){t.preventDefault();var r=n(this).attr("data-mapp-editor");i[r]()})};this.close=function(){this.map.close()};this.insertPoi=function(n){var t;if(n)if(this.drawingManager&&this.drawingManager.setDrawingMode(null),this.map.close(),n.geometry){var i=n.formatted_address?n.formatted_address.replace(/, United States of America/i,"").replace(/, United States/i,"").replace(/, USA/i,""):null,r=n.name==i?"":i,t=new mapp.Poi({address:i,body:r,iconid:this.poiEditor.lastIcon,point:n.geometry.location,title:n.name,viewport:n.geometry.viewport?n.geometry.viewport:null});this.map.insertPoi(t);t.center()}else n.overlay&&(t=new mapp.Poi({body:"",iconid:n.type=="marker"?null:"poly",overlay:n.overlay,title:n.type=="marker"?n.overlay.getPosition().toUrlValue(6):mappl10n.shape,type:n.type=="marker"?null:n.type}),this.map.insertPoi(t))};this.initDrawingManager=function(){};this.layer=function(){var n=window.prompt(mappl10n.layer);n&&i.insertPoi(n)};this.initialize.apply(this)};mapp.PoiEditor=function(t){this.map=t;this.poi=null;this.sel=null;this.lastIcon=null;var i=this;this.initialize=function(){this.sel=n(this.map.iw.getContent());n(this.map).on("mapp.open",function(n,t){i.render(t)});n(this.map).on("mapp.close",function(){i.mce(!1)});this.sel.on("click","[data-mapp-poi]",function(t){t.preventDefault();var r=n(this).attr("data-mapp-poi");i[r]()});this.sel.on("click",".mapp-poi-visual, .mapp-poi-html",function(){var t=n(this).hasClass("mapp-poi-visual");i.mce(t)});this.sel.on("keydown",function(t){t.which==13&&t.target!=n("#mapp-poi-body")&&(t.preventDefault(),i.save())});this.sel.on("change","[data-mapp-iconpicker]",function(){i.poi.setIcon(n("[data-mapp-iconpicker]").attr("data-mapp-iconid"));i.lastIcon=i.poi.iconid;i.map.renderList()});this.sel.on("change","[data-mapp-colorpicker]",function(){i.poi.setTemplateColors(n("[data-mapp-colorpicker]").attr("data-mapp-color"),n("[data-mapp-colorpicker]").attr("data-mapp-opacity"),n("[data-mapp-colorpicker]").attr("data-mapp-weight"));i.map.renderList()})};this.cancel=function(){this.map.close()};this.initMCE=function(){var n,t,i;typeof tinyMCE!="undefined"&&typeof tinyMCE.init!="undefined"&&(n="en",typeof tinyMCEPreInit!="undefined"&&typeof window.tinyMCEPreInit.mceInit!="undefined"&&typeof window.tinyMCEPreInit.mceInit.content!="undefined"&&(t=window.tinyMCEPreInit.mceInit.content,n=typeof t.language!="undefined"?t.language:"en"),i={mode:"none",height:"75px",convert_urls:!1,language:n,menubar:!1,plugins:"wordpress,paste,wplink,textcolor,image",relative_urls:!1,remove_script_host:!1,statusbar:!1,theme:"modern",toolbar1:"bold,italic,link,unlink,image",toolbar2:"",toolbar3:"",toolbar4:""},tinyMCE.init(i),this.mce(!0))};this.mce=function(t){var r=t?"mceAddEditor":"mceRemoveEditor";typeof tinyMCE!="undefined"&&tinyMCE.execCommand(r,!1,"mapp-poi-body");n(".mapp-poi-visual, .mapp-poi-html",i.sel).removeClass("mapp-active");t?n(".mapp-poi-visual",i.sel).addClass("mapp-active"):n(".mapp-poi-html",i.sel).addClass("mapp-active")};this.remove=function(){confirm(mappl10n.delete_prompt)&&(this.map.close(),this.map.removePoi(this.poi))};this.render=function(t){this.poi=t;n("[data-mapp-iconpicker]").trigger("refresh");n("[data-mapp-colorpicker]").trigger("refresh");this.initMCE()};this.save=function(){typeof tinyMCE!="undefined"&&tinyMCE.get("mapp-poi-body")&&tinyMCE.get("mapp-poi-body").save();this.poi.title=n(".mapp-poi-title").val();this.poi.body=n(".mapp-poi-body").val();this.map.renderList();this.map.close()};this.initialize.apply(this)}}(jQuery)
1
+ var mapp=window.mapp||{};+function(n){mapp.Media=function(){this.editor=null;this.map=null;this.settings=null;this.sel=n(".mapp-media");this.items=null;var t=this;this.initialize=function(){this.find();this.sel.on("change",".mapp-media-list-type",function(){var i=n(".mapp-media-list-type",this.sel).val();n(".mapp-media-search").val("");n(".mapp-media-search").toggle(i=="all");t.find()});this.sel.on("keydown",".mapp-media-search",function(n){if(n.which==13)return!1});this.sel.on("input",".mapp-media-search",function(){t.find()});this.settings={editable:!0,name:"mapp0"};this.sel.on("click","[data-mapp-media]",function(i){i.preventDefault();var r=n(this).attr("data-mapp-media");t[r]()});this.sel.on("click",".mapp-media-list .mapp-item",function(){n(".mapp-media-list .mapp-item",this.sel).removeClass("mapp-active");n(this).addClass("mapp-active")});this.sel.on("click",".mapp-media-list [data-mapp-media-list]",function(i){i.preventDefault();var r=n(this).attr("data-mapp-media-list"),u=n(this).closest(".mapp-item"),f=u.attr("data-mapp-mapid");return t[r](f),!1});this.sel.on("change",".mapp-media-viewport",function(){n(this).is(":checked")||(t.map.center=t.map.zoom=null,t.map.recenter())});n(".mapp-media-size").click(function(t){var i=n(this).data("width"),r=n(this).data("height");n(".mapp-media-width").val(i);n(".mapp-media-height").val(r);t.preventDefault()});n("#publish, #post-preview").click(function(){t.save()});n(".mapp-media-title").keydown(function(n){n.which==13&&(n.preventDefault(),t.save())})};this.add=function(){var n=new mapp.Map(this.settings);n.width=mappl10n.options.sizes[mappl10n.options.size].width;n.height=mappl10n.options.sizes[mappl10n.options.size].height;t.open(n)};this.cancel=function(){t.closeEditor()};this.closeEditor=function(){this.editor.close();this.map=null;this.editor=null;n(".mapp-media-edit-panel").hide();n(".mapp-media-list-panel").show()};this.edit=function(n){mapp.Map.ajaxGet(n,this.settings,function(n){t.open(n)})};this.find=function(){var t=this;this.items!==null?this.renderList():(n(".spinner",this.sel).css("visibility","visible"),mapp.lib.ajax({type:"GET",data:{action:"mapp_find"},callback:function(i){i.status=="OK"&&(n(".spinner",this.sel).css("visibility","hidden"),t.items=_.sortBy(i.data,"post_title"),t.renderList())}}))};this.insert=function(n){n=n?n:this.map.mapid;var t='[mappress mapid="'+n+'"]';send_to_editor(t)};this.open=function(t){this.map=t;n(".mapp-edit",this.sel).html(mapp.lib.template("edit-map"));var i=this.map.mapid;i?n(".mapp-media-mapid").text(i):n(".mapp-media-mapid").text("");n(".mapp-media-title").val(this.map.title);n(".mapp-media-width").val(this.map.width);n(".mapp-media-height").val(this.map.height);n(".mapp-media-viewport").prop("checked",!!(this.map.center&&this.map.zoom));n(".mapp-media-edit-panel").show();n(".mapp-media-list-panel").hide();this.editor=new mapp.Editor(this.map)};this.remove=function(n){if(confirm(mappl10n.delete_map_prompt)){var t=_.findIndex(this.items,{mapid:n});t>-1&&(this.items.splice(t,1),mapp.Map.ajaxDelete(n),this.renderList())}};this.renderList=function(){var t=null,i=400,r=null,u=n(".mapp-media-list-type",this.sel).val(),f=n(".mapp-media-search",this.sel).val().toLowerCase();t=u=="all"?_.filter(this.items,function(n){return n.post_title&&n.post_title.toLowerCase().indexOf(f)!=-1||n.map_title&&n.map_title.toLowerCase().indexOf(f)!=-1}):_.filter(this.items,function(n){return n.postid==mappl10n.options.postid});t.length>i?(r=mappl10n.more.replace("%d",i).replace("%d",t.length),t=t.slice(0,i)):r="";n(".mapp-media-list",this.sel).html(mapp.lib.template("media-list",{items:t,type:u,more:r}))};this.save=function(){var t=this;this.map&&(this.map.title=n.trim(n(".mapp-media-title").val()),this.map.width=n(".mapp-media-width").val(),this.map.height=n(".mapp-media-height").val(),n(".mapp-media-viewport").prop("checked")?(this.map.center=this.map.getMap().getCenter().toJSON(),this.map.zoom=this.map.getMap().getZoom()):(this.map.center=null,this.map.zoom=null),this.map.ajaxSave(function(){var i=t.map.mapid?t.map.mapid.toString():null,r=_.findIndex(t.items,function(n){return n.mapid==i});r==-1?t.items.unshift({mapid:i,map_title:t.map.title,postid:mappl10n.options.postid,post_title:n("#title").val()||n("#post-title-0").val()}):t.items[r].map_title=t.map.title;t.renderList();t.closeEditor()}))};this.initialize.apply(this)}}(jQuery);+function(n){mapp.Editor=function(t){this.drawingManager=null;this.map=t;this.poiEditor=null;this.sel=n(".mapp-edit");var i=this;this.initialize=function(){this.map.display();this.poiEditor=new mapp.PoiEditor(this.map);this.initDrawingManager();n(this.map.places).off("search.mapp");n(this.map.places).on("search.mapp",function(n,t){i.insertPoi(t)});this.sel.on("click","[data-mapp-editor]",function(t){t.preventDefault();var r=n(this).attr("data-mapp-editor");i[r]()})};this.close=function(){this.map.close()};this.insertPoi=function(n){var t;if(n)if(this.drawingManager&&this.drawingManager.setDrawingMode(null),this.map.close(),n.geometry){var i=n.formatted_address?n.formatted_address.replace(/, United States of America/i,"").replace(/, United States/i,"").replace(/, USA/i,""):null,r=n.name==i?"":i,t=new mapp.Poi({address:i,body:r,iconid:this.poiEditor.lastIcon,point:n.geometry.location,title:n.name,viewport:n.geometry.viewport?n.geometry.viewport:null});this.map.insertPoi(t);t.center()}else n.overlay&&(t=new mapp.Poi({body:"",iconid:n.type=="marker"?null:"poly",overlay:n.overlay,title:n.type=="marker"?n.overlay.getPosition().toUrlValue(6):mappl10n.shape,type:n.type=="marker"?null:n.type}),this.map.insertPoi(t))};this.initDrawingManager=function(){};this.layer=function(){var n=window.prompt(mappl10n.layer);n&&i.insertPoi(n)};this.initialize.apply(this)};mapp.PoiEditor=function(t){this.map=t;this.poi=null;this.sel=null;this.lastIcon=null;var i=this;this.initialize=function(){this.sel=n(this.map.iw.getContent());n(this.map).on("mapp.open",function(n,t){i.render(t)});n(this.map).on("mapp.close",function(){i.mce(!1)});this.sel.on("click","[data-mapp-poi]",function(t){t.preventDefault();var r=n(this).attr("data-mapp-poi");i[r]()});this.sel.on("click",".mapp-poi-visual, .mapp-poi-html",function(){var t=n(this).hasClass("mapp-poi-visual");i.mce(t)});this.sel.on("keydown",function(t){t.which==13&&t.target!=n("#mapp-poi-body")&&(t.preventDefault(),i.save())});this.sel.on("change","[data-mapp-iconpicker]",function(){i.poi.setIcon(n("[data-mapp-iconpicker]").attr("data-mapp-iconid"));i.lastIcon=i.poi.iconid;i.map.renderList()});this.sel.on("change","[data-mapp-colorpicker]",function(){i.poi.setTemplateColors(n("[data-mapp-colorpicker]").attr("data-mapp-color"),n("[data-mapp-colorpicker]").attr("data-mapp-opacity"),n("[data-mapp-colorpicker]").attr("data-mapp-weight"));i.map.renderList()})};this.cancel=function(){this.map.close()};this.initMCE=function(){var n,t,i;typeof tinyMCE!="undefined"&&typeof tinyMCE.init!="undefined"&&(n="en",typeof tinyMCEPreInit!="undefined"&&typeof window.tinyMCEPreInit.mceInit!="undefined"&&typeof window.tinyMCEPreInit.mceInit.content!="undefined"&&(t=window.tinyMCEPreInit.mceInit.content,n=typeof t.language!="undefined"?t.language:"en"),i={mode:"none",height:"75px",convert_urls:!1,language:n,menubar:!1,plugins:"wordpress,paste,wplink,textcolor,image",relative_urls:!1,remove_script_host:!1,statusbar:!1,theme:"modern",toolbar1:"bold,italic,link,unlink,image",toolbar2:"",toolbar3:"",toolbar4:""},tinyMCE.init(i),this.mce(!0))};this.mce=function(t){var r=t?"mceAddEditor":"mceRemoveEditor";typeof tinyMCE!="undefined"&&tinyMCE.execCommand(r,!1,"mapp-poi-body");n(".mapp-poi-visual, .mapp-poi-html",i.sel).removeClass("mapp-active");t?n(".mapp-poi-visual",i.sel).addClass("mapp-active"):n(".mapp-poi-html",i.sel).addClass("mapp-active")};this.remove=function(){confirm(mappl10n.delete_prompt)&&(this.map.close(),this.map.removePoi(this.poi))};this.render=function(t){this.poi=t;n("[data-mapp-iconpicker]").trigger("refresh");n("[data-mapp-colorpicker]").trigger("refresh");this.initMCE()};this.save=function(){typeof tinyMCE!="undefined"&&tinyMCE.get("mapp-poi-body")&&tinyMCE.get("mapp-poi-body").save();this.poi.title=n(".mapp-poi-title").val();this.poi.body=n(".mapp-poi-body").val();mappl10n.options.engine!="leaflet"&&this.poi.overlay.setTitle(this.poi.title);this.map.renderList();this.map.close()};this.initialize.apply(this)}}(jQuery)
languages/mappress-google-maps-for-wordpress.pot CHANGED
@@ -2,9 +2,9 @@
2
  # This file is distributed under the same license as the MapPress Maps for WordPress package.
3
  msgid ""
4
  msgstr ""
5
- "Project-Id-Version: MapPress Maps for WordPress 2.50.11\n"
6
  "Report-Msgid-Bugs-To: https://wordpress.org/support/plugin/mappress-google-maps-for-wordpress\n"
7
- "POT-Creation-Date: 2019-01-06 19:50:22+00:00\n"
8
  "MIME-Version: 1.0\n"
9
  "Content-Type: text/plain; charset=UTF-8\n"
10
  "Content-Transfer-Encoding: 8bit\n"
@@ -24,15 +24,15 @@ msgstr ""
24
  msgid "HTML"
25
  msgstr ""
26
 
27
- #: forms/editor.php:53 forms/media.php:48 forms/settings.php:41
28
  msgid "Save"
29
  msgstr ""
30
 
31
- #: forms/editor.php:54 forms/media.php:49 forms/settings.php:42
32
  msgid "Cancel"
33
  msgstr ""
34
 
35
- #: forms/editor.php:55 forms/media.php:71 forms/settings.php:44
36
  #: mappress_controls.php:102
37
  msgid "Delete"
38
  msgstr ""
@@ -50,45 +50,41 @@ msgid "All posts"
50
  msgstr ""
51
 
52
  #: forms/media.php:12
53
- msgid "Search post title"
54
  msgstr ""
55
 
56
- #: forms/media.php:20
57
  msgid "Map ID"
58
  msgstr ""
59
 
60
- #: forms/media.php:25
61
  msgid "Map Title"
62
  msgstr ""
63
 
64
- #: forms/media.php:26 forms/media.php:62 forms/media.php:66 mappress.php:631
65
  msgid "Untitled"
66
  msgstr ""
67
 
68
- #: forms/media.php:30
69
  msgid "Display Size"
70
  msgstr ""
71
 
72
- #: forms/media.php:43
73
  msgid "Save center / zoom"
74
  msgstr ""
75
 
76
- #: forms/media.php:50 forms/media.php:70
77
  msgid "Insert into post"
78
  msgstr ""
79
 
80
- #: forms/media.php:69 forms/settings.php:4 forms/settings.php:18
81
  msgid "Edit"
82
  msgstr ""
83
 
84
- #: forms/media.php:78
85
  msgid "No maps found"
86
  msgstr ""
87
 
88
- #: forms/media.php:81
89
- msgid "Load More"
90
- msgstr ""
91
-
92
  #: forms/settings.php:24
93
  msgid "New"
94
  msgstr ""
@@ -106,138 +102,142 @@ msgid "Default"
106
  msgstr ""
107
 
108
  #: mappress.php:153
109
- msgid "Settings"
110
- msgstr ""
111
-
112
- #: mappress.php:159
113
- msgid "Version"
114
  msgstr ""
115
 
116
- #: mappress.php:167
117
- msgid "Documentation"
118
  msgstr ""
119
 
120
- #: mappress.php:168
121
- msgid "Support"
122
  msgstr ""
123
 
124
- #: mappress.php:170
125
- msgid "Upgrade to MapPress Pro"
126
  msgstr ""
127
 
128
- #: mappress.php:453
129
- msgid "MapPress database tables are missing. Please deactivate the plugin and activate it again to fix this."
130
  msgstr ""
131
 
132
- #: mappress.php:458
133
- msgid "WARNING: MapPress is not compatible with the WP-Geo plugin. Please deactivate or uninstall WP-Geo before using MapPress."
134
  msgstr ""
135
 
136
- #: mappress.php:463
137
- msgid "A Google Maps API key is required"
138
  msgstr ""
139
 
140
- #: mappress.php:463
141
- msgid "Please update your"
142
  msgstr ""
143
 
144
- #: mappress.php:463
145
- msgid "MapPress Settings"
146
  msgstr ""
147
 
148
- #: mappress.php:621
149
  msgid "Are you sure you want to delete?"
150
  msgstr ""
151
 
152
- #: mappress.php:622
153
  msgid "Delete this map?"
154
  msgstr ""
155
 
156
- #: mappress.php:623
157
  msgid "Google cannot return directions between those addresses. There is no route between them or the routing information is not available."
158
  msgstr ""
159
 
160
- #: mappress.php:624
161
  msgid "Error reading KML file"
162
  msgstr ""
163
 
164
- #: mappress.php:625
165
  msgid "URL for KML file"
166
  msgstr ""
167
 
168
- #: mappress.php:626
169
  msgid "Loading"
170
  msgstr ""
171
 
172
- #: mappress.php:627
 
 
 
 
173
  msgid "Unable to get your location"
174
  msgstr ""
175
 
176
- #: mappress.php:628
177
  msgid "No results"
178
  msgstr ""
179
 
180
- #: mappress.php:629
181
  msgid "Save changes?"
182
  msgstr ""
183
 
184
- #: mappress.php:630
185
  msgid "Shape"
186
  msgstr ""
187
 
188
- #: mappress.php:655
189
  msgid "Improve this map"
190
  msgstr ""
191
 
192
- #: mappress.php:671 mappress.php:689
193
  msgid "Streets"
194
  msgstr ""
195
 
196
- #: mappress.php:672
197
  msgid "Outdoors"
198
  msgstr ""
199
 
200
- #: mappress.php:673
201
  msgid "Light"
202
  msgstr ""
203
 
204
- #: mappress.php:674
205
  msgid "Dark"
206
  msgstr ""
207
 
208
- #: mappress.php:675
209
  msgid "Satellite"
210
  msgstr ""
211
 
212
- #: mappress.php:676
213
  msgid "Satellite Streets"
214
  msgstr ""
215
 
 
 
 
 
216
  #: mappress_controls.php:93
217
  msgid "Add"
218
  msgstr ""
219
 
220
- #: mappress_map.php:92 mappress_settings.php:306
221
  msgid "MapPress"
222
  msgstr ""
223
 
224
- #: mappress_map.php:183
225
  msgid "Map not found"
226
  msgstr ""
227
 
228
- #: mappress_map.php:441 pro/mappress_pro_settings.php:33
229
  msgid "Filter"
230
  msgstr ""
231
 
232
- #: mappress_map.php:474
233
  msgid "Show map"
234
  msgstr ""
235
 
236
- #: mappress_map.php:478
237
  msgid "Map"
238
  msgstr ""
239
 
240
- #: mappress_map.php:479
241
  msgid "List"
242
  msgstr ""
243
 
2
  # This file is distributed under the same license as the MapPress Maps for WordPress package.
3
  msgid ""
4
  msgstr ""
5
+ "Project-Id-Version: MapPress Maps for WordPress 2.52.1\n"
6
  "Report-Msgid-Bugs-To: https://wordpress.org/support/plugin/mappress-google-maps-for-wordpress\n"
7
+ "POT-Creation-Date: 2019-02-04 20:02:55+00:00\n"
8
  "MIME-Version: 1.0\n"
9
  "Content-Type: text/plain; charset=UTF-8\n"
10
  "Content-Transfer-Encoding: 8bit\n"
24
  msgid "HTML"
25
  msgstr ""
26
 
27
+ #: forms/editor.php:53 forms/media.php:49 forms/settings.php:41
28
  msgid "Save"
29
  msgstr ""
30
 
31
+ #: forms/editor.php:54 forms/media.php:50 forms/settings.php:42
32
  msgid "Cancel"
33
  msgstr ""
34
 
35
+ #: forms/editor.php:55 forms/media.php:72 forms/settings.php:44
36
  #: mappress_controls.php:102
37
  msgid "Delete"
38
  msgstr ""
50
  msgstr ""
51
 
52
  #: forms/media.php:12
53
+ msgid "Filter by title"
54
  msgstr ""
55
 
56
+ #: forms/media.php:21
57
  msgid "Map ID"
58
  msgstr ""
59
 
60
+ #: forms/media.php:26
61
  msgid "Map Title"
62
  msgstr ""
63
 
64
+ #: forms/media.php:27 forms/media.php:63 forms/media.php:67 mappress.php:414
65
  msgid "Untitled"
66
  msgstr ""
67
 
68
+ #: forms/media.php:31
69
  msgid "Display Size"
70
  msgstr ""
71
 
72
+ #: forms/media.php:44
73
  msgid "Save center / zoom"
74
  msgstr ""
75
 
76
+ #: forms/media.php:51 forms/media.php:71
77
  msgid "Insert into post"
78
  msgstr ""
79
 
80
+ #: forms/media.php:70 forms/settings.php:4 forms/settings.php:18
81
  msgid "Edit"
82
  msgstr ""
83
 
84
+ #: forms/media.php:79
85
  msgid "No maps found"
86
  msgstr ""
87
 
 
 
 
 
88
  #: forms/settings.php:24
89
  msgid "New"
90
  msgstr ""
102
  msgstr ""
103
 
104
  #: mappress.php:153
105
+ msgid "MapPress database tables are missing. Please deactivate the plugin and activate it again to fix this."
 
 
 
 
106
  msgstr ""
107
 
108
+ #: mappress.php:158
109
+ msgid "WARNING: MapPress is not compatible with the WP-Geo plugin. Please deactivate or uninstall WP-Geo before using MapPress."
110
  msgstr ""
111
 
112
+ #: mappress.php:163
113
+ msgid "A Google Maps API key is required"
114
  msgstr ""
115
 
116
+ #: mappress.php:163
117
+ msgid "Please update your"
118
  msgstr ""
119
 
120
+ #: mappress.php:163
121
+ msgid "MapPress Settings"
122
  msgstr ""
123
 
124
+ #: mappress.php:315 mappress.php:770
125
+ msgid "Version"
126
  msgstr ""
127
 
128
+ #: mappress.php:316
129
+ msgid "Documentation"
130
  msgstr ""
131
 
132
+ #: mappress.php:317
133
+ msgid "Support"
134
  msgstr ""
135
 
136
+ #: mappress.php:319
137
+ msgid "Upgrade to MapPress Pro"
138
  msgstr ""
139
 
140
+ #: mappress.php:403
141
  msgid "Are you sure you want to delete?"
142
  msgstr ""
143
 
144
+ #: mappress.php:404
145
  msgid "Delete this map?"
146
  msgstr ""
147
 
148
+ #: mappress.php:405
149
  msgid "Google cannot return directions between those addresses. There is no route between them or the routing information is not available."
150
  msgstr ""
151
 
152
+ #: mappress.php:406
153
  msgid "Error reading KML file"
154
  msgstr ""
155
 
156
+ #: mappress.php:407
157
  msgid "URL for KML file"
158
  msgstr ""
159
 
160
+ #: mappress.php:408
161
  msgid "Loading"
162
  msgstr ""
163
 
164
+ #: mappress.php:409
165
+ msgid "%d of %d shown"
166
+ msgstr ""
167
+
168
+ #: mappress.php:410
169
  msgid "Unable to get your location"
170
  msgstr ""
171
 
172
+ #: mappress.php:411
173
  msgid "No results"
174
  msgstr ""
175
 
176
+ #: mappress.php:412
177
  msgid "Save changes?"
178
  msgstr ""
179
 
180
+ #: mappress.php:413
181
  msgid "Shape"
182
  msgstr ""
183
 
184
+ #: mappress.php:438
185
  msgid "Improve this map"
186
  msgstr ""
187
 
188
+ #: mappress.php:454 mappress.php:472
189
  msgid "Streets"
190
  msgstr ""
191
 
192
+ #: mappress.php:455
193
  msgid "Outdoors"
194
  msgstr ""
195
 
196
+ #: mappress.php:456
197
  msgid "Light"
198
  msgstr ""
199
 
200
+ #: mappress.php:457
201
  msgid "Dark"
202
  msgstr ""
203
 
204
+ #: mappress.php:458
205
  msgid "Satellite"
206
  msgstr ""
207
 
208
+ #: mappress.php:459
209
  msgid "Satellite Streets"
210
  msgstr ""
211
 
212
+ #: mappress.php:546
213
+ msgid "Settings"
214
+ msgstr ""
215
+
216
  #: mappress_controls.php:93
217
  msgid "Add"
218
  msgstr ""
219
 
220
+ #: mappress_map.php:91 mappress_settings.php:306
221
  msgid "MapPress"
222
  msgstr ""
223
 
224
+ #: mappress_map.php:163
225
  msgid "Map not found"
226
  msgstr ""
227
 
228
+ #: mappress_map.php:420 pro/mappress_pro_settings.php:33
229
  msgid "Filter"
230
  msgstr ""
231
 
232
+ #: mappress_map.php:453
233
  msgid "Show map"
234
  msgstr ""
235
 
236
+ #: mappress_map.php:457
237
  msgid "Map"
238
  msgstr ""
239
 
240
+ #: mappress_map.php:458
241
  msgid "List"
242
  msgstr ""
243
 
languages/texts.php CHANGED
@@ -8,7 +8,7 @@ __("Delete");
8
  __("New Map");
9
  __("This post");
10
  __("All posts");
11
- __("Search post title");
12
  __("Map ID");
13
  __("Map Title");
14
  __("Untitled");
@@ -17,27 +17,26 @@ __("Save center / zoom");
17
  __("Insert into post");
18
  __("Edit");
19
  __("No maps found");
20
- __("Load More");
21
  __("New");
22
  __("Custom");
23
  __("Editor");
24
  __("Default");
25
- __("Settings");
26
- __("Version");
27
- __("Documentation");
28
- __("Support");
29
- __("Upgrade to MapPress Pro");
30
  __("MapPress database tables are missing. Please deactivate the plugin and activate it again to fix this.");
31
  __("WARNING: MapPress is not compatible with the WP-Geo plugin. Please deactivate or uninstall WP-Geo before using MapPress.");
32
  __("A Google Maps API key is required");
33
  __("Please update your");
34
  __("MapPress Settings");
 
 
 
 
35
  __("Are you sure you want to delete?");
36
  __("Delete this map?");
37
  __("Google cannot return directions between those addresses. There is no route between them or the routing information is not available.");
38
  __("Error reading KML file");
39
  __("URL for KML file");
40
  __("Loading");
 
41
  __("Unable to get your location");
42
  __("No results");
43
  __("Save changes?");
@@ -49,6 +48,7 @@ __("Light");
49
  __("Dark");
50
  __("Satellite");
51
  __("Satellite Streets");
 
52
  __("Add");
53
  __("MapPress");
54
  __("Map not found");
8
  __("New Map");
9
  __("This post");
10
  __("All posts");
11
+ __("Filter by title");
12
  __("Map ID");
13
  __("Map Title");
14
  __("Untitled");
17
  __("Insert into post");
18
  __("Edit");
19
  __("No maps found");
 
20
  __("New");
21
  __("Custom");
22
  __("Editor");
23
  __("Default");
 
 
 
 
 
24
  __("MapPress database tables are missing. Please deactivate the plugin and activate it again to fix this.");
25
  __("WARNING: MapPress is not compatible with the WP-Geo plugin. Please deactivate or uninstall WP-Geo before using MapPress.");
26
  __("A Google Maps API key is required");
27
  __("Please update your");
28
  __("MapPress Settings");
29
+ __("Version");
30
+ __("Documentation");
31
+ __("Support");
32
+ __("Upgrade to MapPress Pro");
33
  __("Are you sure you want to delete?");
34
  __("Delete this map?");
35
  __("Google cannot return directions between those addresses. There is no route between them or the routing information is not available.");
36
  __("Error reading KML file");
37
  __("URL for KML file");
38
  __("Loading");
39
+ __("%d of %d shown");
40
  __("Unable to get your location");
41
  __("No results");
42
  __("Save changes?");
48
  __("Dark");
49
  __("Satellite");
50
  __("Satellite Streets");
51
+ __("Settings");
52
  __("Add");
53
  __("MapPress");
54
  __("Map not found");
mappress.php CHANGED
@@ -4,7 +4,7 @@ Plugin Name: MapPress Maps for WordPress
4
  Plugin URI: https://www.mappresspro.com/mappress
5
  Author URI: https://www.mappresspro.com/chris-contact
6
  Description: MapPress makes it easy to add Google and Leaflet Maps to WordPress
7
- Version: 2.50.11
8
  Author: Chris Richardson
9
  Text Domain: mappress-google-maps-for-wordpress
10
  Thanks to all the translators and to Matthias Stasiak for his wonderful icons (http://code.google.com/p/google-maps-icons/)
@@ -35,7 +35,7 @@ if (is_dir(dirname( __FILE__ ) . '/pro')) {
35
  }
36
 
37
  class Mappress {
38
- const VERSION = '2.50.11';
39
 
40
  static
41
  $baseurl,
@@ -43,11 +43,11 @@ class Mappress {
43
  $basedir,
44
  $debug,
45
  $loaded,
46
- $notices,
47
  $options,
48
  $pages,
49
  $pro,
50
- $updater
 
51
  ;
52
 
53
  function __construct() {
@@ -56,6 +56,9 @@ class Mappress {
56
  self::$baseurl = plugins_url('', __FILE__);
57
  self::$options = Mappress_Options::get();
58
  self::$pro = is_dir(dirname( __FILE__ ) . '/pro');
 
 
 
59
  self::debugging();
60
 
61
  // Pro updater
@@ -101,27 +104,111 @@ class Mappress {
101
  add_filter( 'heartbeat_settings', array(__CLASS__, 'heartbeat_settings'));
102
  }
103
 
104
- static function deregister() {
105
- if (self::$loaded) {
106
- $wps = wp_scripts();
107
- foreach($wps->registered as $registered) {
108
- if (stripos($registered->src, 'maps.googleapis.com') !== false && stripos($registered->handle, 'mappress') === false) {
109
- $registered->src = self::$baseurl . '/forms/dummy.js';
110
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
111
  }
112
  }
113
  }
114
 
115
- static function heartbeat_settings( $settings ) {
116
- $settings['minimalInterval'] = 600;
117
- return $settings;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
118
  }
119
 
120
  static function debugging() {
121
  global $wpdb;
122
 
123
  if (isset($_GET['mp_info'])) {
124
- echo "<b>Plugin version</b> " . self::get_version_string();
125
  $posts_table = $wpdb->prefix . 'mappress_posts';
126
  $results = $wpdb->get_results("SELECT postid, mapid FROM $posts_table");
127
  echo "<br/>postid => mapid";
@@ -149,344 +236,333 @@ class Mappress {
149
  }
150
  }
151
 
152
- static function plugin_action_links($links, $file) {
153
- $settings_link = "<a href='" . admin_url("admin.php?page=mappress") . "'>" . __('Settings', 'mappress-google-maps-for-wordpress') . "</a>";
154
- array_unshift( $links, $settings_link );
155
- return $links;
 
 
 
 
 
156
  }
157
 
158
- static function get_version_string() {
159
- $version = __('Version', 'mappress-google-maps-for-wordpress') . ":" . self::VERSION;
160
- if (self::$pro)
161
- $version .= " PRO";
162
- return $version;
 
 
 
 
163
  }
164
 
165
- static function get_support_links($title = 'MapPress') {
166
- $html = "<div class='mapp-support'>" . self::get_version_string();
167
- $html .= " | <a target='_blank' href='https://mappresspro.com/mappress/mappress-documentation'>" . __('Documentation', 'mappress-google-maps-for-wordpress') . "</a>";
168
- $html .= " | <a target='_blank' href='https://mappresspro.com/chris-contact'>" . __('Support', 'mappress-google-maps-for-wordpress') . "</a>";
169
- if (!self::$pro)
170
- $html .= "<a class='button button-primary' href='https://mappresspro.com/mappress' target='_blank'>" . __('Upgrade to MapPress Pro', 'mappress-google-maps-for-wordpress') . "</a>";
171
- $html .= "</div>";
172
- echo $html;
173
- }
174
 
175
- static function ajax_response($status, $data=null, $gzip = false) {
176
- $output = trim(ob_get_clean()); // Ignore whitespace, any other output is an error
177
- header( "Content-Type: application/json" );
178
 
179
- if ($gzip && get_site_option('can_compress_scripts'))
180
- ob_start('ob_gzhandler');
181
  else
182
- ob_start();
183
-
184
- $response = json_encode(array('status' => $status, 'output' => $output, 'data' => $data));
185
- die ($response);
186
- }
187
 
188
- static function admin_menu() {
189
- // Settings
190
- $settings = (self::$pro) ? new Mappress_Pro_Settings() : new Mappress_Settings();
191
- self::$pages[] = add_menu_page('MapPress', 'MapPress', 'manage_options', 'mappress', array(&$settings, 'options_page'), 'dashicons-location');
192
  }
193
 
194
  /**
195
- * Automatic map display.
196
- * If set, the [mappress] shortcode will be prepended/appended to the post body, once for each map
197
- * The shortcode is used so it can be filtered - for example WordPress will remove it in excerpts by default.
198
  *
199
- * @param mixed $content
200
  */
201
- static function the_content($content="") {
202
- global $post;
203
- global $wp_current_filter;
204
-
205
- $autodisplay = self::$options->autodisplay;
206
-
207
- // No auto display
208
- if (!$autodisplay || $autodisplay == 'none')
209
- return $content;
210
-
211
- // Check if in the loop, to prevent conflicts with JetPack - see http://wordpress.org/support/topic/easy-adsense-lite-and-jetpack
212
- if (!in_the_loop())
213
- return $content;
214
 
215
- // Don't add the shortcode for feeds or admin screens
216
- if (is_feed() || self::is_admin())
217
- return $content;
218
 
219
- // No shortcode if post is password protected
220
- if (post_password_required())
221
- return $content;
 
 
222
 
223
- // If this is an excerpt don't attempt to add the map to it
224
- if (in_array('get_the_excerpt', $wp_current_filter))
225
- return $content;
226
 
227
- // Don't auto display if the post already contains a MapPress shortcode
228
- if (stristr($content, '[mappress') !== false || stristr($content, '[mashup') !== false)
229
- return $content;
 
 
230
 
231
- // Get maps associated with post
232
- $mapids = Mappress_Map::get_list($post->ID, 'ids');
233
- if (empty($mapids))
234
- return $content;
 
 
235
 
236
- // Add the shortcode once for each map
237
- $shortcodes = "";
238
- foreach($mapids as $mapid)
239
- $shortcodes .= '<p>[mappress mapid="' . $mapid . '"]</p>';
 
 
 
 
 
240
 
241
- if ($autodisplay == 'top')
242
- return $shortcodes . $content;
243
- else
244
- return $content . $shortcodes;
245
  }
246
 
247
  /**
248
- * Map a shortcode in a post.
 
 
249
  *
250
- * @param mixed $atts - shortcode attributes
251
  */
252
- static function shortcode_map($atts='') {
253
- global $post;
 
254
 
255
- // No feeds
256
- if (is_feed())
257
- return;
 
 
 
 
 
 
258
 
259
- // Try to protect against calls to do_shortcode() in the post editor...
260
- if (self::is_admin())
261
- return;
262
-
263
- $atts = self::scrub_atts($atts);
264
-
265
- // Determine what to show
266
- $mapid = (isset($atts['mapid'])) ? $atts['mapid'] : null;
267
 
268
- if ($mapid) {
269
- // Show map by mapid
270
- $map = Mappress_Map::get($mapid);
271
- } else {
272
- // Get the first map attached to the post
273
- $maps = Mappress_Map::get_list($post->ID);
274
- $map = (isset ($maps[0]) ? $maps[0] : false);
 
 
 
 
 
 
 
275
  }
276
 
277
- if (!$map)
278
- return;
279
-
280
- return $map->display($atts);
281
  }
282
 
283
- /**
284
- * Process the mashup shortcode
285
- *
286
- */
287
- static function shortcode_mashup($atts='') {
288
- // No feeds
289
- if (is_feed())
290
- return;
291
-
292
- // Prevent do_shortcode() in the post editor, but allow for AJAX calls from other plugins (which run as admin)
293
- if (self::is_admin())
294
- return;
295
-
296
- $atts = self::scrub_atts($atts);
297
- return self::get_mashup($atts);
298
  }
299
 
300
- /**
301
- * Get a mashup - used by shortcode and widget
302
- *
303
- * @param mixed $atts
304
- */
305
- static function get_mashup($atts) {
306
- global $wp_query;
307
-
308
- $mashup = new Mappress_Map($atts);
309
- $mashup->query = Mappress_Query::parse_query($atts);
310
-
311
- // If parameter test="true", output the query result without using a map
312
- if (isset($_GET['mp_test']) || (isset($atts['test']) && $atts['test'])) {
313
- $wpq = new WP_Query($mashup->query);
314
- return "<pre>" . print_r($wpq, true) . "</pre>";
315
- }
316
-
317
- // If using query 'current' then create a static map for current posts
318
- if (empty($mashup->query))
319
- $mashup->pois = Mappress_Query::get_pois($wp_query);
320
-
321
- // If 'hideEmpty' is set, try to suppress the map if there are no POIs
322
- if ($mashup->hideEmpty) {
323
- // 'current' query - check found pois
324
- if (empty($mashup->query) && empty($mashup->pois))
325
- return "";
326
-
327
- // Other queries - check for at least 1 result
328
- if (Mappress_Query::is_empty($mashup->query))
329
- return "";
330
- }
331
- return $mashup->display();
332
  }
333
 
334
- static function wp_head() {
335
- echo "\r\n<!-- MapPress Easy Google Maps " . self::get_version_string() . " (http://www.mappresspro.com/mappress) -->\r\n";
336
- echo "<script type='text/javascript'>mapp = window.mapp || {}; mapp.data = [];</script>\r\n";
337
  }
338
 
339
- /**
340
- * Scripts & styles for frontend
341
- * CSS is loaded from: child theme, theme, or plugin directory
342
- */
343
- static function wp_enqueue_scripts() {
344
- // Leaflet CSS
345
- if (self::$options->engine == 'leaflet')
346
- wp_enqueue_style('mappress-leaflet', self::$baseurl . '/css/leaflet/leaflet.css', null, '1.3.1');
347
 
348
- // Mappress CSS from plugin directory
349
- wp_enqueue_style('mappress', self::$baseurl . '/css/mappress.css', null, self::VERSION);
 
350
 
351
- // Mappress CSS from theme directory
352
- if ( @file_exists( get_stylesheet_directory() . '/mappress.css' ) )
353
- $file = get_stylesheet_directory_uri() . '/mappress.css';
354
- elseif ( @file_exists( get_template_directory() . '/mappress.css' ) )
355
- $file = get_template_directory_uri() . '/mappress.css';
356
 
357
- if (isset($file))
358
- wp_enqueue_style('mappress-custom', $file, array('mappress'), self::VERSION);
 
 
 
 
 
 
 
 
 
 
 
 
359
 
360
- // Load scripts in header
361
- if (!self::footer())
362
- self::load();
363
- }
 
 
 
 
 
 
 
 
 
 
364
 
365
- // Scripts & styles for admin
366
- // CSS is always loaded from the plugin directory
367
- static function admin_enqueue_scripts($hook) {
368
- // Some plugins call this without setting $hook
369
- if (empty($hook))
370
- return;
 
 
 
 
 
 
 
 
 
 
 
371
 
372
- // Network admin has no pages
373
- if (empty(self::$pages))
374
- return;
 
 
 
 
 
 
 
 
375
 
376
- $editing = in_array($hook, array('edit.php', 'post.php', 'post-new.php'));
 
 
 
 
 
 
 
 
 
 
 
 
377
 
378
- // Settings scripts
379
- if ($hook == self::$pages[0]) {
380
- self::load('settings');
381
- if (function_exists('wp_enqueue_code_editor'))
382
- wp_enqueue_code_editor(array( 'type' => 'php' ));
 
 
383
  }
384
 
385
- // Leaflet CSS
386
- if (self::$options->engine == 'leaflet')
387
- wp_enqueue_style('mappress-leaflet', self::$baseurl . "/css/leaflet/leaflet.css", null, '1.3.1');
388
-
389
- // Mappress CSS
390
- if (in_array($hook, self::$pages) || $editing) {
391
- wp_enqueue_style('mappress', self::$baseurl . '/css/mappress.css', null, self::VERSION);
392
- wp_enqueue_style('mappress-admin', self::$baseurl . '/css/mappress_admin.css', null, self::VERSION);
393
- }
394
- }
395
 
396
- static function plugins_loaded() {
397
- load_plugin_textdomain('mappress-google-maps-for-wordpress', false, dirname(self::$basename) . '/languages');
398
  }
399
 
 
 
 
 
 
400
 
401
- /**
402
- * There are several WP bugs that prevent correct activation in multisitie:
403
- * http://core.trac.wordpress.org/ticket/14170
404
- * http://core.trac.wordpress.org/ticket/14718)
405
- *
406
- */
407
- static function init() {
408
- // Register hooks and create database tables
409
- Mappress_Map::register();
410
 
411
- // Register static classes
412
- if (self::$pro) {
413
- Mappress_Icons::register();
414
- Mappress_Meta::register();
415
- Mappress_Pro_Settings::register();
416
- Mappress_Query::register();
417
- Mappress_Template::register();
418
- Mappress_Widget::register();
419
- }
420
 
421
- // Check if upgrade is needed
422
- $current_version = get_option('mappress_version');
 
 
 
423
 
424
- // Convert meta key settings
425
- if ($current_version < '2.45') {
426
- $old = (object) get_option('mappress_options');
427
- foreach(array('address1', 'address2', 'address3', 'address4', 'address5', 'address6', 'lat', 'lng', 'iconid', 'title', 'body', 'zoom') as $i => $key) {
428
- if ($i < 6) {
429
- $value = (isset($old->metaKeyAddress[$i])) ? $old->metaKeyAddress[$i] : null;
430
- } else {
431
- $old_key = 'metaKey' . ucfirst($key);
432
- $value = (isset($old->$old_key)) ? $old->$old_key : null;
433
- }
434
- if ($value)
435
- Mappress::$options->metaKeys[$key] = $value;
436
- }
437
- Mappress::$options->save();
438
  }
439
 
440
- update_option('mappress_version', self::VERSION);
441
- }
442
 
443
- // Sanity checks via notices
444
- static function admin_notices() {
445
- global $wpdb;
446
- $notices = array();
447
 
448
- $error = "<div class='notice error'><p>%s</p></div>";
449
- $map_table = $wpdb->prefix . "mappress_maps";
450
- $exists = $wpdb->get_var("show tables like '$map_table'");
451
 
452
- if (!$exists) {
453
- printf($error, __("MapPress database tables are missing. Please deactivate the plugin and activate it again to fix this.", 'mappress-google-maps-for-wordpress'));
454
- return;
455
- }
456
 
457
- if (class_exists('WPGeo')) {
458
- printf($error, __("WARNING: MapPress is not compatible with the WP-Geo plugin. Please deactivate or uninstall WP-Geo before using MapPress.", 'mappress-google-maps-for-wordpress'));
459
- return;
460
  }
461
 
462
- if (self::$options->engine != 'leaflet' && !self::get_api_keys()->browser)
463
- printf($error, sprintf("%s. %s <a href='%s'>%s</a>.", __("A Google Maps API key is required", 'mappress-google-maps-for-wordpress'), __("Please update your", 'mappress-google-maps-for-wordpress'), admin_url('admin.php?page=mappress'), __('MapPress Settings', 'mappress-google-maps-for-wordpress')));
464
 
465
- // Print notices
466
- if (is_super_admin()) {
467
- $dismissed = get_user_meta(get_current_user_id(), 'mappress-notices', true);
468
- $dismissed = (is_array($dismissed)) ? $dismissed : array();
469
- $notices = array_diff_key($notices, $dismissed);
470
- foreach($notices as $key => $msg)
471
- echo "<div class='notice error is-dismissible' data-mapp-dismiss='$key'><p>$msg</p></div>";
472
 
473
- if ($notices) {
474
- echo Mappress::script("jQuery('[data-mapp-dismiss]').on('click', '.notice-dismiss', function(e) {
475
- jQuery.post(ajaxurl, { action : 'mapp_dismiss', key : jQuery(this).closest('.notice').attr('data-mapp-dismiss') });
476
- });");
477
- }
478
- }
479
  }
480
 
481
- static function ajax_dismiss() {
482
- $key = (isset($_POST['key'])) ? $_POST['key'] : null;
483
- if ($key) {
484
- $user_id = get_current_user_id();
485
- $dismissed = get_user_meta($user_id, 'mappress-notices', true);
486
- $dismissed = (is_array($dismissed)) ? $dismissed : array();
487
- $dismissed[$key] = true;
488
- update_user_meta($user_id, 'mappress-notices', $dismissed);
489
- }
 
 
 
 
 
 
490
  }
491
 
492
  /**
@@ -529,7 +605,71 @@ class Mappress {
529
  $atts['center'] = ($map && $map->pois) ? $map->pois[0]->point['lat'] . ',' . $map->pois[0]->point['lng'] : null;
530
  }
531
 
532
- return $atts;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
533
  }
534
 
535
  static function string_to_boolean($data) {
@@ -547,234 +687,90 @@ class Mappress {
547
  return $data;
548
  }
549
 
550
- static function load($type = null) {
551
- if (self::$loaded)
552
- return;
553
- else
554
- self::$loaded = true;
555
-
556
- $dev = self::dev();
557
- $version = (self::$pro) ? self::VERSION . 'PRO' : self::VERSION;
558
- $footer = self::footer();
559
-
560
- // Directories
561
- $min = ($dev) ? "" : ".min";
562
- $js = ($dev) ? "http://localhost/$dev/wp-content/plugins/mappress-google-maps-for-wordpress/src" : self::$baseurl . '/js';
563
-
564
- if (self::$options->engine == 'leaflet') {
565
- wp_enqueue_script("mappress-leaflet", $js . "/leaflet/leaflet.js", null, '1.3.1', $footer);
566
- wp_enqueue_script("mappress-omnivore", $js . "/leaflet/leaflet-omnivore.min.js", null, '0.3.1', $footer);
567
- wp_enqueue_script("mappress-algolia-places", $js . "/algolia/placesAutocompleteDataset.min.js", null, '1.7.2', $footer);
568
- wp_enqueue_script("mappress-algolia-search", $js . "/algolia/algoliasearchLite.min.js", null, '3', $footer);
569
-
570
- } else {
571
- $language = self::get_language();
572
- $language = ($language) ? "&language=$language" : '';
573
- $apiversion = ($dev) ? 'v=3.exp' : 'v=3';
574
- $apikey = "&key=" . self::get_api_keys()->browser;
575
- $libs = ($type == 'editor') ? '&libraries=places,drawing' : '&libraries=places';
576
- wp_enqueue_script("mappress-gmaps", "https://maps.googleapis.com/maps/api/js?{$apiversion}{$language}{$libs}{$apikey}", null, null, $footer);
577
- }
578
-
579
- if ($type == 'editor')
580
- wp_enqueue_script('mappress_editor', $js . "/mappress_editor$min.js", array('jquery', 'jquery-ui-position', 'jquery-ui-sortable'), $version, $footer);
581
-
582
- if ($type == 'settings')
583
- wp_enqueue_script('mappress_settings', $js . "/mappress_settings$min.js", array('postbox', 'jquery', 'jquery-ui-position', 'jquery-ui-sortable'), $version, $footer);
584
-
585
- // Autocomplete
586
- wp_enqueue_script('mappress-algolia-autocomplete', $js . "/algolia/autocomplete.jquery.min.js", array('jquery'), $version, $footer);
587
-
588
- // mappress.js includes loader, so must come after editor
589
- wp_enqueue_script('mappress', $js . "/mappress$min.js", array('underscore', 'jquery'), $version, $footer);
590
-
591
- if ($dev) {
592
- foreach(array('directions', 'geocoding', 'icons', 'infobox', 'lib', 'places', 'poi', 'widgets', 'loader') as $script)
593
- wp_enqueue_script($script, $js . "/mappress_{$script}.js", null, $version, $footer);
594
- }
595
-
596
- wp_localize_script('mappress', 'mappl10n', self::l10n());
597
-
598
- // Templates
599
- if ($type != 'editor')
600
- Mappress_Template::load($footer);
601
- }
602
-
603
- static function footer() {
604
- $infinite = class_exists( 'Jetpack' ) && Jetpack::is_module_active( 'infinite-scroll' );
605
- return (is_admin() || self::$options->footer && !$infinite);
606
- }
607
-
608
- static function dev() {
609
- if (defined('MAPPRESS_DEV') && MAPPRESS_DEV)
610
- return MAPPRESS_DEV;
611
- else if (isset($_REQUEST['mp_dev']))
612
- return ($_REQUEST['mp_dev']) ? $_REQUEST['mp_dev'] : 'dev';
613
- else
614
- return false;
615
- }
616
-
617
- static function l10n() {
618
  global $post;
 
619
 
620
- $l10n = array(
621
- 'delete_prompt' => __('Are you sure you want to delete?', 'mappress-google-maps-for-wordpress'),
622
- 'delete_map_prompt' => __('Delete this map?', 'mappress-google-maps-for-wordpress'),
623
- 'dir_error' => __('Google cannot return directions between those addresses. There is no route between them or the routing information is not available.', 'mappress-google-maps-for-wordpress'),
624
- 'kml_error' => __('Error reading KML file', 'mappress-google-maps-for-wordpress'),
625
- 'layer' => __('URL for KML file', 'mappress-google-maps-for-wordpress'),
626
- 'loading' => "<span class='mapp-spinner'></span>" . __('Loading', 'mappress-google-maps-for-wordpress'),
627
- 'no_geolocate' => __('Unable to get your location', 'mappress-google-maps-for-wordpress'),
628
- 'no_results' => __('No results', 'mappress-google-maps-for-wordpress'),
629
- 'save' => __('Save changes?', 'mappress-google-maps-for-wordpress'),
630
- 'shape' => __('Shape', 'mappress-google-maps-for-wordpress'),
631
- 'untitled' => __('Untitled', 'mappress-google-maps-for-wordpress')
632
- );
633
-
634
- // Globals
635
- $l10n['options'] = array(
636
- 'admin' => current_user_can('administrator'),
637
- 'ajaxurl' => admin_url('admin-ajax.php'),
638
- 'debug' => Mappress::$debug,
639
- 'iconsUrl' => (self::$pro) ? Mappress_Icons::$icons_url : null,
640
- 'language' => self::get_language(),
641
- 'mapbox' => self::get_api_keys()->mapbox,
642
- 'mini' => 350,
643
- 'postid' => ($post) ? $post->ID : null,
644
- 'pro' => self::$pro,
645
- 'siteUrl' => site_url(),
646
- 'standardIconsUrl' => (self::$pro) ? Mappress_Icons::$standard_icons_url : null
647
- );
648
 
649
- // Leaflet layers for mapbox / OSM
650
- if (self::$options->engine == 'leaflet') {
651
- // Providers
652
- $providers = array(
653
- 'mapbox' => array(
654
- 'accessToken' => self::get_api_keys()->mapbox,
655
- 'attribution' => "<a href='https://www.mapbox.com/about/maps/' target='_blank'>&copy; Mapbox &copy; OpenStreetMap</a> <a class='mapbox-improve-map' href='https://www.mapbox.com/map-feedback/' target='_blank'>" . __('Improve this map', 'mappress-google-maps-for-wordpress') . "</a>",
656
- 'fresh' => true, // Fresh = true in order to provide updated studio styles
657
- 'url' => "https://api.mapbox.com/styles/v1/{user}/{id}/tiles/256/{z}/{x}/{y}{r}?access_token={accessToken}&fresh={fresh}",
658
- 'zoomOffset' => 0
659
- ),
660
- 'osm' => array(
661
- 'attribution' => 'Map data ©<a href="https://openstreetmap.org">OpenStreetMap</a>',
662
- 'url' => 'https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png'
663
- )
664
- );
665
- $l10n['options']['providers'] = apply_filters('mappress_tile_providers', $providers);
666
 
667
- // Baselayers
668
- $baselayers = array();
669
- if (self::get_api_keys()->mapbox) {
670
- $baselayers = array(
671
- array('provider' => 'mapbox', 'user' => 'mapbox', 'id' => 'streets-v10', 'name' => 'streets', 'label' => __('Streets', 'mappress-google-maps-for-wordpress')),
672
- array('provider' => 'mapbox', 'user' => 'mapbox', 'id' => 'outdoors-v10', 'name' => 'outdoors', 'label' => __('Outdoors', 'mappress-google-maps-for-wordpress')),
673
- array('provider' => 'mapbox', 'user' => 'mapbox', 'id' => 'light-v9', 'name' => 'light', 'label' => __('Light', 'mappress-google-maps-for-wordpress')),
674
- array('provider' => 'mapbox', 'user' => 'mapbox', 'id' => 'dark-v9', 'name' => 'dark', 'label' => __('Dark', 'mappress-google-maps-for-wordpress')),
675
- array('provider' => 'mapbox', 'user' => 'mapbox', 'id' => 'satellite-v9', 'name' => 'satellite', 'label' => __('Satellite', 'mappress-google-maps-for-wordpress')),
676
- array('provider' => 'mapbox', 'user' => 'mapbox', 'id' => 'satellite-streets-v10', 'name' => 'satellite-streets', 'label' => __('Satellite Streets', 'mappress-google-maps-for-wordpress'))
677
- );
678
 
679
- // Mapbox studio styles (remove base url and everything after '.html', remainder is user/id)
680
- foreach(self::$options->mapboxStyles as $name => $url) {
681
- $url = strstr($url, '.html', true);
682
- $url = str_ireplace('https://api.mapbox.com/styles/v1/', '', $url);
683
- $parts = explode('/', $url);
684
- if (count($parts) == 2)
685
- $baselayers[] = array('provider' => 'mapbox', 'user' => $parts[0], 'id' => $parts[1], 'name' => $name, 'label' => $name);
686
- }
687
- } else {
688
- $baselayers = array(
689
- array('provider' => 'osm', 'id' => 'osm', 'name' => 'osm', 'label' => __('Streets', 'mappress-google-maps-for-wordpress'))
690
- );
691
- }
692
 
693
- // User-defined baselayers
694
- $l10n['options']['baseLayers'] = apply_filters('mappress_baselayers', $baselayers);
695
- } else {
696
- // Google wizard styles
697
- $l10n['options']['styles'] = array();
698
- foreach(self::$options->styles as $id => &$style)
699
- $l10n['options']['styles'][$id] = json_decode($style);
700
- }
701
 
702
- // Global settings
703
- $options = array('autoupdate', 'country', 'defaultIcon', 'directions', 'directionsServer', 'engine', 'iconScale', 'iwType', 'mashupBody', 'mashupClick', 'poiZoom', 'radius', 'search', 'size', 'sizes', 'style', 'tiles');
704
- foreach($options as $option)
705
- $l10n['options'][$option] = self::$options->$option;
706
 
707
- return $l10n;
708
- }
 
709
 
710
- /**
711
- * Get language using settings/WPML/qTrans
712
- *
713
- */
714
- static function get_language() {
715
- // WPML
716
- if (defined('ICL_LANGUAGE_CODE'))
717
- $lang = ICL_LANGUAGE_CODE;
718
 
719
- // qTranslate
720
- else if (function_exists('qtrans_getLanguage'))
721
- $lang = qtrans_getLanguage();
 
722
 
 
 
723
  else
724
- $lang = self::$options->language;
725
-
726
- return ($lang) ? $lang : null;
727
  }
728
 
729
  /**
730
- * Switch WPML language during AJAX calls
 
731
  */
732
- static function set_language() {
733
- global $sitepress;
734
- if ($sitepress && method_exists($sitepress, 'switch_lang')) {
735
- $language = self::get_language();
736
- $sitepress->switch_lang($language);
737
- }
738
- }
739
-
740
- static function get_api_keys() {
741
- $results = (object) array('browser' => self::$options->apiKey, 'server' => self::$options->apiKeyServer, 'mapbox' => self::$options->mapbox);
742
- if (empty($results->browser) && defined('MAPPRESS_APIKEY'))
743
- $results->browser = MAPPRESS_APIKEY;
744
- if (empty($results->server) && defined('MAPPRESS_APIKEY_SERVER'))
745
- $results->server = MAPPRESS_APIKEY_SERVER;
746
- if (empty($results->mapbox) && defined('MAPPRESS_APIKEY_MAPBOX'))
747
- $result->mapbox = MAPPRESS_APIKEY_MAPBOX;
748
- return $results;
749
- }
750
 
751
- static function script($script, $ready = false) {
752
- $html = "\r\n<script type='text/javascript'>\r\n";
753
- $html .= ($ready) ? "jQuery(document).ready(function() { $script });" : $script;
754
- $html .= "\r\n</script>";
755
- return $html;
756
- }
757
 
758
- static function script_template($template, $id = null) {
759
- $id = ($id) ? "id='mapp-tmpl-{$id}'" : '';
760
- $html = "\r\n<script type='text/template' $id>\r\n{$template}\r\n</script>\r\n";
761
- return $html;
762
- }
763
 
764
- static function ssl() {
765
- return (is_ssl() || !filter_var($_SERVER['REMOTE_ADDR'], FILTER_VALIDATE_IP, FILTER_FLAG_NO_PRIV_RANGE | FILTER_FLAG_NO_RES_RANGE));
766
- }
767
 
768
- static function is_localhost() {
769
- return !filter_var($_SERVER['SERVER_ADDR'], FILTER_VALIDATE_IP, FILTER_FLAG_NO_PRIV_RANGE | FILTER_FLAG_NO_RES_RANGE);
 
770
  }
771
 
772
- // WP returns is_admin() = true during AJAX calls, this one returns false in that case
773
- static function is_admin() {
774
- $ajax = defined('DOING_AJAX') && DOING_AJAX;
775
- return is_admin() && !$ajax;
776
  }
777
- } // End Mappress class
778
 
779
  $mappress = new Mappress();
780
  ?>
4
  Plugin URI: https://www.mappresspro.com/mappress
5
  Author URI: https://www.mappresspro.com/chris-contact
6
  Description: MapPress makes it easy to add Google and Leaflet Maps to WordPress
7
+ Version: 2.52.1
8
  Author: Chris Richardson
9
  Text Domain: mappress-google-maps-for-wordpress
10
  Thanks to all the translators and to Matthias Stasiak for his wonderful icons (http://code.google.com/p/google-maps-icons/)
35
  }
36
 
37
  class Mappress {
38
+ const VERSION = '2.52.1';
39
 
40
  static
41
  $baseurl,
43
  $basedir,
44
  $debug,
45
  $loaded,
 
46
  $options,
47
  $pages,
48
  $pro,
49
+ $updater,
50
+ $version
51
  ;
52
 
53
  function __construct() {
56
  self::$baseurl = plugins_url('', __FILE__);
57
  self::$options = Mappress_Options::get();
58
  self::$pro = is_dir(dirname( __FILE__ ) . '/pro');
59
+ self::$version = (self::$pro) ? self::VERSION . " PRO" : self::VERSION;
60
+ self::$version = (defined('MAPPRESS_DEV') && MAPPRESS_DEV) ? self::$version . '-' . rand(0,99999) : self::$version;
61
+
62
  self::debugging();
63
 
64
  // Pro updater
104
  add_filter( 'heartbeat_settings', array(__CLASS__, 'heartbeat_settings'));
105
  }
106
 
107
+ // Scripts & styles for admin
108
+ // CSS is always loaded from the plugin directory
109
+ static function admin_enqueue_scripts($hook) {
110
+ // Some plugins call this without setting $hook
111
+ if (empty($hook))
112
+ return;
113
+
114
+ // Network admin has no pages
115
+ if (empty(self::$pages))
116
+ return;
117
+
118
+ $editing = in_array($hook, array('edit.php', 'post.php', 'post-new.php'));
119
+
120
+ // Settings scripts
121
+ if ($hook == self::$pages[0]) {
122
+ self::load('settings');
123
+ if (function_exists('wp_enqueue_code_editor'))
124
+ wp_enqueue_code_editor(array( 'type' => 'php' ));
125
+ }
126
+
127
+ // Leaflet CSS
128
+ if (self::$options->engine == 'leaflet')
129
+ wp_enqueue_style('mappress-leaflet', self::$baseurl . "/css/leaflet/leaflet.css", null, '1.3.1');
130
+
131
+ // Mappress CSS
132
+ if (in_array($hook, self::$pages) || $editing) {
133
+ wp_enqueue_style('mappress', self::$baseurl . '/css/mappress.css', null, self::$version);
134
+ wp_enqueue_style('mappress-admin', self::$baseurl . '/css/mappress_admin.css', null, self::$version);
135
+ }
136
+ }
137
+
138
+ static function admin_menu() {
139
+ // Settings
140
+ $settings = (self::$pro) ? new Mappress_Pro_Settings() : new Mappress_Settings();
141
+ self::$pages[] = add_menu_page('MapPress', 'MapPress', 'manage_options', 'mappress', array(&$settings, 'options_page'), 'dashicons-location');
142
+ }
143
+
144
+ static function admin_notices() {
145
+ global $wpdb;
146
+ $notices = array();
147
+
148
+ $error = "<div class='notice error'><p>%s</p></div>";
149
+ $map_table = $wpdb->prefix . "mappress_maps";
150
+ $exists = $wpdb->get_var("show tables like '$map_table'");
151
+
152
+ if (!$exists) {
153
+ printf($error, __("MapPress database tables are missing. Please deactivate the plugin and activate it again to fix this.", 'mappress-google-maps-for-wordpress'));
154
+ return;
155
+ }
156
+
157
+ if (class_exists('WPGeo')) {
158
+ printf($error, __("WARNING: MapPress is not compatible with the WP-Geo plugin. Please deactivate or uninstall WP-Geo before using MapPress.", 'mappress-google-maps-for-wordpress'));
159
+ return;
160
+ }
161
+
162
+ if (self::$options->engine != 'leaflet' && !self::get_api_keys()->browser)
163
+ printf($error, sprintf("%s. %s <a href='%s'>%s</a>.", __("A Google Maps API key is required", 'mappress-google-maps-for-wordpress'), __("Please update your", 'mappress-google-maps-for-wordpress'), admin_url('admin.php?page=mappress'), __('MapPress Settings', 'mappress-google-maps-for-wordpress')));
164
+
165
+ // Print notices
166
+ if (is_super_admin()) {
167
+ $dismissed = get_user_meta(get_current_user_id(), 'mappress-dismissed', true);
168
+ $dismissed = (is_array($dismissed)) ? $dismissed : array();
169
+
170
+ // Print notices
171
+ $notices = array_diff_key($notices, $dismissed);
172
+ foreach($notices as $key => $msg)
173
+ echo "<div class='notice error is-dismissible' data-mapp-dismiss='$key'><p>$msg</p></div>";
174
+
175
+ if ($notices) {
176
+ echo Mappress::script("jQuery('[data-mapp-dismiss]').on('click', '.notice-dismiss', function(e) {
177
+ jQuery.post(ajaxurl, { action : 'mapp_dismiss', key : jQuery(this).closest('.notice').attr('data-mapp-dismiss') });
178
+ });");
179
  }
180
  }
181
  }
182
 
183
+ static function ajax_dismiss() {
184
+ $key = (isset($_POST['key'])) ? $_POST['key'] : null;
185
+ if ($key) {
186
+ $user_id = get_current_user_id();
187
+ $dismissed = get_user_meta($user_id, 'mappress-dismissed', true);
188
+ $dismissed = (is_array($dismissed)) ? $dismissed : array();
189
+ $dismissed[$key] = true;
190
+ update_user_meta($user_id, 'mappress-dismissed', $dismissed);
191
+ }
192
+ }
193
+
194
+ static function ajax_response($status, $data=null, $gzip = false) {
195
+ $output = trim(ob_get_clean()); // Ignore whitespace, any other output is an error
196
+ header( "Content-Type: application/json" );
197
+
198
+ if ($gzip && get_site_option('can_compress_scripts'))
199
+ ob_start('ob_gzhandler');
200
+ else
201
+ ob_start();
202
+
203
+ $response = json_encode(array('status' => $status, 'output' => $output, 'data' => $data));
204
+ die ($response);
205
  }
206
 
207
  static function debugging() {
208
  global $wpdb;
209
 
210
  if (isset($_GET['mp_info'])) {
211
+ echo "<b>Plugin</b> " . self::$version;
212
  $posts_table = $wpdb->prefix . 'mappress_posts';
213
  $results = $wpdb->get_results("SELECT postid, mapid FROM $posts_table");
214
  echo "<br/>postid => mapid";
236
  }
237
  }
238
 
239
+ static function deregister() {
240
+ if (self::$loaded) {
241
+ $wps = wp_scripts();
242
+ foreach($wps->registered as $registered) {
243
+ if (stripos($registered->src, 'maps.googleapis.com') !== false && stripos($registered->handle, 'mappress') === false) {
244
+ $registered->src = self::$baseurl . '/forms/dummy.js';
245
+ }
246
+ }
247
+ }
248
  }
249
 
250
+ static function get_api_keys() {
251
+ $results = (object) array('browser' => self::$options->apiKey, 'server' => self::$options->apiKeyServer, 'mapbox' => self::$options->mapbox);
252
+ if (empty($results->browser) && defined('MAPPRESS_APIKEY'))
253
+ $results->browser = MAPPRESS_APIKEY;
254
+ if (empty($results->server) && defined('MAPPRESS_APIKEY_SERVER'))
255
+ $results->server = MAPPRESS_APIKEY_SERVER;
256
+ if (empty($results->mapbox) && defined('MAPPRESS_APIKEY_MAPBOX'))
257
+ $result->mapbox = MAPPRESS_APIKEY_MAPBOX;
258
+ return $results;
259
  }
260
 
261
+ /**
262
+ * Get language using settings/WPML/qTrans
263
+ *
264
+ */
265
+ static function get_language() {
266
+ // WPML
267
+ if (defined('ICL_LANGUAGE_CODE'))
268
+ $lang = ICL_LANGUAGE_CODE;
 
269
 
270
+ // qTranslate
271
+ else if (function_exists('qtrans_getLanguage'))
272
+ $lang = qtrans_getLanguage();
273
 
 
 
274
  else
275
+ $lang = self::$options->language;
 
 
 
 
276
 
277
+ return ($lang) ? $lang : null;
 
 
 
278
  }
279
 
280
  /**
281
+ * Get a mashup - used by shortcode and widget
 
 
282
  *
283
+ * @param mixed $atts
284
  */
285
+ static function get_mashup($atts) {
286
+ global $wp_query;
 
 
 
 
 
 
 
 
 
 
 
287
 
288
+ $mashup = new Mappress_Map($atts);
289
+ $mashup->query = Mappress_Query::parse_query($atts);
 
290
 
291
+ // If parameter test="true", output the query result without using a map
292
+ if (isset($_GET['mp_test']) || (isset($atts['test']) && $atts['test'])) {
293
+ $wpq = new WP_Query($mashup->query);
294
+ return "<pre>" . print_r($wpq, true) . "</pre>";
295
+ }
296
 
297
+ // If using query 'current' then create a static map for current posts
298
+ if (empty($mashup->query))
299
+ $mashup->pois = Mappress_Query::get_pois($wp_query);
300
 
301
+ // If 'hideEmpty' is set, try to suppress the map if there are no POIs
302
+ if ($mashup->hideEmpty) {
303
+ // 'current' query - check found pois
304
+ if (empty($mashup->query) && empty($mashup->pois))
305
+ return "";
306
 
307
+ // Other queries - check for at least 1 result
308
+ if (Mappress_Query::is_empty($mashup->query))
309
+ return "";
310
+ }
311
+ return $mashup->display();
312
+ }
313
 
314
+ static function get_support_links($title = 'MapPress') {
315
+ $html = "<div class='mapp-support'>" . __('Version', 'mappress-google-maps-for-wordpress') . ':' . self::$version;
316
+ $html .= " | <a target='_blank' href='https://mappresspro.com/mappress/mappress-documentation'>" . __('Documentation', 'mappress-google-maps-for-wordpress') . "</a>";
317
+ $html .= " | <a target='_blank' href='https://mappresspro.com/chris-contact'>" . __('Support', 'mappress-google-maps-for-wordpress') . "</a>";
318
+ if (!self::$pro)
319
+ $html .= "<a class='button button-primary' href='https://mappresspro.com/mappress' target='_blank'>" . __('Upgrade to MapPress Pro', 'mappress-google-maps-for-wordpress') . "</a>";
320
+ $html .= "</div>";
321
+ echo $html;
322
+ }
323
 
324
+ static function heartbeat_settings( $settings ) {
325
+ $settings['minimalInterval'] = 600;
326
+ return $settings;
 
327
  }
328
 
329
  /**
330
+ * There are several WP bugs that prevent correct activation in multisitie:
331
+ * http://core.trac.wordpress.org/ticket/14170
332
+ * http://core.trac.wordpress.org/ticket/14718)
333
  *
 
334
  */
335
+ static function init() {
336
+ // Register hooks and create database tables
337
+ Mappress_Map::register();
338
 
339
+ // Register static classes
340
+ if (self::$pro) {
341
+ Mappress_Icons::register();
342
+ Mappress_Meta::register();
343
+ Mappress_Pro_Settings::register();
344
+ Mappress_Query::register();
345
+ Mappress_Template::register();
346
+ Mappress_Widget::register();
347
+ }
348
 
349
+ // Check if upgrade is needed
350
+ $current_version = get_option('mappress_version');
 
 
 
 
 
 
351
 
352
+ // Convert meta key settings
353
+ if ($current_version < '2.45') {
354
+ $old = (object) get_option('mappress_options');
355
+ foreach(array('address1', 'address2', 'address3', 'address4', 'address5', 'address6', 'lat', 'lng', 'iconid', 'title', 'body', 'zoom') as $i => $key) {
356
+ if ($i < 6) {
357
+ $value = (isset($old->metaKeyAddress[$i])) ? $old->metaKeyAddress[$i] : null;
358
+ } else {
359
+ $old_key = 'metaKey' . ucfirst($key);
360
+ $value = (isset($old->$old_key)) ? $old->$old_key : null;
361
+ }
362
+ if ($value)
363
+ Mappress::$options->metaKeys[$key] = $value;
364
+ }
365
+ Mappress::$options->save();
366
  }
367
 
368
+ update_option('mappress_version', self::VERSION);
 
 
 
369
  }
370
 
371
+ // WP returns is_admin() = true during AJAX calls, this one returns false in that case
372
+ static function is_admin() {
373
+ $ajax = defined('DOING_AJAX') && DOING_AJAX;
374
+ return is_admin() && !$ajax;
 
 
 
 
 
 
 
 
 
 
 
375
  }
376
 
377
+ static function is_dev() {
378
+ if (defined('MAPPRESS_DEV') && MAPPRESS_DEV)
379
+ return MAPPRESS_DEV;
380
+ else if (isset($_REQUEST['mp_dev']))
381
+ return ($_REQUEST['mp_dev']) ? $_REQUEST['mp_dev'] : 'dev';
382
+ else
383
+ return false;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
384
  }
385
 
386
+ static function is_footer() {
387
+ $infinite = class_exists( 'Jetpack' ) && Jetpack::is_module_active( 'infinite-scroll' );
388
+ return (is_admin() || self::$options->footer && !$infinite);
389
  }
390
 
391
+ static function is_localhost() {
392
+ return !filter_var($_SERVER['SERVER_ADDR'], FILTER_VALIDATE_IP, FILTER_FLAG_NO_PRIV_RANGE | FILTER_FLAG_NO_RES_RANGE);
393
+ }
 
 
 
 
 
394
 
395
+ static function is_ssl() {
396
+ return (is_ssl() || !filter_var($_SERVER['REMOTE_ADDR'], FILTER_VALIDATE_IP, FILTER_FLAG_NO_PRIV_RANGE | FILTER_FLAG_NO_RES_RANGE));
397
+ }
398
 
399
+ static function l10n() {
400
+ global $post;
 
 
 
401
 
402
+ $l10n = array(
403
+ 'delete_prompt' => __('Are you sure you want to delete?', 'mappress-google-maps-for-wordpress'),
404
+ 'delete_map_prompt' => __('Delete this map?', 'mappress-google-maps-for-wordpress'),
405
+ 'dir_error' => __('Google cannot return directions between those addresses. There is no route between them or the routing information is not available.', 'mappress-google-maps-for-wordpress'),
406
+ 'kml_error' => __('Error reading KML file', 'mappress-google-maps-for-wordpress'),
407
+ 'layer' => __('URL for KML file', 'mappress-google-maps-for-wordpress'),
408
+ 'loading' => "<span class='mapp-spinner'></span>" . __('Loading', 'mappress-google-maps-for-wordpress'),
409
+ 'more' => __('%d of %d shown', 'mappress-google-maps-for-wordpress'),
410
+ 'no_geolocate' => __('Unable to get your location', 'mappress-google-maps-for-wordpress'),
411
+ 'no_results' => __('No results', 'mappress-google-maps-for-wordpress'),
412
+ 'save' => __('Save changes?', 'mappress-google-maps-for-wordpress'),
413
+ 'shape' => __('Shape', 'mappress-google-maps-for-wordpress'),
414
+ 'untitled' => __('Untitled', 'mappress-google-maps-for-wordpress')
415
+ );
416
 
417
+ // Globals
418
+ $l10n['options'] = array(
419
+ 'admin' => current_user_can('administrator'),
420
+ 'ajaxurl' => admin_url('admin-ajax.php'),
421
+ 'debug' => self::$debug,
422
+ 'iconsUrl' => (self::$pro) ? Mappress_Icons::$icons_url : null,
423
+ 'language' => self::get_language(),
424
+ 'mapbox' => self::get_api_keys()->mapbox,
425
+ 'mini' => 400,
426
+ 'postid' => ($post) ? $post->ID : null, // Note: GT => numeric, classic => string
427
+ 'pro' => self::$pro,
428
+ 'siteUrl' => site_url(),
429
+ 'standardIconsUrl' => (self::$pro) ? Mappress_Icons::$standard_icons_url : null
430
+ );
431
 
432
+ // Leaflet layers for mapbox / OSM
433
+ if (self::$options->engine == 'leaflet') {
434
+ // Providers
435
+ $providers = array(
436
+ 'mapbox' => array(
437
+ 'accessToken' => self::get_api_keys()->mapbox,
438
+ 'attribution' => "<a href='https://www.mapbox.com/about/maps/' target='_blank'>&copy; Mapbox &copy; OpenStreetMap</a> <a class='mapbox-improve-map' href='https://www.mapbox.com/map-feedback/' target='_blank'>" . __('Improve this map', 'mappress-google-maps-for-wordpress') . "</a>",
439
+ 'fresh' => true, // Fresh = true in order to provide updated studio styles
440
+ 'url' => "https://api.mapbox.com/styles/v1/{user}/{id}/tiles/256/{z}/{x}/{y}{r}?access_token={accessToken}&fresh={fresh}",
441
+ 'zoomOffset' => 0
442
+ ),
443
+ 'osm' => array(
444
+ 'attribution' => 'Map data (c)<a href="https://openstreetmap.org">OpenStreetMap</a>',
445
+ 'url' => 'https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png'
446
+ )
447
+ );
448
+ $l10n['options']['providers'] = apply_filters('mappress_tile_providers', $providers);
449
 
450
+ // Baselayers
451
+ $baselayers = array();
452
+ if (self::get_api_keys()->mapbox) {
453
+ $baselayers = array(
454
+ array('provider' => 'mapbox', 'user' => 'mapbox', 'id' => 'streets-v10', 'name' => 'streets', 'label' => __('Streets', 'mappress-google-maps-for-wordpress')),
455
+ array('provider' => 'mapbox', 'user' => 'mapbox', 'id' => 'outdoors-v10', 'name' => 'outdoors', 'label' => __('Outdoors', 'mappress-google-maps-for-wordpress')),
456
+ array('provider' => 'mapbox', 'user' => 'mapbox', 'id' => 'light-v9', 'name' => 'light', 'label' => __('Light', 'mappress-google-maps-for-wordpress')),
457
+ array('provider' => 'mapbox', 'user' => 'mapbox', 'id' => 'dark-v9', 'name' => 'dark', 'label' => __('Dark', 'mappress-google-maps-for-wordpress')),
458
+ array('provider' => 'mapbox', 'user' => 'mapbox', 'id' => 'satellite-v9', 'name' => 'satellite', 'label' => __('Satellite', 'mappress-google-maps-for-wordpress')),
459
+ array('provider' => 'mapbox', 'user' => 'mapbox', 'id' => 'satellite-streets-v10', 'name' => 'satellite-streets', 'label' => __('Satellite Streets', 'mappress-google-maps-for-wordpress'))
460
+ );
461
 
462
+ // Mapbox studio styles (remove base url and everything after '.html', remainder is user/id)
463
+ foreach(self::$options->mapboxStyles as $name => $url) {
464
+ $url = strstr($url, '.html', true);
465
+ $url = str_ireplace('https://api.mapbox.com/styles/v1/', '', $url);
466
+ $parts = explode('/', $url);
467
+ if (count($parts) == 2)
468
+ $baselayers[] = array('provider' => 'mapbox', 'user' => $parts[0], 'id' => $parts[1], 'name' => $name, 'label' => $name);
469
+ }
470
+ } else {
471
+ $baselayers = array(
472
+ array('provider' => 'osm', 'id' => 'osm', 'name' => 'osm', 'label' => __('Streets', 'mappress-google-maps-for-wordpress'))
473
+ );
474
+ }
475
 
476
+ // User-defined baselayers
477
+ $l10n['options']['baseLayers'] = apply_filters('mappress_baselayers', $baselayers);
478
+ } else {
479
+ // Google wizard styles
480
+ $l10n['options']['styles'] = array();
481
+ foreach(self::$options->styles as $id => &$style)
482
+ $l10n['options']['styles'][$id] = json_decode($style);
483
  }
484
 
485
+ // Global settings
486
+ $options = array('autoupdate', 'country', 'defaultIcon', 'directions', 'directionsServer', 'engine', 'iconScale', 'iwType', 'mashupBody', 'mashupClick', 'poiZoom', 'radius', 'search', 'size', 'sizes', 'style', 'tiles');
487
+ foreach($options as $option)
488
+ $l10n['options'][$option] = self::$options->$option;
 
 
 
 
 
 
489
 
490
+ return $l10n;
 
491
  }
492
 
493
+ static function load($type = null) {
494
+ if (self::$loaded)
495
+ return;
496
+ else
497
+ self::$loaded = true;
498
 
499
+ $dev = self::is_dev();
500
+ $footer = self::is_footer();
 
 
 
 
 
 
 
501
 
502
+ // Directories
503
+ $min = ($dev) ? "" : ".min";
504
+ $js = ($dev) ? "http://localhost/$dev/wp-content/plugins/mappress-google-maps-for-wordpress/src" : self::$baseurl . '/js';
 
 
 
 
 
 
505
 
506
+ if (self::$options->engine == 'leaflet') {
507
+ wp_enqueue_script("mappress-leaflet", $js . "/leaflet/leaflet.js", null, '1.3.1', $footer);
508
+ wp_enqueue_script("mappress-omnivore", $js . "/leaflet/leaflet-omnivore.min.js", null, '0.3.1', $footer);
509
+ wp_enqueue_script("mappress-algolia-places", $js . "/algolia/placesAutocompleteDataset.min.js", null, '1.7.2', $footer);
510
+ wp_enqueue_script("mappress-algolia-search", $js . "/algolia/algoliasearchLite.min.js", null, '3', $footer);
511
 
512
+ } else {
513
+ $language = self::get_language();
514
+ $language = ($language) ? "&language=$language" : '';
515
+ $apiversion = ($dev) ? 'v=3.exp' : 'v=3';
516
+ $apikey = "&key=" . self::get_api_keys()->browser;
517
+ $libs = ($type == 'editor') ? '&libraries=places,drawing' : '&libraries=places';
518
+ wp_enqueue_script("mappress-gmaps", "https://maps.googleapis.com/maps/api/js?{$apiversion}{$language}{$libs}{$apikey}", null, null, $footer);
 
 
 
 
 
 
 
519
  }
520
 
521
+ if ($type == 'editor')
522
+ wp_enqueue_script('mappress_editor', $js . "/mappress_editor$min.js", array('jquery', 'jquery-ui-position', 'jquery-ui-sortable'), self::$version, $footer);
523
 
524
+ if ($type == 'settings')
525
+ wp_enqueue_script('mappress_settings', $js . "/mappress_settings$min.js", array('postbox', 'jquery', 'jquery-ui-position', 'jquery-ui-sortable'), self::$version, $footer);
 
 
526
 
527
+ // Autocomplete
528
+ wp_enqueue_script('mappress-algolia-autocomplete', $js . "/algolia/autocomplete.jquery.min.js", array('jquery'), self::$version, $footer);
 
529
 
530
+ // mappress.js includes loader, so must come after editor
531
+ wp_enqueue_script('mappress', $js . "/mappress$min.js", array('underscore', 'jquery'), self::$version, $footer);
 
 
532
 
533
+ if ($dev) {
534
+ foreach(array('directions', 'geocoding', 'icons', 'infobox', 'lib', 'places', 'poi', 'widgets', 'loader') as $script)
535
+ wp_enqueue_script($script, $js . "/mappress_{$script}.js", null, self::$version, $footer);
536
  }
537
 
538
+ wp_localize_script('mappress', 'mappl10n', self::l10n());
 
539
 
540
+ // Templates
541
+ if ($type != 'editor')
542
+ Mappress_Template::load($footer);
543
+ }
 
 
 
544
 
545
+ static function plugin_action_links($links, $file) {
546
+ $settings_link = "<a href='" . admin_url("admin.php?page=mappress") . "'>" . __('Settings', 'mappress-google-maps-for-wordpress') . "</a>";
547
+ array_unshift( $links, $settings_link );
548
+ return $links;
 
 
549
  }
550
 
551
+ static function plugins_loaded() {
552
+ load_plugin_textdomain('mappress-google-maps-for-wordpress', false, dirname(self::$basename) . '/languages');
553
+ }
554
+
555
+ static function script($script, $ready = false) {
556
+ $html = "\r\n<script type='text/javascript'>\r\n";
557
+ $html .= ($ready) ? "jQuery(function() { $script });" : $script;
558
+ $html .= "\r\n</script>";
559
+ return $html;
560
+ }
561
+
562
+ static function script_template($template, $id = null) {
563
+ $id = ($id) ? "id='mapp-tmpl-{$id}'" : '';
564
+ $html = "\r\n<script type='text/template' $id>\r\n{$template}\r\n</script>\r\n";
565
+ return $html;
566
  }
567
 
568
  /**
605
  $atts['center'] = ($map && $map->pois) ? $map->pois[0]->point['lat'] . ',' . $map->pois[0]->point['lng'] : null;
606
  }
607
 
608
+ return $atts;
609
+ }
610
+
611
+ /**
612
+ * Switch WPML language during AJAX calls
613
+ */
614
+ static function set_language() {
615
+ global $sitepress;
616
+ if ($sitepress && method_exists($sitepress, 'switch_lang')) {
617
+ $language = self::get_language();
618
+ $sitepress->switch_lang($language);
619
+ }
620
+ }
621
+
622
+ /**
623
+ * Map a shortcode in a post.
624
+ *
625
+ * @param mixed $atts - shortcode attributes
626
+ */
627
+ static function shortcode_map($atts='') {
628
+ global $post;
629
+
630
+ // No feeds
631
+ if (is_feed())
632
+ return;
633
+
634
+ // Try to protect against calls to do_shortcode() in the post editor...
635
+ if (self::is_admin())
636
+ return;
637
+
638
+ $atts = self::scrub_atts($atts);
639
+
640
+ // Determine what to show
641
+ $mapid = (isset($atts['mapid'])) ? $atts['mapid'] : null;
642
+
643
+ if ($mapid) {
644
+ // Show map by mapid
645
+ $map = Mappress_Map::get($mapid);
646
+ } else {
647
+ // Get the first map attached to the post
648
+ $maps = Mappress_Map::get_list($post->ID);
649
+ $map = (isset ($maps[0]) ? $maps[0] : false);
650
+ }
651
+
652
+ if (!$map)
653
+ return;
654
+
655
+ return $map->display($atts);
656
+ }
657
+
658
+ /**
659
+ * Process the mashup shortcode
660
+ *
661
+ */
662
+ static function shortcode_mashup($atts='') {
663
+ // No feeds
664
+ if (is_feed())
665
+ return;
666
+
667
+ // Prevent do_shortcode() in the post editor, but allow for AJAX calls from other plugins (which run as admin)
668
+ if (self::is_admin())
669
+ return;
670
+
671
+ $atts = self::scrub_atts($atts);
672
+ return self::get_mashup($atts);
673
  }
674
 
675
  static function string_to_boolean($data) {
687
  return $data;
688
  }
689
 
690
+ /**
691
+ * Automatic map display.
692
+ * If set, the [mappress] shortcode will be prepended/appended to the post body, once for each map
693
+ * The shortcode is used so it can be filtered - for example WordPress will remove it in excerpts by default.
694
+ *
695
+ * @param mixed $content
696
+ */
697
+ static function the_content($content="") {
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
698
  global $post;
699
+ global $wp_current_filter;
700
 
701
+ $autodisplay = self::$options->autodisplay;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
702
 
703
+ // No auto display
704
+ if (!$autodisplay || $autodisplay == 'none')
705
+ return $content;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
706
 
707
+ // Check if in the loop, to prevent conflicts with JetPack - see http://wordpress.org/support/topic/easy-adsense-lite-and-jetpack
708
+ if (!in_the_loop())
709
+ return $content;
 
 
 
 
 
 
 
 
710
 
711
+ // Don't add the shortcode for feeds or admin screens
712
+ if (is_feed() || self::is_admin())
713
+ return $content;
 
 
 
 
 
 
 
 
 
 
714
 
715
+ // No shortcode if post is password protected
716
+ if (post_password_required())
717
+ return $content;
 
 
 
 
 
718
 
719
+ // If this is an excerpt don't attempt to add the map to it
720
+ if (in_array('get_the_excerpt', $wp_current_filter))
721
+ return $content;
 
722
 
723
+ // Don't auto display if the post already contains a MapPress shortcode
724
+ if (stristr($content, '[mappress') !== false || stristr($content, '[mashup') !== false)
725
+ return $content;
726
 
727
+ // Get maps associated with post
728
+ $mapids = Mappress_Map::get_list($post->ID, 'ids');
729
+ if (empty($mapids))
730
+ return $content;
 
 
 
 
731
 
732
+ // Add the shortcode once for each map
733
+ $shortcodes = "";
734
+ foreach($mapids as $mapid)
735
+ $shortcodes .= '<p>[mappress mapid="' . $mapid . '"]</p>';
736
 
737
+ if ($autodisplay == 'top')
738
+ return $shortcodes . $content;
739
  else
740
+ return $content . $shortcodes;
 
 
741
  }
742
 
743
  /**
744
+ * Scripts & styles for frontend
745
+ * CSS is loaded from: child theme, theme, or plugin directory
746
  */
747
+ static function wp_enqueue_scripts() {
748
+ // Leaflet CSS
749
+ if (self::$options->engine == 'leaflet')
750
+ wp_enqueue_style('mappress-leaflet', self::$baseurl . '/css/leaflet/leaflet.css', null, '1.3.1');
 
 
 
 
 
 
 
 
 
 
 
 
 
 
751
 
752
+ // Mappress CSS from plugin directory
753
+ wp_enqueue_style('mappress', self::$baseurl . '/css/mappress.css', null, self::$version);
 
 
 
 
754
 
755
+ // Mappress CSS from theme directory
756
+ if ( @file_exists( get_stylesheet_directory() . '/mappress.css' ) )
757
+ $file = get_stylesheet_directory_uri() . '/mappress.css';
758
+ elseif ( @file_exists( get_template_directory() . '/mappress.css' ) )
759
+ $file = get_template_directory_uri() . '/mappress.css';
760
 
761
+ if (isset($file))
762
+ wp_enqueue_style('mappress-custom', $file, array('mappress'), self::$version);
 
763
 
764
+ // Load scripts in header
765
+ if (!self::is_footer())
766
+ self::load();
767
  }
768
 
769
+ static function wp_head() {
770
+ echo "\r\n<!-- MapPress Easy Google Maps " . __('Version', 'mappress-google-maps-for-wordpress') . ':' . self::$version . " (http://www.mappresspro.com/mappress) -->\r\n";
771
+ echo "<script type='text/javascript'>mapp = window.mapp || {}; mapp.data = [];</script>\r\n";
 
772
  }
773
+ }
774
 
775
  $mappress = new Mappress();
776
  ?>
mappress_map.php CHANGED
@@ -49,7 +49,6 @@ class Mappress_Map extends Mappress_Obj {
49
  static function register() {
50
  global $wpdb;
51
 
52
- // Ajax
53
  add_action('deleted_post', array(__CLASS__, 'delete_post_map'));
54
 
55
  add_action('wp_ajax_mapp_delete', array(__CLASS__, 'ajax_delete'));
@@ -86,9 +85,9 @@ class Mappress_Map extends Mappress_Obj {
86
  $wpdb->show_errors(false);
87
  }
88
 
89
- static function media_button($editor_id) {
90
  if ($editor_id == 'content') {
91
- echo '<button type="button" class="button" id="mapp-pick-button">';
92
  echo '<span class="wp-media-buttons-icon dashicons dashicons-location"></span> ' . __('MapPress', 'mappress-google-maps-for-wordpress') . '</button>';
93
  }
94
  }
@@ -106,33 +105,29 @@ class Mappress_Map extends Mappress_Obj {
106
 
107
  static function find($args) {
108
  global $wpdb;
109
- $posts_table = $wpdb->prefix . 'mappress_posts';
110
- $args = (object) wp_parse_args($args, array('type' => 'post', 'output' => 'names', 'page' => 1, 'page_size' => 20, 'postid' => null, 'search' => null));
111
-
112
- $where = array();
113
- if ($args->type == 'post')
114
- $where[] = $wpdb->prepare("postid=%d", $args->postid);
115
-
116
- // Note: $wpdb->prepare uses tokens on % like queries
117
- if ($args->type == 'all' && $args->search)
118
- $where[] = $wpdb->prepare("$wpdb->posts.post_title LIKE %s", '%' . $args->search . '%');
119
 
120
- $where = ($where) ? " WHERE " . implode(' AND ', $where) : '';
121
-
122
- //$limit = sprintf(" LIMIT %d, %d", ($args->page - 1) * $args->page_size, $args->page_size);
123
- $limit = '';
124
- $sql = "SELECT SQL_CALC_FOUND_ROWS $posts_table.mapid FROM $posts_table INNER JOIN $wpdb->posts ON ($wpdb->posts.ID = $posts_table.postid) $where $limit";
125
 
 
 
 
 
 
126
  $results = $wpdb->get_results($sql);
127
- $found = $wpdb->get_var('SELECT FOUND_ROWS()');
128
 
129
  $items = array();
130
- foreach($results as $result)
131
- $items[] = self::get($result->mapid, 'list');
 
 
 
 
 
 
 
132
 
133
- $pages = (int) ceil($found / $args->page_size);
134
- $page = (int) min($args->page, $pages);
135
- return (object) array('items' => $items, 'page' => $page, 'pages' => $pages);
136
  }
137
 
138
  static function ajax_find() {
@@ -142,7 +137,7 @@ class Mappress_Map extends Mappress_Obj {
142
  /**
143
  * Get a map. Output is 'raw' or 'object'
144
  */
145
- static function get($mapid, $output = 'object') {
146
  global $wpdb;
147
  $maps_table = $wpdb->prefix . 'mappress_maps';
148
  $posts_table = $wpdb->prefix . 'mappress_posts';
@@ -157,22 +152,7 @@ class Mappress_Map extends Mappress_Obj {
157
  $mapdata = unserialize($result->obj);
158
  $mapdata->postid = $result->postid;
159
  $mapdata->mapid = $result->mapid;
160
-
161
- // Return an object
162
- if ($output == 'object')
163
- return new Mappress_Map($mapdata);
164
-
165
- // Return list item (with post data)
166
- if ($output == 'list') {
167
- $post = get_post($result->postid);
168
- return array(
169
- 'mapid' => $mapdata->mapid,
170
- 'map_title' => $mapdata->title,
171
- 'postid' => $mapdata->postid,
172
- 'post_title' => ($post) ? $post->post_title : null,
173
- 'can_edit' => current_user_can('edit_post', $mapdata->postid)
174
- );
175
- }
176
  }
177
 
178
  static function ajax_get() {
@@ -223,7 +203,6 @@ class Mappress_Map extends Mappress_Obj {
223
  foreach($this->pois as &$poi)
224
  $poi->body = wpautop($poi->body);
225
 
226
-
227
  $map = serialize($this);
228
 
229
  // Update map
@@ -267,8 +246,8 @@ class Mappress_Map extends Mappress_Obj {
267
 
268
  do_action('mappress_map_save', $mapid); // Use for your own developments
269
 
270
- // Re-read updated object and return it in response
271
- Mappress::ajax_response('OK', self::get($mapid, 'list'));
272
  }
273
 
274
  /**
49
  static function register() {
50
  global $wpdb;
51
 
 
52
  add_action('deleted_post', array(__CLASS__, 'delete_post_map'));
53
 
54
  add_action('wp_ajax_mapp_delete', array(__CLASS__, 'ajax_delete'));
85
  $wpdb->show_errors(false);
86
  }
87
 
88
+ static function media_buttons($editor_id) {
89
  if ($editor_id == 'content') {
90
+ echo '<button type="button" class="button mapp-media-button">';
91
  echo '<span class="wp-media-buttons-icon dashicons dashicons-location"></span> ' . __('MapPress', 'mappress-google-maps-for-wordpress') . '</button>';
92
  }
93
  }
105
 
106
  static function find($args) {
107
  global $wpdb;
 
 
 
 
 
 
 
 
 
 
108
 
109
+ $maps_table = $wpdb->prefix . 'mappress_maps';
110
+ $posts_table = $wpdb->prefix . 'mappress_posts';
 
 
 
111
 
112
+ $sql = "SELECT SQL_CALC_FOUND_ROWS $maps_table.mapid, $maps_table.obj, $posts_table.postid, $wpdb->posts.post_title "
113
+ . " FROM $maps_table "
114
+ . " INNER JOIN $posts_table ON ($posts_table.mapid = $maps_table.mapid)"
115
+ . " INNER JOIN $wpdb->posts ON ($wpdb->posts.ID = $posts_table.postid)"
116
+ ;
117
  $results = $wpdb->get_results($sql);
 
118
 
119
  $items = array();
120
+ foreach($results as $result) {
121
+ $mapdata = unserialize($result->obj);
122
+ $items[] = array(
123
+ 'mapid' => $result->mapid,
124
+ 'map_title' => $mapdata->title,
125
+ 'postid' => $result->postid,
126
+ 'post_title' => $result->post_title
127
+ );
128
+ }
129
 
130
+ return $items;
 
 
131
  }
132
 
133
  static function ajax_find() {
137
  /**
138
  * Get a map. Output is 'raw' or 'object'
139
  */
140
+ static function get($mapid) {
141
  global $wpdb;
142
  $maps_table = $wpdb->prefix . 'mappress_maps';
143
  $posts_table = $wpdb->prefix . 'mappress_posts';
152
  $mapdata = unserialize($result->obj);
153
  $mapdata->postid = $result->postid;
154
  $mapdata->mapid = $result->mapid;
155
+ return new Mappress_Map($mapdata);
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
156
  }
157
 
158
  static function ajax_get() {
203
  foreach($this->pois as &$poi)
204
  $poi->body = wpautop($poi->body);
205
 
 
206
  $map = serialize($this);
207
 
208
  // Update map
246
 
247
  do_action('mappress_map_save', $mapid); // Use for your own developments
248
 
249
+ // Return saved mapid
250
+ Mappress::ajax_response('OK', array('mapid' => $mapid));
251
  }
252
 
253
  /**
readme.txt CHANGED
@@ -3,8 +3,8 @@ Contributors: chrisvrichardson
3
  Donate link: https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=4339298
4
  Tags: leaflet, openstreetmap, osm, mapbox, map box, google maps,google,map,maps,easy,poi,mapping,mapper,gps,lat,lon,latitude,longitude,geocoder,geocoding,georss,geo rss,geo,v3,marker,mashup,mash,api,v3,buddypress,mashup,geo,wp-geo,geo mashup,simplemap,simple,wpml
5
  Requires at least: 4.5
6
- Tested up to: 4.9
7
- Stable tag: 2.50.11
8
 
9
  == Description ==
10
  MapPress adds beautiful, interactive Google or Leaflet maps to WordPress.
@@ -86,8 +86,18 @@ Please see the plugin documentation pages:
86
 
87
  == Changelog ==
88
 
89
- = 2.50.11 =
90
- * Fixed: mashup center and zoom not working
 
 
 
 
 
 
 
 
 
 
91
  * Fixed: mashups not displaying on some servers; updated gzip detection
92
  * Changed: internal mashup query and layers control changes
93
 
3
  Donate link: https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=4339298
4
  Tags: leaflet, openstreetmap, osm, mapbox, map box, google maps,google,map,maps,easy,poi,mapping,mapper,gps,lat,lon,latitude,longitude,geocoder,geocoding,georss,geo rss,geo,v3,marker,mashup,mash,api,v3,buddypress,mashup,geo,wp-geo,geo mashup,simplemap,simple,wpml
5
  Requires at least: 4.5
6
+ Tested up to: 5.1
7
+ Stable tag: 2.52.1
8
 
9
  == Description ==
10
  MapPress adds beautiful, interactive Google or Leaflet maps to WordPress.
86
 
87
  == Changelog ==
88
 
89
+ = 2.52.1 =
90
+ * Fixed: ajax error when opening map for edit
91
+
92
+ = 2.52 =
93
+ * Fixed: prevent enter press in map list search from publishing post
94
+ * Changed: updated map editor search/filter function
95
+ * Changed: internal function Mappress::ssl() renamed Mappress::is_ssl() - please update any custom directions.php or search.php to use the new name
96
+
97
+ = 2.51 =
98
+ * Added: mashups with a center but no zoom will perform a radius search
99
+ * Fixed: KML markers showing POI text instead of text from KML file
100
+ * Fixed: mashup initial center and zoom have been improved
101
  * Fixed: mashups not displaying on some servers; updated gzip detection
102
  * Changed: internal mashup query and layers control changes
103
 
templates/map-directions.php CHANGED
@@ -1,6 +1,6 @@
1
  <div class='mapp-directions'>
2
  <span class='mapp-close' data-mapp-action='dir-cancel'></span>
3
- <?php if (Mappress::ssl()) : ?>
4
  <a href='#' class='mapp-myloc' data-mapp-action='dir-myloc'><?php _e('My location', 'mappress-google-maps-for-wordpress'); ?></a>
5
  <?php endif; ?>
6
  <div>
1
  <div class='mapp-directions'>
2
  <span class='mapp-close' data-mapp-action='dir-cancel'></span>
3
+ <?php if (Mappress::is_ssl()) : ?>
4
  <a href='#' class='mapp-myloc' data-mapp-action='dir-myloc'><?php _e('My location', 'mappress-google-maps-for-wordpress'); ?></a>
5
  <?php endif; ?>
6
  <div>
templates/map-search.php CHANGED
@@ -1,6 +1,6 @@
1
  <div class='mapp-search'>
2
  <input class='mapp-places' type='text' placeholder='<?php _e('Search', 'mappress-google-maps-for-wordpress'); ?>'/>
3
- <?php if (Mappress::ssl()) : ?>
4
  <div class='mapp-geolocate' data-mapp-action='geolocate' title='<?php _e('Your Location', 'mappress-google-maps-for-wordpress');?>'></div>
5
  <?php endif; ?>
6
  </div>
1
  <div class='mapp-search'>
2
  <input class='mapp-places' type='text' placeholder='<?php _e('Search', 'mappress-google-maps-for-wordpress'); ?>'/>
3
+ <?php if (Mappress::is_ssl()) : ?>
4
  <div class='mapp-geolocate' data-mapp-action='geolocate' title='<?php _e('Your Location', 'mappress-google-maps-for-wordpress');?>'></div>
5
  <?php endif; ?>
6
  </div>