WP Store Locator - Version 2.0.4

Version Description

Download this release

Release Info

Developer tijmensmit
Plugin Icon 128x128 WP Store Locator
Version 2.0.4
Comparing to
See all releases

Code changes from version 2.0.3 to 2.0.4

admin/class-admin.php CHANGED
@@ -2,8 +2,8 @@
2
  /**
3
  * Admin class
4
  *
5
- * @package WP_Store_locator
6
- * @since 1.0
7
  */
8
 
9
  if ( !defined( 'ABSPATH' ) ) exit;
@@ -13,30 +13,30 @@ if ( !class_exists( 'WPSL_Admin' ) ) {
13
  /**
14
  * Handle the backend of the store locator
15
  *
16
- * @since 1.0
17
  */
18
  class WPSL_Admin {
19
 
20
  /**
21
- * @since 2.0
22
  * @var WPSL_Metaboxes
23
  */
24
  public $metaboxes;
25
 
26
  /**
27
- * @since 2.0
28
  * @var WPSL_Geocode
29
  */
30
  public $geocode;
31
 
32
  /**
33
- * @since 2.0
34
  * @var WPSL_Notices
35
  */
36
  public $notices;
37
 
38
  /**
39
- * @since 2.0
40
  * @var WPSL_Settings
41
  */
42
  public $settings_page;
@@ -63,7 +63,7 @@ if ( !class_exists( 'WPSL_Admin' ) ) {
63
  /**
64
  * Include all the required files.
65
  *
66
- * @since 2.0
67
  * @return void
68
  */
69
  public function includes() {
@@ -77,7 +77,7 @@ if ( !class_exists( 'WPSL_Admin' ) ) {
77
  /**
78
  * Init the classes.
79
  *
80
- * @since 2.0
81
  * @return void
82
  */
83
  public function init() {
@@ -91,7 +91,7 @@ if ( !class_exists( 'WPSL_Admin' ) ) {
91
  * Register a callback function for the settings page
92
  * and check if we need to show the "missing start point" warning.
93
  *
94
- * @since 1.0
95
  * @return void
96
  */
97
  public function admin_init() {
@@ -109,7 +109,7 @@ if ( !class_exists( 'WPSL_Admin' ) ) {
109
  /**
110
  * Display an error message when no start location is defined.
111
  *
112
- * @since 1.2
113
  * @return void
114
  */
115
  public function show_location_warning() {
@@ -124,7 +124,7 @@ if ( !class_exists( 'WPSL_Admin' ) ) {
124
  /**
125
  * Disable the missing start location warning.
126
  *
127
- * @since 1.2
128
  * @return void
129
  */
130
  public function disable_location_warning_ajax() {
@@ -143,7 +143,7 @@ if ( !class_exists( 'WPSL_Admin' ) ) {
143
  /**
144
  * Add the menu pages.
145
  *
146
- * @since 1.0
147
  * @return void
148
  */
149
  public function create_admin_menu() {
@@ -153,7 +153,7 @@ if ( !class_exists( 'WPSL_Admin' ) ) {
153
  /**
154
  * Show the settings page.
155
  *
156
- * @since 1.0
157
  * @return void
158
  */
159
  public function show_settings() {
@@ -165,7 +165,7 @@ if ( !class_exists( 'WPSL_Admin' ) ) {
165
  *
166
  * This is called when a post it saved, deleted, trashed or untrashed.
167
  *
168
- * @since 2.0
169
  * @return void
170
  */
171
  public function maybe_delete_autoload_transient( $post_id ) {
@@ -192,7 +192,7 @@ if ( !class_exists( 'WPSL_Admin' ) ) {
192
  * Otherwise it can happen the user switches to Spanish,
193
  * but ends up seeing the store data in the wrong language.
194
  *
195
- * @since 2.0
196
  * @return void
197
  */
198
  public function delete_autoload_transient() {
@@ -215,7 +215,7 @@ if ( !class_exists( 'WPSL_Admin' ) ) {
215
  *
216
  * This is supported by WP 3.8 or higher
217
  *
218
- * @since 1.0
219
  * @return void
220
  */
221
  private function check_icon_font_usage() {
@@ -276,7 +276,7 @@ if ( !class_exists( 'WPSL_Admin' ) ) {
276
  /**
277
  * Plugin settings that are used in the wpsl-admin.js.
278
  *
279
- * @since 2.0
280
  * @return array $settings_js The settings used in the wpsl-admin.js
281
  */
282
  public function js_settings() {
@@ -296,7 +296,7 @@ if ( !class_exists( 'WPSL_Admin' ) ) {
296
  /**
297
  * Add the required admin script.
298
  *
299
- * @since 1.0
300
  * @return void
301
  */
302
  public function admin_scripts() {
@@ -305,16 +305,16 @@ if ( !class_exists( 'WPSL_Admin' ) ) {
305
 
306
  $min = ( defined( 'SCRIPT_DEBUG' ) && SCRIPT_DEBUG ) ? '' : '.min';
307
 
308
- /* Always load the main js admin file to make sure the "dismiss" link in the location notice works. */
309
  wp_enqueue_script( 'wpsl-admin-js', plugins_url( '/js/wpsl-admin'. $min .'.js', __FILE__ ), array( 'jquery' ), WPSL_VERSION_NUM, true );
310
 
311
  $this->maybe_show_pointer();
312
  $this->check_icon_font_usage();
313
 
314
- /* Only enqueue the rest of the css/js files if we are on a page that belongs to the store locator */
315
  if ( ( get_post_type() == 'wpsl_stores' ) || ( isset( $_GET['post_type'] ) && ( $_GET['post_type'] == 'wpsl_stores' ) ) ) {
316
 
317
- /* Make sure no other Google Map scripts can interfere with the one from the store locator */
318
  $this->deregister_other_gmaps();
319
 
320
  wp_enqueue_style( 'jquery-style', '//ajax.googleapis.com/ajax/libs/jqueryui/1.10.3/themes/smoothness/jquery-ui.css' );
@@ -322,7 +322,7 @@ if ( !class_exists( 'WPSL_Admin' ) ) {
322
 
323
  wp_enqueue_media();
324
  wp_enqueue_script( 'jquery-ui-dialog' );
325
- wp_enqueue_script( 'wpsl-gmap', ( '//maps.google.com/maps/api/js?sensor=false&libraries=places&language=' . $wpsl_settings['api_language'] ), false, '', true ); // we set the language here to make sure the geocode response returns the country name in the correct language
326
  wp_enqueue_script( 'wpsl-queue', plugins_url( '/js/ajax-queue'. $min .'.js', __FILE__ ), array( 'jquery' ), WPSL_VERSION_NUM, true );
327
  wp_enqueue_script( 'wpsl-retina', plugins_url( '/js/retina'. $min .'.js', __FILE__ ), array( 'jquery' ), WPSL_VERSION_NUM, true );
328
 
@@ -334,14 +334,14 @@ if ( !class_exists( 'WPSL_Admin' ) ) {
334
  /**
335
  * Check if we need to show the wpsl pointer.
336
  *
337
- * @since 2.0
338
  * @return void
339
  */
340
  public function maybe_show_pointer() {
341
 
342
  $dismissed_pointers = explode( ',', (string) get_user_meta( get_current_user_id(), 'dismissed_wp_pointers', true ) );
343
 
344
- /* If the user hasn't dismissed the wpsl pointer, enqueue the script and style, and call the action hook. */
345
  if ( !in_array( 'wpsl_signup_pointer', $dismissed_pointers ) ) {
346
  wp_enqueue_style( 'wp-pointer' );
347
  wp_enqueue_script( 'wp-pointer' );
@@ -353,7 +353,7 @@ if ( !class_exists( 'WPSL_Admin' ) ) {
353
  /**
354
  * Add the script for the welcome pointer.
355
  *
356
- * @since 2.0
357
  * @return void
358
  */
359
  public function welcome_pointer_script() {
@@ -381,7 +381,7 @@ if ( !class_exists( 'WPSL_Admin' ) ) {
381
  }
382
  }).pointer( 'open' );
383
 
384
- /* If a user clicked the "subscribe" button trigger the close button for the pointer. */
385
  $( ".wpsl-mc-wrap #mc-embedded-subscribe" ).on( "click", function() {
386
  $( ".wp-pointer .close" ).trigger( "click" );
387
  });
@@ -395,7 +395,7 @@ if ( !class_exists( 'WPSL_Admin' ) ) {
395
  /**
396
  * Add action links to the plugin row.
397
  *
398
- * @since 2.0
399
  * @param array $links The existing action links
400
  * @param string $file The file path of the current plugin
401
  * @return array $links The modified links
@@ -416,7 +416,7 @@ if ( !class_exists( 'WPSL_Admin' ) ) {
416
  /**
417
  * Change the footer text on the settings page.
418
  *
419
- * @since 2.0
420
  * @param string $text The current footer text
421
  * @return string $text Either the original or modified footer text
422
  */
@@ -424,7 +424,7 @@ if ( !class_exists( 'WPSL_Admin' ) ) {
424
 
425
  $current_screen = get_current_screen();
426
 
427
- /* Only modify the footer text if we are on the settings page of the wp store locator. */
428
  if ( isset( $current_screen->id ) && $current_screen->id == 'wpsl_stores_page_wpsl_settings' ) {
429
  $text = sprintf( __( 'If you like this plugin please leave us a %s5 star%s rating.', 'wpsl' ), '<a href="https://wordpress.org/support/view/plugin-reviews/wp-store-locator?filter=5#postform" target="_blank"><strong>', '</strong></a>' );
430
  }
2
  /**
3
  * Admin class
4
  *
5
+ * @author Tijmen Smit
6
+ * @since 1.0.0
7
  */
8
 
9
  if ( !defined( 'ABSPATH' ) ) exit;
13
  /**
14
  * Handle the backend of the store locator
15
  *
16
+ * @since 1.0.0
17
  */
18
  class WPSL_Admin {
19
 
20
  /**
21
+ * @since 2.0.0
22
  * @var WPSL_Metaboxes
23
  */
24
  public $metaboxes;
25
 
26
  /**
27
+ * @since 2.0.0
28
  * @var WPSL_Geocode
29
  */
30
  public $geocode;
31
 
32
  /**
33
+ * @since 2.0.0
34
  * @var WPSL_Notices
35
  */
36
  public $notices;
37
 
38
  /**
39
+ * @since 2.0.0
40
  * @var WPSL_Settings
41
  */
42
  public $settings_page;
63
  /**
64
  * Include all the required files.
65
  *
66
+ * @since 2.0.0
67
  * @return void
68
  */
69
  public function includes() {
77
  /**
78
  * Init the classes.
79
  *
80
+ * @since 2.0.0
81
  * @return void
82
  */
83
  public function init() {
91
  * Register a callback function for the settings page
92
  * and check if we need to show the "missing start point" warning.
93
  *
94
+ * @since 1.0.0
95
  * @return void
96
  */
97
  public function admin_init() {
109
  /**
110
  * Display an error message when no start location is defined.
111
  *
112
+ * @since 1.2.0
113
  * @return void
114
  */
115
  public function show_location_warning() {
124
  /**
125
  * Disable the missing start location warning.
126
  *
127
+ * @since 1.2.0
128
  * @return void
129
  */
130
  public function disable_location_warning_ajax() {
143
  /**
144
  * Add the menu pages.
145
  *
146
+ * @since 1.0.0
147
  * @return void
148
  */
149
  public function create_admin_menu() {
153
  /**
154
  * Show the settings page.
155
  *
156
+ * @since 1.0.0
157
  * @return void
158
  */
159
  public function show_settings() {
165
  *
166
  * This is called when a post it saved, deleted, trashed or untrashed.
167
  *
168
+ * @since 2.0.0
169
  * @return void
170
  */
171
  public function maybe_delete_autoload_transient( $post_id ) {
192
  * Otherwise it can happen the user switches to Spanish,
193
  * but ends up seeing the store data in the wrong language.
194
  *
195
+ * @since 2.0.0
196
  * @return void
197
  */
198
  public function delete_autoload_transient() {
215
  *
216
  * This is supported by WP 3.8 or higher
217
  *
218
+ * @since 1.0.0
219
  * @return void
220
  */
221
  private function check_icon_font_usage() {
276
  /**
277
  * Plugin settings that are used in the wpsl-admin.js.
278
  *
279
+ * @since 2.0.0
280
  * @return array $settings_js The settings used in the wpsl-admin.js
281
  */
282
  public function js_settings() {
296
  /**
297
  * Add the required admin script.
298
  *
299
+ * @since 1.0.0
300
  * @return void
301
  */
302
  public function admin_scripts() {
305
 
306
  $min = ( defined( 'SCRIPT_DEBUG' ) && SCRIPT_DEBUG ) ? '' : '.min';
307
 
308
+ // Always load the main js admin file to make sure the "dismiss" link in the location notice works.
309
  wp_enqueue_script( 'wpsl-admin-js', plugins_url( '/js/wpsl-admin'. $min .'.js', __FILE__ ), array( 'jquery' ), WPSL_VERSION_NUM, true );
310
 
311
  $this->maybe_show_pointer();
312
  $this->check_icon_font_usage();
313
 
314
+ // Only enqueue the rest of the css/js files if we are on a page that belongs to the store locator.
315
  if ( ( get_post_type() == 'wpsl_stores' ) || ( isset( $_GET['post_type'] ) && ( $_GET['post_type'] == 'wpsl_stores' ) ) ) {
316
 
317
+ // Make sure no other Google Map scripts can interfere with the one from the store locator.
318
  $this->deregister_other_gmaps();
319
 
320
  wp_enqueue_style( 'jquery-style', '//ajax.googleapis.com/ajax/libs/jqueryui/1.10.3/themes/smoothness/jquery-ui.css' );
322
 
323
  wp_enqueue_media();
324
  wp_enqueue_script( 'jquery-ui-dialog' );
325
+ wp_enqueue_script( 'wpsl-gmap', ( '//maps.google.com/maps/api/js?libraries=places&language=' . $wpsl_settings['api_language'] ), false, '', true );
326
  wp_enqueue_script( 'wpsl-queue', plugins_url( '/js/ajax-queue'. $min .'.js', __FILE__ ), array( 'jquery' ), WPSL_VERSION_NUM, true );
327
  wp_enqueue_script( 'wpsl-retina', plugins_url( '/js/retina'. $min .'.js', __FILE__ ), array( 'jquery' ), WPSL_VERSION_NUM, true );
328
 
334
  /**
335
  * Check if we need to show the wpsl pointer.
336
  *
337
+ * @since 2.0.0
338
  * @return void
339
  */
340
  public function maybe_show_pointer() {
341
 
342
  $dismissed_pointers = explode( ',', (string) get_user_meta( get_current_user_id(), 'dismissed_wp_pointers', true ) );
343
 
344
+ // If the user hasn't dismissed the wpsl pointer, enqueue the script and style, and call the action hook.
345
  if ( !in_array( 'wpsl_signup_pointer', $dismissed_pointers ) ) {
346
  wp_enqueue_style( 'wp-pointer' );
347
  wp_enqueue_script( 'wp-pointer' );
353
  /**
354
  * Add the script for the welcome pointer.
355
  *
356
+ * @since 2.0.0
357
  * @return void
358
  */
359
  public function welcome_pointer_script() {
381
  }
382
  }).pointer( 'open' );
383
 
384
+ // If a user clicked the "subscribe" button trigger the close button for the pointer.
385
  $( ".wpsl-mc-wrap #mc-embedded-subscribe" ).on( "click", function() {
386
  $( ".wp-pointer .close" ).trigger( "click" );
387
  });
395
  /**
396
  * Add action links to the plugin row.
397
  *
398
+ * @since 2.0.0
399
  * @param array $links The existing action links
400
  * @param string $file The file path of the current plugin
401
  * @return array $links The modified links
416
  /**
417
  * Change the footer text on the settings page.
418
  *
419
+ * @since 2.0.0
420
  * @param string $text The current footer text
421
  * @return string $text Either the original or modified footer text
422
  */
424
 
425
  $current_screen = get_current_screen();
426
 
427
+ // Only modify the footer text if we are on the settings page of the wp store locator.
428
  if ( isset( $current_screen->id ) && $current_screen->id == 'wpsl_stores_page_wpsl_settings' ) {
429
  $text = sprintf( __( 'If you like this plugin please leave us a %s5 star%s rating.', 'wpsl' ), '<a href="https://wordpress.org/support/view/plugin-reviews/wp-store-locator?filter=5#postform" target="_blank"><strong>', '</strong></a>' );
430
  }
admin/class-geocode.php CHANGED
@@ -2,8 +2,8 @@
2
  /**
3
  * Geocode store locations
4
  *
5
- * @package WP_Store_locator
6
- * @since 2.0
7
  */
8
 
9
  if ( !defined( 'ABSPATH' ) ) exit;
@@ -18,7 +18,7 @@ if ( !class_exists( 'WPSL_Geocode' ) ) {
18
  * The latlng value is only present if the user provided it himself, or used the preview
19
  * on the map. Otherwise the latlng will be missing and we need to geocode the supplied address.
20
  *
21
- * @since 2.0
22
  * @param integer $post_id Store post ID
23
  * @param array $store_data The store data
24
  * @return void
@@ -27,10 +27,10 @@ if ( !class_exists( 'WPSL_Geocode' ) ) {
27
 
28
  $location_data = array();
29
 
30
- /* Check if the latlng data is valid */
31
  $latlng = $this->validate_latlng( $store_data['lat'], $store_data['lng'] );
32
 
33
- /* If we don't have a valid latlng value, we geocode the supplied address to get one */
34
  if ( !$latlng ) {
35
  $response = $this->geocode_location( $post_id, $store_data );
36
  $location_data['country_iso'] = $response['country_iso'];
@@ -39,7 +39,7 @@ if ( !class_exists( 'WPSL_Geocode' ) ) {
39
  $location_data['latlng'] = $latlng;
40
  }
41
 
42
- /* Restrict the latlng to a max of 6 decimals */
43
  $location_data['latlng'] = $this->format_latlng( $location_data['latlng'] );
44
 
45
  $location_data['lat'] = $location_data['latlng']['lat'];
@@ -51,7 +51,7 @@ if ( !class_exists( 'WPSL_Geocode' ) ) {
51
  /**
52
  * Geocode the store location.
53
  *
54
- * @since 1.0
55
  * @param integer $post_id Store post ID
56
  * @param array $store_data The submitted store data ( address, city, country etc )
57
  * @return void
@@ -81,7 +81,7 @@ if ( !class_exists( 'WPSL_Geocode' ) ) {
81
  }
82
  }
83
 
84
- /* Handle the geocode code errors messages */
85
  if ( !empty( $msg ) ) {
86
  $this->geocode_failed( $msg, $post_id );
87
  }
@@ -90,7 +90,7 @@ if ( !class_exists( 'WPSL_Geocode' ) ) {
90
  /**
91
  * Make the API call to Google to geocode the address.
92
  *
93
- * @since 1.0
94
  * @param integer $post_id store post ID
95
  * @param array $store_data The store data
96
  * @return void|array $geo_data The geocoded response
@@ -114,7 +114,7 @@ if ( !class_exists( 'WPSL_Geocode' ) ) {
114
  /**
115
  * If there is a problem with the geocoding then we save the notice and change the post status to pending.
116
  *
117
- * @since 2.0
118
  * @param string $msg The geocode error message
119
  * @param integer $post_id Store post ID
120
  * @return void
@@ -130,7 +130,7 @@ if ( !class_exists( 'WPSL_Geocode' ) ) {
130
  /**
131
  * Save the store location data.
132
  *
133
- * @since 2.0
134
  * @param integer $post_id Store post ID
135
  * @param array $location_data The country code and latlng
136
  * @return void
@@ -148,7 +148,7 @@ if ( !class_exists( 'WPSL_Geocode' ) ) {
148
  /**
149
  * Make sure the latlng value has a max of 6 decimals.
150
  *
151
- * @since 2.0
152
  * @param array $latlng The latlng data
153
  * @return array $latlng The formatted latlng
154
  */
@@ -166,7 +166,7 @@ if ( !class_exists( 'WPSL_Geocode' ) ) {
166
  /**
167
  * Filter out the two letter country code from the api respsonse.
168
  *
169
- * @since 1.0
170
  * @param array $response The full API geocode response
171
  * @return string $country_name The country code
172
  */
@@ -174,7 +174,7 @@ if ( !class_exists( 'WPSL_Geocode' ) ) {
174
 
175
  $length = count( $response['results'][0]['address_components'] );
176
 
177
- /* Loop over the address components untill we find the country,political part */
178
  for ( $i = 0; $i < $length; $i++ ) {
179
  $address_component = $response['results'][0]['address_components'][$i]['types'];
180
 
@@ -191,7 +191,7 @@ if ( !class_exists( 'WPSL_Geocode' ) ) {
191
  /**
192
  * Validate the latlng values.
193
  *
194
- * @since 1.0
195
  * @param string $lat The latitude value
196
  * @param string $lng The longitude value
197
  * @return boolean|array $latlng The validated latlng values or false if it fails
2
  /**
3
  * Geocode store locations
4
  *
5
+ * @author Tijmen Smit
6
+ * @since 2.0.0
7
  */
8
 
9
  if ( !defined( 'ABSPATH' ) ) exit;
18
  * The latlng value is only present if the user provided it himself, or used the preview
19
  * on the map. Otherwise the latlng will be missing and we need to geocode the supplied address.
20
  *
21
+ * @since 2.0.0
22
  * @param integer $post_id Store post ID
23
  * @param array $store_data The store data
24
  * @return void
27
 
28
  $location_data = array();
29
 
30
+ // Check if the latlng data is valid.
31
  $latlng = $this->validate_latlng( $store_data['lat'], $store_data['lng'] );
32
 
33
+ // If we don't have a valid latlng value, we geocode the supplied address to get one.
34
  if ( !$latlng ) {
35
  $response = $this->geocode_location( $post_id, $store_data );
36
  $location_data['country_iso'] = $response['country_iso'];
39
  $location_data['latlng'] = $latlng;
40
  }
41
 
42
+ // Restrict the latlng to a max of 6 decimals.
43
  $location_data['latlng'] = $this->format_latlng( $location_data['latlng'] );
44
 
45
  $location_data['lat'] = $location_data['latlng']['lat'];
51
  /**
52
  * Geocode the store location.
53
  *
54
+ * @since 1.0.0
55
  * @param integer $post_id Store post ID
56
  * @param array $store_data The submitted store data ( address, city, country etc )
57
  * @return void
81
  }
82
  }
83
 
84
+ // Handle the geocode code errors messages.
85
  if ( !empty( $msg ) ) {
86
  $this->geocode_failed( $msg, $post_id );
87
  }
90
  /**
91
  * Make the API call to Google to geocode the address.
92
  *
93
+ * @since 1.0.0
94
  * @param integer $post_id store post ID
95
  * @param array $store_data The store data
96
  * @return void|array $geo_data The geocoded response
114
  /**
115
  * If there is a problem with the geocoding then we save the notice and change the post status to pending.
116
  *
117
+ * @since 2.0.0
118
  * @param string $msg The geocode error message
119
  * @param integer $post_id Store post ID
120
  * @return void
130
  /**
131
  * Save the store location data.
132
  *
133
+ * @since 2.0.0
134
  * @param integer $post_id Store post ID
135
  * @param array $location_data The country code and latlng
136
  * @return void
148
  /**
149
  * Make sure the latlng value has a max of 6 decimals.
150
  *
151
+ * @since 2.0.0
152
  * @param array $latlng The latlng data
153
  * @return array $latlng The formatted latlng
154
  */
166
  /**
167
  * Filter out the two letter country code from the api respsonse.
168
  *
169
+ * @since 1.0.0
170
  * @param array $response The full API geocode response
171
  * @return string $country_name The country code
172
  */
174
 
175
  $length = count( $response['results'][0]['address_components'] );
176
 
177
+ // Loop over the address components untill we find the country, political part.
178
  for ( $i = 0; $i < $length; $i++ ) {
179
  $address_component = $response['results'][0]['address_components'][$i]['types'];
180
 
191
  /**
192
  * Validate the latlng values.
193
  *
194
+ * @since 1.0.0
195
  * @param string $lat The latitude value
196
  * @param string $lng The longitude value
197
  * @return boolean|array $latlng The validated latlng values or false if it fails
admin/class-metaboxes.php CHANGED
@@ -2,8 +2,8 @@
2
  /**
3
  * Handle the metaboxes
4
  *
5
- * @package WP_Store_locator
6
- * @since 2.0
7
  */
8
 
9
  if ( !defined( 'ABSPATH' ) ) exit;
@@ -13,7 +13,7 @@ if ( !class_exists( 'WPSL_Metaboxes' ) ) {
13
  /**
14
  * Handle the meta boxes
15
  *
16
- * @since 2.0
17
  */
18
  class WPSL_Metaboxes {
19
 
@@ -26,7 +26,7 @@ if ( !class_exists( 'WPSL_Metaboxes' ) ) {
26
  /**
27
  * Add the meta boxes.
28
  *
29
- * @since 2.0
30
  * @return void
31
  */
32
  public function add_meta_boxes() {
@@ -37,7 +37,7 @@ if ( !class_exists( 'WPSL_Metaboxes' ) ) {
37
  /**
38
  * The store locator meta box fields.
39
  *
40
- * @since 2.0
41
  * @return array $meta_fields The meta box fields used for the store details
42
  */
43
  public function meta_box_fields() {
@@ -105,7 +105,7 @@ if ( !class_exists( 'WPSL_Metaboxes' ) ) {
105
  /**
106
  * Create the store locator metabox input fields.
107
  *
108
- * @since 2.0
109
  * @return void
110
  */
111
  function create_meta_fields() {
@@ -122,7 +122,7 @@ if ( !class_exists( 'WPSL_Metaboxes' ) ) {
122
  <div class="wpsl-store-meta <?php if ( floatval( $wp_version ) < 3.8 ) { echo 'wpsl-pre-38'; } // Fix CSS issue with < 3.8 versions ?>">
123
  <?php
124
 
125
- /* Create the tab navigation for the meta boxes */
126
  foreach ( $this->meta_box_fields() as $tab => $meta_fields ) {
127
  $active_class = ( $i == 0 ) ? ' wpsl-active' : '';
128
 
@@ -137,7 +137,7 @@ if ( !class_exists( 'WPSL_Metaboxes' ) ) {
137
 
138
  echo '<ul id="wpsl-meta-nav">' . $tab_items . '</ul>';
139
 
140
- /* Create the input fields for the meta boxes */
141
  foreach ( $this->meta_box_fields() as $tab => $meta_fields ) {
142
  $active_class = ( $j == 0 ) ? ' wpsl-active' : '';
143
 
@@ -148,14 +148,14 @@ if ( !class_exists( 'WPSL_Metaboxes' ) ) {
148
 
149
  foreach ( $meta_fields as $field_key => $field_data ) {
150
 
151
- /* If no specific field type is set, we set it to text */
152
  $field_type = ( empty( $field_data['type'] ) ) ? 'text' : $field_data['type'];
153
  $args = array(
154
  'key' => $field_key,
155
  'data' => $field_data
156
  );
157
 
158
- /* Check for a class method, otherwise enable a plugin hook */
159
  if ( method_exists( $this, $field_type . '_input' ) ) {
160
  call_user_func( array( $this, $field_type . '_input' ), $args );
161
  } else {
@@ -176,7 +176,7 @@ if ( !class_exists( 'WPSL_Metaboxes' ) ) {
176
  /**
177
  * Create the li elements that are used in the tabs above the store meta fields.
178
  *
179
- * @since 2.0
180
  * @param string $tab The name of the tab
181
  * @param string $active_class Either the class name or empty
182
  * @return string $nav_item The HTML for the nav list
@@ -192,7 +192,7 @@ if ( !class_exists( 'WPSL_Metaboxes' ) ) {
192
  /**
193
  * Set the CSS class that tells JS it's an required input field.
194
  *
195
- * @since 2.0
196
  * @param array $args The css classes
197
  * @param string $single Whether to return just the class name, or also include the class=""
198
  * @return string|void $response The required CSS class or nothing
@@ -213,7 +213,7 @@ if ( !class_exists( 'WPSL_Metaboxes' ) ) {
213
  /**
214
  * Check if the current field is required.
215
  *
216
- * @since 2.0
217
  * @param array $args The CSS classes
218
  * @return string|void The HTML for the required element or nothing
219
  */
@@ -229,7 +229,7 @@ if ( !class_exists( 'WPSL_Metaboxes' ) ) {
229
  /**
230
  * Get the prefilled field data.
231
  *
232
- * @since 2.0
233
  * @param string $field_name The name of the field to get the data for
234
  * @return string $field_data The field data
235
  */
@@ -239,7 +239,7 @@ if ( !class_exists( 'WPSL_Metaboxes' ) ) {
239
 
240
  $field_data = '';
241
 
242
- /* Prefilled values are only used for new pages, not when a user edits an existing page. */
243
  if ( $pagenow == 'post.php' && isset( $_GET['action'] ) && $_GET['action'] == 'edit' ) {
244
  return;
245
  }
@@ -259,7 +259,7 @@ if ( !class_exists( 'WPSL_Metaboxes' ) ) {
259
  /**
260
  * Create a text input field.
261
  *
262
- * @since 2.0
263
  * @param array $args The input name and label
264
  * @return void
265
  */
@@ -267,7 +267,7 @@ if ( !class_exists( 'WPSL_Metaboxes' ) ) {
267
 
268
  $saved_value = $this->get_store_meta( $args['key'] );
269
 
270
- /* If there is no existing meta value, check if a prefilled value exists for the input field */
271
  if ( !$saved_value ) {
272
  $saved_value = $this->get_prefilled_field_data( $args['key'] );
273
  }
@@ -284,7 +284,7 @@ if ( !class_exists( 'WPSL_Metaboxes' ) ) {
284
  /**
285
  * Create a hidden input field.
286
  *
287
- * @since 2.0
288
  * @param array $args The name of the meta value
289
  * @return void
290
  */
@@ -301,7 +301,7 @@ if ( !class_exists( 'WPSL_Metaboxes' ) ) {
301
  /**
302
  * Create a textarea field.
303
  *
304
- * @since 2.0
305
  * @param array $args The textarea name and label
306
  * @return void
307
  */
@@ -313,7 +313,7 @@ if ( !class_exists( 'WPSL_Metaboxes' ) ) {
313
  $saved_value = '';
314
  }
315
 
316
- /* If there is no existing meta value, check if a prefilled value exists for the textarea. */
317
  if ( !$saved_value ) {
318
  $prefilled_value = $this->get_prefilled_field_data( $args['key'] );
319
 
@@ -334,7 +334,7 @@ if ( !class_exists( 'WPSL_Metaboxes' ) ) {
334
  /**
335
  * Create a checkbox field.
336
  *
337
- * @since 2.0
338
  * @param array $args The checkbox name and label
339
  * @return void
340
  */
@@ -354,13 +354,13 @@ if ( !class_exists( 'WPSL_Metaboxes' ) ) {
354
  /**
355
  * Create a dropdown field.
356
  *
357
- * @since 2.0
358
  * @param array $args The dropdown name and label
359
  * @return void
360
  */
361
  public function dropdown_input( $args ) {
362
 
363
- /* The hour dropdown requires a different structure with multiple dropdowns */
364
  if ( $args['key'] == 'hours' ) {
365
  $this->opening_hours();
366
  } else {
@@ -384,7 +384,7 @@ if ( !class_exists( 'WPSL_Metaboxes' ) ) {
384
  /**
385
  * Create the openings hours table with the hours as dropdowns.
386
  *
387
- * @since 2.0
388
  * @param string $location The location were the opening hours are shown.
389
  * @return void
390
  */
@@ -401,14 +401,14 @@ if ( !class_exists( 'WPSL_Metaboxes' ) ) {
401
  $opening_hours = get_post_meta( $post->ID, 'wpsl_hours' );
402
  }
403
 
404
- /* If we don't have any opening hours, we use the defaults */
405
  if ( !isset( $opening_hours[0]['monday'] ) ) {
406
  $opening_hours = $wpsl_settings['editor_hours']['dropdown'];
407
  } else {
408
  $opening_hours = $opening_hours[0];
409
  }
410
 
411
- /* Find out whether we have a 12 or 24hr format */
412
  $hour_format = $this->find_hour_format( $opening_hours );
413
 
414
  if ( $hour_format == 24 ) {
@@ -417,7 +417,8 @@ if ( !class_exists( 'WPSL_Metaboxes' ) ) {
417
  $hour_class = 'wpsl-twelve-format';
418
  }
419
 
420
- /* Only include the 12 / 24hr dropdown switch if we are on store page,
 
421
  * otherwise just show the table with the opening hour dropdowns.
422
  */
423
  if ( $location == 'store_page' ) {
@@ -444,7 +445,7 @@ if ( !class_exists( 'WPSL_Metaboxes' ) ) {
444
  <td id="wpsl-hours-<?php echo esc_attr( $index ); ?>" class="wpsl-opening-hours" data-day="<?php echo esc_attr( $index ); ?>">
445
  <?php
446
  if ( $hour_count > 0 ) {
447
- /* Loop over the opening periods */
448
  while ( $i < $hour_count ) {
449
  if ( isset( $opening_hours[$index][$i] ) ) {
450
  $hours = explode( ',', $opening_hours[$index][$i] );
@@ -452,7 +453,7 @@ if ( !class_exists( 'WPSL_Metaboxes' ) ) {
452
  $hours = '';
453
  }
454
 
455
- /* If we don't have two parts or one of them is empty, then we set the store to closed */
456
  if ( ( count( $hours ) == 2 ) && ( !empty( $hours[0] ) ) && ( !empty( $hours[1] ) ) ) {
457
  $args = array(
458
  'day' => $index,
@@ -495,7 +496,7 @@ if ( !class_exists( 'WPSL_Metaboxes' ) ) {
495
  /**
496
  * Show the 'store closed' message.
497
  *
498
- * @since 2.0
499
  * @param string $name The name for the input field
500
  * @param string $day The day the store is closed
501
  * @return void
@@ -510,7 +511,7 @@ if ( !class_exists( 'WPSL_Metaboxes' ) ) {
510
  * We use this to determine the selected value for the dropdown in the store editor.
511
  * So a user can decide to change the opening hour format.
512
  *
513
- * @since 2.0
514
  * @param array $opening_hours The opening hours for the whole week
515
  * @return string The hour format used in the opening hours
516
  */
@@ -534,7 +535,7 @@ if ( !class_exists( 'WPSL_Metaboxes' ) ) {
534
  /**
535
  * Create the opening hours dropdown.
536
  *
537
- * @since 2.0
538
  * @param array $args The data to create the opening hours dropdown
539
  * @param string $period Either set to open or close
540
  * @return string $select The html for the dropdown
@@ -558,7 +559,7 @@ if ( !class_exists( 'WPSL_Metaboxes' ) ) {
558
 
559
  for ( $i = $open; $i <= $close; $i += $hour_interval ) {
560
 
561
- /* If the selected time matches the current time then we set it to active */
562
  if ( $selected_time == date( $format, $i ) ) {
563
  $selected = 'selected="selected"';
564
  } else {
@@ -576,7 +577,7 @@ if ( !class_exists( 'WPSL_Metaboxes' ) ) {
576
  /**
577
  * Get the store post meta.
578
  *
579
- * @since 2.0
580
  * @param string $key The name of the meta value
581
  * @return mixed|void $store_meta Meta value for the store field
582
  */
@@ -596,7 +597,7 @@ if ( !class_exists( 'WPSL_Metaboxes' ) ) {
596
  /**
597
  * Save the custom post data.
598
  *
599
- * @since 2.0
600
  * @param integer $post_id store post ID
601
  * @return void
602
  */
@@ -621,16 +622,16 @@ if ( !class_exists( 'WPSL_Metaboxes' ) ) {
621
 
622
  $this->store_data = $_POST['wpsl'];
623
 
624
- /* Check if the hours are set through dropdowns */
625
  if ( isset( $this->store_data['hours'] ) && is_array( $this->store_data['hours'] ) && ( !empty( $this->store_data['hours'] ) ) ) {
626
  $this->store_data['hours'] = $this->format_opening_hours();
627
  }
628
 
629
- /* Loop over the meta fields defined in the meta_box_fields and update the post meta data */
630
  foreach ( $this->meta_box_fields() as $tab => $meta_fields ) {
631
  foreach ( $meta_fields as $field_key => $field_data ) {
632
 
633
- /* Either update or delete the post meta */
634
  if ( isset( $this->store_data[ $field_key ] ) && ( $this->store_data[ $field_key ] != "" ) ) {
635
  if ( isset( $field_data['type'] ) && $field_data['type'] ) {
636
  $field_type = $field_data['type'];
@@ -668,9 +669,9 @@ if ( !class_exists( 'WPSL_Metaboxes' ) ) {
668
  }
669
  }
670
 
671
- /* If all the required fields contain data. Then check if we need to
672
- * geocode the address or if we already have valid latlng data,
673
- * and if we should delete the autoload transient.
674
  *
675
  * Otherwise show a notice for 'missing data' and set the post status to pending.
676
  */
@@ -686,14 +687,14 @@ if ( !class_exists( 'WPSL_Metaboxes' ) ) {
686
  /**
687
  * Loop through the opening hours and structure the data in a new array.
688
  *
689
- * @since 2.0
690
  * @return array $opening_hours The formatted opening hours
691
  */
692
  public function format_opening_hours() {
693
 
694
  $week_days = wpsl_get_weekdays();
695
 
696
- /* Use the opening hours from the editor page or the add/edit store page */
697
  if ( isset( $_POST['wpsl_editor']['dropdown'] ) ) {
698
  $store_hours = $_POST['wpsl_editor']['dropdown'];
699
  } else if ( isset( $this->store_data['hours'] ) ) {
@@ -721,7 +722,7 @@ if ( !class_exists( 'WPSL_Metaboxes' ) ) {
721
  /*
722
  * Validate the 12 or 24 hr time format.
723
  *
724
- * @since 2.0
725
  * @param string $hour The opening hour
726
  * @return boolean true if the $hour format is valid
727
  */
@@ -729,7 +730,8 @@ if ( !class_exists( 'WPSL_Metaboxes' ) ) {
729
 
730
  global $wpsl_settings;
731
 
732
- /* On the add/edit store we can always use the $wpsl_settings value.
 
733
  * But if validate_hour is called from the settings page then we
734
  * should use the $_POST value to make sure we have the correct value.
735
  */
@@ -753,7 +755,7 @@ if ( !class_exists( 'WPSL_Metaboxes' ) ) {
753
  /**
754
  * Set the post status to pending instead of publish.
755
  *
756
- * @since 2.0
757
  * @param integer $post_id store post ID
758
  * @return void
759
  */
@@ -772,7 +774,7 @@ if ( !class_exists( 'WPSL_Metaboxes' ) ) {
772
  * If one or more of the required fields are empty, we show a custom msg.
773
  * So no need for the normal post update messages arg.
774
  *
775
- * @since 2.0
776
  * @param string $location The destination url
777
  * @return void
778
  */
@@ -783,7 +785,7 @@ if ( !class_exists( 'WPSL_Metaboxes' ) ) {
783
  /**
784
  * Make sure all the required post meta fields contain data.
785
  *
786
- * @since 2.0
787
  * @param integer $post_id store post ID
788
  * @return boolean
789
  */
@@ -806,7 +808,7 @@ if ( !class_exists( 'WPSL_Metaboxes' ) ) {
806
  /**
807
  * The html for the map preview in the sidebar.
808
  *
809
- * @since 2.0
810
  * @return void
811
  */
812
  public function map_preview() {
@@ -823,7 +825,7 @@ if ( !class_exists( 'WPSL_Metaboxes' ) ) {
823
  /**
824
  * Store update messages.
825
  *
826
- * @since 2.0
827
  * @param array $messages Existing post update messages.
828
  * @return array $messages Amended post update messages with new CPT update messages.
829
  */
2
  /**
3
  * Handle the metaboxes
4
  *
5
+ * @author Tijmen Smit
6
+ * @since 2.0.0
7
  */
8
 
9
  if ( !defined( 'ABSPATH' ) ) exit;
13
  /**
14
  * Handle the meta boxes
15
  *
16
+ * @since 2.0.0
17
  */
18
  class WPSL_Metaboxes {
19
 
26
  /**
27
  * Add the meta boxes.
28
  *
29
+ * @since 2.0.0
30
  * @return void
31
  */
32
  public function add_meta_boxes() {
37
  /**
38
  * The store locator meta box fields.
39
  *
40
+ * @since 2.0.0
41
  * @return array $meta_fields The meta box fields used for the store details
42
  */
43
  public function meta_box_fields() {
105
  /**
106
  * Create the store locator metabox input fields.
107
  *
108
+ * @since 2.0.0
109
  * @return void
110
  */
111
  function create_meta_fields() {
122
  <div class="wpsl-store-meta <?php if ( floatval( $wp_version ) < 3.8 ) { echo 'wpsl-pre-38'; } // Fix CSS issue with < 3.8 versions ?>">
123
  <?php
124
 
125
+ // Create the tab navigation for the meta boxes.
126
  foreach ( $this->meta_box_fields() as $tab => $meta_fields ) {
127
  $active_class = ( $i == 0 ) ? ' wpsl-active' : '';
128
 
137
 
138
  echo '<ul id="wpsl-meta-nav">' . $tab_items . '</ul>';
139
 
140
+ // Create the input fields for the meta boxes.
141
  foreach ( $this->meta_box_fields() as $tab => $meta_fields ) {
142
  $active_class = ( $j == 0 ) ? ' wpsl-active' : '';
143
 
148
 
149
  foreach ( $meta_fields as $field_key => $field_data ) {
150
 
151
+ // If no specific field type is set, we set it to text.
152
  $field_type = ( empty( $field_data['type'] ) ) ? 'text' : $field_data['type'];
153
  $args = array(
154
  'key' => $field_key,
155
  'data' => $field_data
156
  );
157
 
158
+ // Check for a class method, otherwise enable a plugin hook.
159
  if ( method_exists( $this, $field_type . '_input' ) ) {
160
  call_user_func( array( $this, $field_type . '_input' ), $args );
161
  } else {
176
  /**
177
  * Create the li elements that are used in the tabs above the store meta fields.
178
  *
179
+ * @since 2.0.0
180
  * @param string $tab The name of the tab
181
  * @param string $active_class Either the class name or empty
182
  * @return string $nav_item The HTML for the nav list
192
  /**
193
  * Set the CSS class that tells JS it's an required input field.
194
  *
195
+ * @since 2.0.0
196
  * @param array $args The css classes
197
  * @param string $single Whether to return just the class name, or also include the class=""
198
  * @return string|void $response The required CSS class or nothing
213
  /**
214
  * Check if the current field is required.
215
  *
216
+ * @since 2.0.0
217
  * @param array $args The CSS classes
218
  * @return string|void The HTML for the required element or nothing
219
  */
229
  /**
230
  * Get the prefilled field data.
231
  *
232
+ * @since 2.0.0
233
  * @param string $field_name The name of the field to get the data for
234
  * @return string $field_data The field data
235
  */
239
 
240
  $field_data = '';
241
 
242
+ // Prefilled values are only used for new pages, not when a user edits an existing page.
243
  if ( $pagenow == 'post.php' && isset( $_GET['action'] ) && $_GET['action'] == 'edit' ) {
244
  return;
245
  }
259
  /**
260
  * Create a text input field.
261
  *
262
+ * @since 2.0.0
263
  * @param array $args The input name and label
264
  * @return void
265
  */
267
 
268
  $saved_value = $this->get_store_meta( $args['key'] );
269
 
270
+ // If there is no existing meta value, check if a prefilled value exists for the input field.
271
  if ( !$saved_value ) {
272
  $saved_value = $this->get_prefilled_field_data( $args['key'] );
273
  }
284
  /**
285
  * Create a hidden input field.
286
  *
287
+ * @since 2.0.0
288
  * @param array $args The name of the meta value
289
  * @return void
290
  */
301
  /**
302
  * Create a textarea field.
303
  *
304
+ * @since 2.0.0
305
  * @param array $args The textarea name and label
306
  * @return void
307
  */
313
  $saved_value = '';
314
  }
315
 
316
+ // If there is no existing meta value, check if a prefilled value exists for the textarea.
317
  if ( !$saved_value ) {
318
  $prefilled_value = $this->get_prefilled_field_data( $args['key'] );
319
 
334
  /**
335
  * Create a checkbox field.
336
  *
337
+ * @since 2.0.0
338
  * @param array $args The checkbox name and label
339
  * @return void
340
  */
354
  /**
355
  * Create a dropdown field.
356
  *
357
+ * @since 2.0.0
358
  * @param array $args The dropdown name and label
359
  * @return void
360
  */
361
  public function dropdown_input( $args ) {
362
 
363
+ // The hour dropdown requires a different structure with multiple dropdowns.
364
  if ( $args['key'] == 'hours' ) {
365
  $this->opening_hours();
366
  } else {
384
  /**
385
  * Create the openings hours table with the hours as dropdowns.
386
  *
387
+ * @since 2.0.0
388
  * @param string $location The location were the opening hours are shown.
389
  * @return void
390
  */
401
  $opening_hours = get_post_meta( $post->ID, 'wpsl_hours' );
402
  }
403
 
404
+ // If we don't have any opening hours, we use the defaults.
405
  if ( !isset( $opening_hours[0]['monday'] ) ) {
406
  $opening_hours = $wpsl_settings['editor_hours']['dropdown'];
407
  } else {
408
  $opening_hours = $opening_hours[0];
409
  }
410
 
411
+ // Find out whether we have a 12 or 24hr format.
412
  $hour_format = $this->find_hour_format( $opening_hours );
413
 
414
  if ( $hour_format == 24 ) {
417
  $hour_class = 'wpsl-twelve-format';
418
  }
419
 
420
+ /*
421
+ * Only include the 12 / 24hr dropdown switch if we are on store page,
422
  * otherwise just show the table with the opening hour dropdowns.
423
  */
424
  if ( $location == 'store_page' ) {
445
  <td id="wpsl-hours-<?php echo esc_attr( $index ); ?>" class="wpsl-opening-hours" data-day="<?php echo esc_attr( $index ); ?>">
446
  <?php
447
  if ( $hour_count > 0 ) {
448
+ // Loop over the opening periods.
449
  while ( $i < $hour_count ) {
450
  if ( isset( $opening_hours[$index][$i] ) ) {
451
  $hours = explode( ',', $opening_hours[$index][$i] );
453
  $hours = '';
454
  }
455
 
456
+ // If we don't have two parts or one of them is empty, then we set the store to closed.
457
  if ( ( count( $hours ) == 2 ) && ( !empty( $hours[0] ) ) && ( !empty( $hours[1] ) ) ) {
458
  $args = array(
459
  'day' => $index,
496
  /**
497
  * Show the 'store closed' message.
498
  *
499
+ * @since 2.0.0
500
  * @param string $name The name for the input field
501
  * @param string $day The day the store is closed
502
  * @return void
511
  * We use this to determine the selected value for the dropdown in the store editor.
512
  * So a user can decide to change the opening hour format.
513
  *
514
+ * @since 2.0.0
515
  * @param array $opening_hours The opening hours for the whole week
516
  * @return string The hour format used in the opening hours
517
  */
535
  /**
536
  * Create the opening hours dropdown.
537
  *
538
+ * @since 2.0.0
539
  * @param array $args The data to create the opening hours dropdown
540
  * @param string $period Either set to open or close
541
  * @return string $select The html for the dropdown
559
 
560
  for ( $i = $open; $i <= $close; $i += $hour_interval ) {
561
 
562
+ // If the selected time matches the current time then we set it to active.
563
  if ( $selected_time == date( $format, $i ) ) {
564
  $selected = 'selected="selected"';
565
  } else {
577
  /**
578
  * Get the store post meta.
579
  *
580
+ * @since 2.0.0
581
  * @param string $key The name of the meta value
582
  * @return mixed|void $store_meta Meta value for the store field
583
  */
597
  /**
598
  * Save the custom post data.
599
  *
600
+ * @since 2.0.0
601
  * @param integer $post_id store post ID
602
  * @return void
603
  */
622
 
623
  $this->store_data = $_POST['wpsl'];
624
 
625
+ // Check if the hours are set through dropdowns.
626
  if ( isset( $this->store_data['hours'] ) && is_array( $this->store_data['hours'] ) && ( !empty( $this->store_data['hours'] ) ) ) {
627
  $this->store_data['hours'] = $this->format_opening_hours();
628
  }
629
 
630
+ // Loop over the meta fields defined in the meta_box_fields and update the post meta data.
631
  foreach ( $this->meta_box_fields() as $tab => $meta_fields ) {
632
  foreach ( $meta_fields as $field_key => $field_data ) {
633
 
634
+ // Either update or delete the post meta.
635
  if ( isset( $this->store_data[ $field_key ] ) && ( $this->store_data[ $field_key ] != "" ) ) {
636
  if ( isset( $field_data['type'] ) && $field_data['type'] ) {
637
  $field_type = $field_data['type'];
669
  }
670
  }
671
 
672
+ /*
673
+ * If all the required fields contain data, then check if we need to
674
+ * geocode the address and if we should delete the autoload transient.
675
  *
676
  * Otherwise show a notice for 'missing data' and set the post status to pending.
677
  */
687
  /**
688
  * Loop through the opening hours and structure the data in a new array.
689
  *
690
+ * @since 2.0.0
691
  * @return array $opening_hours The formatted opening hours
692
  */
693
  public function format_opening_hours() {
694
 
695
  $week_days = wpsl_get_weekdays();
696
 
697
+ // Use the opening hours from the editor page or the add/edit store page.
698
  if ( isset( $_POST['wpsl_editor']['dropdown'] ) ) {
699
  $store_hours = $_POST['wpsl_editor']['dropdown'];
700
  } else if ( isset( $this->store_data['hours'] ) ) {
722
  /*
723
  * Validate the 12 or 24 hr time format.
724
  *
725
+ * @since 2.0.0
726
  * @param string $hour The opening hour
727
  * @return boolean true if the $hour format is valid
728
  */
730
 
731
  global $wpsl_settings;
732
 
733
+ /*
734
+ * On the add/edit store we can always use the $wpsl_settings value.
735
  * But if validate_hour is called from the settings page then we
736
  * should use the $_POST value to make sure we have the correct value.
737
  */
755
  /**
756
  * Set the post status to pending instead of publish.
757
  *
758
+ * @since 2.0.0
759
  * @param integer $post_id store post ID
760
  * @return void
761
  */
774
  * If one or more of the required fields are empty, we show a custom msg.
775
  * So no need for the normal post update messages arg.
776
  *
777
+ * @since 2.0.0
778
  * @param string $location The destination url
779
  * @return void
780
  */
785
  /**
786
  * Make sure all the required post meta fields contain data.
787
  *
788
+ * @since 2.0.0
789
  * @param integer $post_id store post ID
790
  * @return boolean
791
  */
808
  /**
809
  * The html for the map preview in the sidebar.
810
  *
811
+ * @since 2.0.0
812
  * @return void
813
  */
814
  public function map_preview() {
825
  /**
826
  * Store update messages.
827
  *
828
+ * @since 2.0.0
829
  * @param array $messages Existing post update messages.
830
  * @return array $messages Amended post update messages with new CPT update messages.
831
  */
admin/class-notices.php CHANGED
@@ -2,8 +2,8 @@
2
  /**
3
  * Admin Notices
4
  *
5
- * @package WP_Store_locator
6
- * @since 2.0
7
  */
8
 
9
  if ( !defined( 'ABSPATH' ) ) exit;
@@ -11,15 +11,15 @@ if ( !defined( 'ABSPATH' ) ) exit;
11
  if ( !class_exists( 'WPSL_Notices' ) ) {
12
 
13
  /**
14
- * Handle the meta boxes
15
  *
16
- * @since 2.0
17
  */
18
  class WPSL_Notices {
19
 
20
  /**
21
- * Holds the notices
22
- * @since 2.0
23
  * @var array
24
  */
25
  private $notices = array();
@@ -32,9 +32,9 @@ if ( !class_exists( 'WPSL_Notices' ) ) {
32
  }
33
 
34
  /**
35
- * Show the notice
36
  *
37
- * @since 2.0
38
  * @return void
39
  */
40
  public function show() {
@@ -62,16 +62,16 @@ if ( !class_exists( 'WPSL_Notices' ) ) {
62
 
63
  echo '<div class="' . esc_attr( $class ) . '"><p>' . wp_kses( $this->notices['message'], $allowed_html ) . '</p></div>';
64
 
65
- /* Empty the notices */
66
  $this->notices = array();
67
  update_option( 'wpsl_notices', $this->notices );
68
  }
69
  }
70
 
71
  /**
72
- * Save the notice
73
  *
74
- * @since 2.0
75
  * @param string $type The type of notice, either 'update' or 'error'
76
  * @param string $message The user message
77
  * @return void
2
  /**
3
  * Admin Notices
4
  *
5
+ * @author Tijmen Smit
6
+ * @since 2.0.0
7
  */
8
 
9
  if ( !defined( 'ABSPATH' ) ) exit;
11
  if ( !class_exists( 'WPSL_Notices' ) ) {
12
 
13
  /**
14
+ * Handle the meta boxes.
15
  *
16
+ * @since 2.0.0
17
  */
18
  class WPSL_Notices {
19
 
20
  /**
21
+ * Holds the notices.
22
+ * @since 2.0.0
23
  * @var array
24
  */
25
  private $notices = array();
32
  }
33
 
34
  /**
35
+ * Show the notice.
36
  *
37
+ * @since 2.0.0
38
  * @return void
39
  */
40
  public function show() {
62
 
63
  echo '<div class="' . esc_attr( $class ) . '"><p>' . wp_kses( $this->notices['message'], $allowed_html ) . '</p></div>';
64
 
65
+ // Empty the notices.
66
  $this->notices = array();
67
  update_option( 'wpsl_notices', $this->notices );
68
  }
69
  }
70
 
71
  /**
72
+ * Save the notice.
73
  *
74
+ * @since 2.0.0
75
  * @param string $type The type of notice, either 'update' or 'error'
76
  * @param string $message The user message
77
  * @return void
admin/class-settings.php CHANGED
@@ -2,8 +2,8 @@
2
  /**
3
  * Handle the plugin settings
4
  *
5
- * @package WP_Store_locator
6
- * @since 2.0
7
  */
8
 
9
  if ( !defined( 'ABSPATH' ) ) exit;
@@ -25,7 +25,7 @@ if ( !class_exists( 'WPSL_Settings' ) ) {
25
  *
26
  * User can do this manually from the 'Tools' section on the settings page.
27
  *
28
- * @since 2.0
29
  * @return void
30
  */
31
  public function manually_clear_transient() {
@@ -38,7 +38,8 @@ if ( !class_exists( 'WPSL_Settings' ) ) {
38
  $msg = __( 'WP Store Locator Transients Cleared', 'wpsl' );
39
  $wpsl_admin->notices->save( 'update', $msg );
40
 
41
- /* Make sure the &action=clear_wpsl_transients param is removed from the url.
 
42
  *
43
  * Otherwise if the user later clicks the 'Save Changes' button,
44
  * and the &action=clear_wpsl_transients param is still there it
@@ -52,7 +53,7 @@ if ( !class_exists( 'WPSL_Settings' ) ) {
52
  /**
53
  * Register the settings.
54
  *
55
- * @since 2.0
56
  * @return void
57
  */
58
  public function register_settings() {
@@ -62,7 +63,7 @@ if ( !class_exists( 'WPSL_Settings' ) ) {
62
  /**
63
  * Sanitize the submitted plugin settings.
64
  *
65
- * @since 1.0
66
  * @return array $output The setting values
67
  */
68
  public function sanitize_settings() {
@@ -101,14 +102,14 @@ if ( !class_exists( 'WPSL_Settings' ) ) {
101
  $output['api_language'] = wp_filter_nohtml_kses( $_POST['wpsl_api']['language'] );
102
  $output['api_region'] = wp_filter_nohtml_kses( $_POST['wpsl_api']['region'] );
103
 
104
- /* Do we need to show the dropdown filters? */
105
  $output['results_dropdown'] = isset( $_POST['wpsl_search']['results_dropdown'] ) ? 1 : 0;
106
  $output['radius_dropdown'] = isset( $_POST['wpsl_search']['radius_dropdown'] ) ? 1 : 0;
107
  $output['category_dropdown'] = isset( $_POST['wpsl_search']['category_dropdown'] ) ? 1 : 0;
108
 
109
  $output['distance_unit'] = ( $_POST['wpsl_search']['distance_unit'] == 'km' ) ? 'km' : 'mi';
110
 
111
- /* Check for a valid max results value, otherwise we use the default */
112
  if ( !empty( $_POST['wpsl_search']['max_results'] ) ) {
113
  $output['max_results'] = sanitize_text_field( $_POST['wpsl_search']['max_results'] );
114
  } else {
@@ -116,7 +117,7 @@ if ( !class_exists( 'WPSL_Settings' ) ) {
116
  $output['max_results'] = wpsl_get_default_setting( 'max_results' );
117
  }
118
 
119
- /* See if a search radius value exist, otherwise we use the default */
120
  if ( !empty( $_POST['wpsl_search']['radius'] ) ) {
121
  $output['search_radius'] = sanitize_text_field( $_POST['wpsl_search']['radius'] );
122
  } else {
@@ -124,11 +125,11 @@ if ( !class_exists( 'WPSL_Settings' ) ) {
124
  $output['search_radius'] = wpsl_get_default_setting( 'search_radius' );
125
  }
126
 
127
- /* Check if we have a valid zoom level, it has to be between 1 or 12. If not set it to the default of 3 */
128
  $output['zoom_level'] = wpsl_valid_zoom_level( $_POST['wpsl_map']['zoom_level'] );
129
  $output['zoom_name'] = sanitize_text_field( $_POST['wpsl_map']['zoom_name'] );
130
 
131
- /* Check for a valid max auto zoom level */
132
  $max_zoom_levels = wpsl_get_max_zoom_levels();
133
 
134
  if ( in_array( absint( $_POST['wpsl_map']['max_auto_zoom'] ), $max_zoom_levels ) ) {
@@ -137,7 +138,7 @@ if ( !class_exists( 'WPSL_Settings' ) ) {
137
  $output['auto_zoom_level'] = wpsl_get_default_setting( 'auto_zoom_level' );
138
  }
139
 
140
- /* If no location name is set to zoom to we also empty the latlng values from the hidden input field */
141
  if ( empty( $output['zoom_name'] ) ) {
142
  $this->settings_error( 'start_point' );
143
  $output['zoom_latlng'] = '';
@@ -145,12 +146,12 @@ if ( !class_exists( 'WPSL_Settings' ) ) {
145
  $output['zoom_latlng'] = sanitize_text_field( $_POST['wpsl_map']['zoom_latlng'] );
146
  }
147
 
148
- /* Check if we have a valid map type */
149
  $output['map_type'] = wpsl_valid_map_type( $_POST['wpsl_map']['type'] );
150
  $output['auto_locate'] = isset( $_POST['wpsl_map']['auto_locate'] ) ? 1 : 0;
151
  $output['autoload'] = isset( $_POST['wpsl_map']['autoload'] ) ? 1 : 0;
152
 
153
- /* Make sure the auto load limit is either empty or an int */
154
  if ( empty( $_POST['wpsl_map']['autoload_limit'] ) ) {
155
  $output['autoload_limit'] = '';
156
  } else {
@@ -164,7 +165,7 @@ if ( !class_exists( 'WPSL_Settings' ) ) {
164
 
165
  $output['map_style'] = json_encode( strip_tags( trim( $_POST['wpsl_map']['map_style'] ) ) );
166
 
167
- /* Make sure we have a valid template ID */
168
  if ( isset( $_POST['wpsl_ux']['template_id'] ) && ( $_POST['wpsl_ux']['template_id'] ) ) {
169
  $output['template_id'] = sanitize_text_field( $_POST['wpsl_ux']['template_id'] );
170
  } else {
@@ -173,21 +174,22 @@ if ( !class_exists( 'WPSL_Settings' ) ) {
173
 
174
  $output['marker_clusters'] = isset( $_POST['wpsl_map']['marker_clusters'] ) ? 1 : 0;
175
 
176
- /* Check for a valid cluster zoom value */
177
  if ( in_array( $_POST['wpsl_map']['cluster_zoom'], $this->get_default_cluster_option( 'cluster_zoom' ) ) ) {
178
  $output['cluster_zoom'] = $_POST['wpsl_map']['cluster_zoom'];
179
  } else {
180
  $output['cluster_zoom'] = wpsl_get_default_setting( 'cluster_zoom' );
181
  }
182
 
183
- /* Check for a valid cluster size value */
184
  if ( in_array( $_POST['wpsl_map']['cluster_size'], $this->get_default_cluster_option( 'cluster_size' ) ) ) {
185
  $output['cluster_size'] = $_POST['wpsl_map']['cluster_size'];
186
  } else {
187
  $output['cluster_size'] = wpsl_get_default_setting( 'cluster_size' );
188
  }
189
 
190
- /* Make sure all the ux related fields that should contain an int, actually are an int.
 
191
  * Otherwise we use the default value.
192
  */
193
  foreach ( $ux_absints as $ux_key ) {
@@ -198,19 +200,19 @@ if ( !class_exists( 'WPSL_Settings' ) ) {
198
  }
199
  }
200
 
201
- /* Check if the ux checkboxes are checked */
202
  foreach ( $ux_checkboxes as $ux_key ) {
203
  $output[$ux_key] = isset( $_POST['wpsl_ux'][$ux_key] ) ? 1 : 0;
204
  }
205
 
206
- /* Check if we have a valid marker effect */
207
  if ( in_array( $_POST['wpsl_ux']['marker_effect'], $marker_effects ) ) {
208
  $output['marker_effect'] = $_POST['wpsl_ux']['marker_effect'];
209
  } else {
210
  $output['marker_effect'] = wpsl_get_default_setting( 'marker_effect' );
211
  }
212
 
213
- /* Check if we have a valid address format */
214
  if ( array_key_exists( $_POST['wpsl_ux']['address_format'], wpsl_get_address_formats() ) ) {
215
  $output['address_format'] = $_POST['wpsl_ux']['address_format'];
216
  } else {
@@ -233,7 +235,7 @@ if ( !class_exists( 'WPSL_Settings' ) ) {
233
 
234
  $output['editor_hour_format'] = ( $_POST['wpsl_editor']['hour_format'] == 12 ) ? 12 : 24;
235
 
236
- /* The default opening hours */
237
  if ( isset( $_POST['wpsl_editor']['textarea'] ) ) {
238
  $output['editor_hours']['textarea'] = wp_kses_post( trim( stripslashes( $_POST['wpsl_editor']['textarea'] ) ) );
239
  }
@@ -241,7 +243,7 @@ if ( !class_exists( 'WPSL_Settings' ) ) {
241
  $output['editor_hours']['dropdown'] = $wpsl_admin->metaboxes->format_opening_hours();
242
  array_walk_recursive( $output['editor_hours']['dropdown'], 'wpsl_sanitize_multi_array' );
243
 
244
- /* Permalink and taxonomy slug */
245
  $output['permalinks'] = isset( $_POST['wpsl_permalinks']['active'] ) ? 1 : 0;
246
 
247
  if ( !empty( $_POST['wpsl_permalinks']['slug'] ) ) {
@@ -258,7 +260,7 @@ if ( !class_exists( 'WPSL_Settings' ) ) {
258
 
259
  $required_labels = wpsl_labels();
260
 
261
- /* Sanitize the labels */
262
  foreach ( $required_labels as $label ) {
263
  $output[$label.'_label'] = sanitize_text_field( $_POST['wpsl_label'][$label] );
264
  }
@@ -266,10 +268,10 @@ if ( !class_exists( 'WPSL_Settings' ) ) {
266
  $output['show_credits'] = isset( $_POST['wpsl_credits'] ) ? 1 : 0;
267
  $output['debug'] = isset( $_POST['wpsl_tools']['debug'] ) ? 1 : 0;
268
 
269
- /* Check if we need to flush the permalinks */
270
  $this->set_flush_rewrite_option( $output );
271
 
272
- /* Check if there is a reason to delete the autoload transient */
273
  if ( $wpsl_settings['autoload'] ) {
274
  $this->set_delete_transient_option( $output );
275
  }
@@ -281,7 +283,7 @@ if ( !class_exists( 'WPSL_Settings' ) ) {
281
  * Check if we need set the option that will be used to determine
282
  * if we need to flush the permalinks once the setting page reloads.
283
  *
284
- * @since 2.0
285
  * @param array $new_settings The submitted plugin settings
286
  * @return void
287
  */
@@ -298,7 +300,7 @@ if ( !class_exists( 'WPSL_Settings' ) ) {
298
  * Check if we need set the option that is used to determine
299
  * if we need to delete the autoload transient once the settings page reloads.
300
  *
301
- * @since 2.0
302
  * @param array $new_settings The submitted plugin settings
303
  * @return void
304
  */
@@ -306,7 +308,7 @@ if ( !class_exists( 'WPSL_Settings' ) ) {
306
 
307
  global $wpsl_settings;
308
 
309
- /* The options we need to check for changes */
310
  $options = array(
311
  'zoom_name',
312
  'debug',
@@ -329,7 +331,7 @@ if ( !class_exists( 'WPSL_Settings' ) ) {
329
  /**
330
  * Check if the permalinks settings changed.
331
  *
332
- * @since 2.0
333
  * @return void
334
  */
335
  public function maybe_flush_rewrite_and_transient() {
@@ -358,7 +360,7 @@ if ( !class_exists( 'WPSL_Settings' ) ) {
358
  /**
359
  * Handle the different validation errors for the plugin settings.
360
  *
361
- * @since 1.0
362
  * @param string $error_type Contains the type of validation error that occured
363
  * @return void
364
  */
@@ -382,7 +384,7 @@ if ( !class_exists( 'WPSL_Settings' ) ) {
382
  /**
383
  * Options for the language and region list.
384
  *
385
- * @since 1.0
386
  * @param string $list The request list type
387
  * @return string|void $option_list The html for the selected list, or nothing if the $list contains invalud values
388
  */
@@ -662,14 +664,14 @@ if ( !class_exists( 'WPSL_Settings' ) ) {
662
  );
663
  }
664
 
665
- /* Make sure we have an array with a value */
666
  if ( !empty( $api_option_list ) && ( is_array( $api_option_list ) ) ) {
667
  $option_list = '';
668
  $i = 0;
669
 
670
  foreach ( $api_option_list as $api_option_key => $api_option_value ) {
671
 
672
- /* If no option value exist, set the first one as selected */
673
  if ( ( $i == 0 ) && ( empty( $wpsl_settings['api_'.$list] ) ) ) {
674
  $selected = 'selected="selected"';
675
  } else {
@@ -687,7 +689,7 @@ if ( !class_exists( 'WPSL_Settings' ) ) {
687
  /**
688
  * Create the dropdown to select the zoom level.
689
  *
690
- * @since 1.0
691
  * @return string $dropdown The html for the zoom level list
692
  */
693
  public function show_zoom_levels() {
@@ -728,7 +730,7 @@ if ( !class_exists( 'WPSL_Settings' ) ) {
728
  * and one were a marker can be set for the store. We also check if the marker img is identical
729
  * to the name in the option field. If so we set it to checked.
730
  *
731
- * @since 1.0
732
  * @param string $marker_img The filename of the marker
733
  * @param string $location Either contains "start" or "store"
734
  * @return string $marker_list A list of all the available markers
@@ -833,7 +835,7 @@ if ( !class_exists( 'WPSL_Settings' ) ) {
833
  /**
834
  * Show the options of the start and store markers.
835
  *
836
- * @since 1.0
837
  * @return string $marker_list The complete list of available and selected markers
838
  */
839
  public function show_marker_options() {
@@ -869,7 +871,7 @@ if ( !class_exists( 'WPSL_Settings' ) ) {
869
  /**
870
  * Load the markers that can be used on the map.
871
  *
872
- * @since 1.0
873
  * @return array $marker_images A list of all the available markers
874
  */
875
  public function get_available_markers() {
@@ -919,7 +921,7 @@ if ( !class_exists( 'WPSL_Settings' ) ) {
919
  /**
920
  * Create dropdown lists.
921
  *
922
- * @since 2.0
923
  * @param string $type The type of dropdown
924
  * @return string $dropdown The html output for the dropdown
925
  */
@@ -997,7 +999,7 @@ if ( !class_exists( 'WPSL_Settings' ) ) {
997
  /**
998
  * Create a dropdown for the 12/24 opening hours format.
999
  *
1000
- * @since 2.0
1001
  * @param string $hour_format The hour format that should be set to selected
1002
  * @return string $dropdown The html for the dropdown
1003
  */
2
  /**
3
  * Handle the plugin settings
4
  *
5
+ * @author Tijmen Smit
6
+ * @since 2.0.0
7
  */
8
 
9
  if ( !defined( 'ABSPATH' ) ) exit;
25
  *
26
  * User can do this manually from the 'Tools' section on the settings page.
27
  *
28
+ * @since 2.0.0
29
  * @return void
30
  */
31
  public function manually_clear_transient() {
38
  $msg = __( 'WP Store Locator Transients Cleared', 'wpsl' );
39
  $wpsl_admin->notices->save( 'update', $msg );
40
 
41
+ /*
42
+ * Make sure the &action=clear_wpsl_transients param is removed from the url.
43
  *
44
  * Otherwise if the user later clicks the 'Save Changes' button,
45
  * and the &action=clear_wpsl_transients param is still there it
53
  /**
54
  * Register the settings.
55
  *
56
+ * @since 2.0.0
57
  * @return void
58
  */
59
  public function register_settings() {
63
  /**
64
  * Sanitize the submitted plugin settings.
65
  *
66
+ * @since 1.0.0
67
  * @return array $output The setting values
68
  */
69
  public function sanitize_settings() {
102
  $output['api_language'] = wp_filter_nohtml_kses( $_POST['wpsl_api']['language'] );
103
  $output['api_region'] = wp_filter_nohtml_kses( $_POST['wpsl_api']['region'] );
104
 
105
+ // Do we need to show the dropdown filters?
106
  $output['results_dropdown'] = isset( $_POST['wpsl_search']['results_dropdown'] ) ? 1 : 0;
107
  $output['radius_dropdown'] = isset( $_POST['wpsl_search']['radius_dropdown'] ) ? 1 : 0;
108
  $output['category_dropdown'] = isset( $_POST['wpsl_search']['category_dropdown'] ) ? 1 : 0;
109
 
110
  $output['distance_unit'] = ( $_POST['wpsl_search']['distance_unit'] == 'km' ) ? 'km' : 'mi';
111
 
112
+ // Check for a valid max results value, otherwise we use the default.
113
  if ( !empty( $_POST['wpsl_search']['max_results'] ) ) {
114
  $output['max_results'] = sanitize_text_field( $_POST['wpsl_search']['max_results'] );
115
  } else {
117
  $output['max_results'] = wpsl_get_default_setting( 'max_results' );
118
  }
119
 
120
+ // See if a search radius value exist, otherwise we use the default.
121
  if ( !empty( $_POST['wpsl_search']['radius'] ) ) {
122
  $output['search_radius'] = sanitize_text_field( $_POST['wpsl_search']['radius'] );
123
  } else {
125
  $output['search_radius'] = wpsl_get_default_setting( 'search_radius' );
126
  }
127
 
128
+ // Check if we have a valid zoom level, it has to be between 1 or 12. If not set it to the default of 3.
129
  $output['zoom_level'] = wpsl_valid_zoom_level( $_POST['wpsl_map']['zoom_level'] );
130
  $output['zoom_name'] = sanitize_text_field( $_POST['wpsl_map']['zoom_name'] );
131
 
132
+ // Check for a valid max auto zoom level.
133
  $max_zoom_levels = wpsl_get_max_zoom_levels();
134
 
135
  if ( in_array( absint( $_POST['wpsl_map']['max_auto_zoom'] ), $max_zoom_levels ) ) {
138
  $output['auto_zoom_level'] = wpsl_get_default_setting( 'auto_zoom_level' );
139
  }
140
 
141
+ // If no location name is set to zoom to we also empty the latlng values from the hidden input field.
142
  if ( empty( $output['zoom_name'] ) ) {
143
  $this->settings_error( 'start_point' );
144
  $output['zoom_latlng'] = '';
146
  $output['zoom_latlng'] = sanitize_text_field( $_POST['wpsl_map']['zoom_latlng'] );
147
  }
148
 
149
+ // Check if we have a valid map type.
150
  $output['map_type'] = wpsl_valid_map_type( $_POST['wpsl_map']['type'] );
151
  $output['auto_locate'] = isset( $_POST['wpsl_map']['auto_locate'] ) ? 1 : 0;
152
  $output['autoload'] = isset( $_POST['wpsl_map']['autoload'] ) ? 1 : 0;
153
 
154
+ // Make sure the auto load limit is either empty or an int.
155
  if ( empty( $_POST['wpsl_map']['autoload_limit'] ) ) {
156
  $output['autoload_limit'] = '';
157
  } else {
165
 
166
  $output['map_style'] = json_encode( strip_tags( trim( $_POST['wpsl_map']['map_style'] ) ) );
167
 
168
+ // Make sure we have a valid template ID.
169
  if ( isset( $_POST['wpsl_ux']['template_id'] ) && ( $_POST['wpsl_ux']['template_id'] ) ) {
170
  $output['template_id'] = sanitize_text_field( $_POST['wpsl_ux']['template_id'] );
171
  } else {
174
 
175
  $output['marker_clusters'] = isset( $_POST['wpsl_map']['marker_clusters'] ) ? 1 : 0;
176
 
177
+ // Check for a valid cluster zoom value.
178
  if ( in_array( $_POST['wpsl_map']['cluster_zoom'], $this->get_default_cluster_option( 'cluster_zoom' ) ) ) {
179
  $output['cluster_zoom'] = $_POST['wpsl_map']['cluster_zoom'];
180
  } else {
181
  $output['cluster_zoom'] = wpsl_get_default_setting( 'cluster_zoom' );
182
  }
183
 
184
+ // Check for a valid cluster size value.
185
  if ( in_array( $_POST['wpsl_map']['cluster_size'], $this->get_default_cluster_option( 'cluster_size' ) ) ) {
186
  $output['cluster_size'] = $_POST['wpsl_map']['cluster_size'];
187
  } else {
188
  $output['cluster_size'] = wpsl_get_default_setting( 'cluster_size' );
189
  }
190
 
191
+ /*
192
+ * Make sure all the ux related fields that should contain an int, actually are an int.
193
  * Otherwise we use the default value.
194
  */
195
  foreach ( $ux_absints as $ux_key ) {
200
  }
201
  }
202
 
203
+ // Check if the ux checkboxes are checked.
204
  foreach ( $ux_checkboxes as $ux_key ) {
205
  $output[$ux_key] = isset( $_POST['wpsl_ux'][$ux_key] ) ? 1 : 0;
206
  }
207
 
208
+ // Check if we have a valid marker effect.
209
  if ( in_array( $_POST['wpsl_ux']['marker_effect'], $marker_effects ) ) {
210
  $output['marker_effect'] = $_POST['wpsl_ux']['marker_effect'];
211
  } else {
212
  $output['marker_effect'] = wpsl_get_default_setting( 'marker_effect' );
213
  }
214
 
215
+ // Check if we have a valid address format.
216
  if ( array_key_exists( $_POST['wpsl_ux']['address_format'], wpsl_get_address_formats() ) ) {
217
  $output['address_format'] = $_POST['wpsl_ux']['address_format'];
218
  } else {
235
 
236
  $output['editor_hour_format'] = ( $_POST['wpsl_editor']['hour_format'] == 12 ) ? 12 : 24;
237
 
238
+ // The default opening hours.
239
  if ( isset( $_POST['wpsl_editor']['textarea'] ) ) {
240
  $output['editor_hours']['textarea'] = wp_kses_post( trim( stripslashes( $_POST['wpsl_editor']['textarea'] ) ) );
241
  }
243
  $output['editor_hours']['dropdown'] = $wpsl_admin->metaboxes->format_opening_hours();
244
  array_walk_recursive( $output['editor_hours']['dropdown'], 'wpsl_sanitize_multi_array' );
245
 
246
+ // Permalink and taxonomy slug.
247
  $output['permalinks'] = isset( $_POST['wpsl_permalinks']['active'] ) ? 1 : 0;
248
 
249
  if ( !empty( $_POST['wpsl_permalinks']['slug'] ) ) {
260
 
261
  $required_labels = wpsl_labels();
262
 
263
+ // Sanitize the labels.
264
  foreach ( $required_labels as $label ) {
265
  $output[$label.'_label'] = sanitize_text_field( $_POST['wpsl_label'][$label] );
266
  }
268
  $output['show_credits'] = isset( $_POST['wpsl_credits'] ) ? 1 : 0;
269
  $output['debug'] = isset( $_POST['wpsl_tools']['debug'] ) ? 1 : 0;
270
 
271
+ // Check if we need to flush the permalinks.
272
  $this->set_flush_rewrite_option( $output );
273
 
274
+ // Check if there is a reason to delete the autoload transient.
275
  if ( $wpsl_settings['autoload'] ) {
276
  $this->set_delete_transient_option( $output );
277
  }
283
  * Check if we need set the option that will be used to determine
284
  * if we need to flush the permalinks once the setting page reloads.
285
  *
286
+ * @since 2.0.0
287
  * @param array $new_settings The submitted plugin settings
288
  * @return void
289
  */
300
  * Check if we need set the option that is used to determine
301
  * if we need to delete the autoload transient once the settings page reloads.
302
  *
303
+ * @since 2.0.0
304
  * @param array $new_settings The submitted plugin settings
305
  * @return void
306
  */
308
 
309
  global $wpsl_settings;
310
 
311
+ // The options we need to check for changes.
312
  $options = array(
313
  'zoom_name',
314
  'debug',
331
  /**
332
  * Check if the permalinks settings changed.
333
  *
334
+ * @since 2.0.0
335
  * @return void
336
  */
337
  public function maybe_flush_rewrite_and_transient() {
360
  /**
361
  * Handle the different validation errors for the plugin settings.
362
  *
363
+ * @since 1.0.0
364
  * @param string $error_type Contains the type of validation error that occured
365
  * @return void
366
  */
384
  /**
385
  * Options for the language and region list.
386
  *
387
+ * @since 1.0.0
388
  * @param string $list The request list type
389
  * @return string|void $option_list The html for the selected list, or nothing if the $list contains invalud values
390
  */
664
  );
665
  }
666
 
667
+ // Make sure we have an array with a value.
668
  if ( !empty( $api_option_list ) && ( is_array( $api_option_list ) ) ) {
669
  $option_list = '';
670
  $i = 0;
671
 
672
  foreach ( $api_option_list as $api_option_key => $api_option_value ) {
673
 
674
+ // If no option value exist, set the first one as selected.
675
  if ( ( $i == 0 ) && ( empty( $wpsl_settings['api_'.$list] ) ) ) {
676
  $selected = 'selected="selected"';
677
  } else {
689
  /**
690
  * Create the dropdown to select the zoom level.
691
  *
692
+ * @since 1.0.0
693
  * @return string $dropdown The html for the zoom level list
694
  */
695
  public function show_zoom_levels() {
730
  * and one were a marker can be set for the store. We also check if the marker img is identical
731
  * to the name in the option field. If so we set it to checked.
732
  *
733
+ * @since 1.0.0
734
  * @param string $marker_img The filename of the marker
735
  * @param string $location Either contains "start" or "store"
736
  * @return string $marker_list A list of all the available markers
835
  /**
836
  * Show the options of the start and store markers.
837
  *
838
+ * @since 1.0.0
839
  * @return string $marker_list The complete list of available and selected markers
840
  */
841
  public function show_marker_options() {
871
  /**
872
  * Load the markers that can be used on the map.
873
  *
874
+ * @since 1.0.0
875
  * @return array $marker_images A list of all the available markers
876
  */
877
  public function get_available_markers() {
921
  /**
922
  * Create dropdown lists.
923
  *
924
+ * @since 2.0.0
925
  * @param string $type The type of dropdown
926
  * @return string $dropdown The html output for the dropdown
927
  */
999
  /**
1000
  * Create a dropdown for the 12/24 opening hours format.
1001
  *
1002
+ * @since 2.0.0
1003
  * @param string $hour_format The hour format that should be set to selected
1004
  * @return string $dropdown The html for the dropdown
1005
  */
admin/css/style.min.css CHANGED
@@ -1 +1 @@
1
- #wpsl-wrap.wpsl-add-stores p,.wpsl-marker-list,.wpsl-store-meta p{overflow:hidden}.wpsl-info:before,[class*=" wpsl-icon-"]:before,[class^=wpsl-icon-]:before{font-family:fontello;font-style:normal;speak:none;font-variant:normal;text-transform:none;line-height:1em}@font-face{font-family:fontello;src:url(../font/fontello.eot?54620740);src:url(../font/fontello.eot?54620740#iefix) format('embedded-opentype'),url(../font/fontello.woff?54620740) format('woff'),url(../font/fontello.ttf?54620740) format('truetype'),url(../font/fontello.svg?54620740#fontello) format('svg');font-weight:400;font-style:normal}#wpsl-store-overview .widefat td,#wpsl-wrap .widefat td{padding:12px 7px}#wpsl-wrap.wpsl-settings h2{margin-bottom:15px}#wpsl-wrap .submit{padding:0!important;margin-bottom:-10px!important}#wpsl-store-overview .column-action a{float:left;margin-right:5px}#wpsl-store-overview p.search-box{margin:0 0 1em}.column-action{width:130px}#wpsl-delete-confirmation,.wpsl-hide{display:none}.wpsl-preloader{float:right;margin:4px 0 0 4px}#wpsl-mainnav{border-bottom:1px solid #CCC;float:left;margin-bottom:15px;padding-left:7px;width:99.4%}#wpsl-mainnav li a{display:block;padding:9px 12px;text-decoration:none}#wpsl-mainnav li{float:left;margin:0}#wpsl-wrap label,#wpsl-wrap.wpsl-add-stores label{width:85px;margin-top:6px}#wpsl-wrap.wpsl-add-stores label{float:left}#wpsl-wrap.wpsl-add-stores .wpsl-radioboxes label{float:none;margin-right:10px}#wpsl-wrap textarea{width:489px;resize:none}#wpsl-wrap textarea,.wpsl-tab #wpsl-hours{height:185px}#wpsl-wrap .wpsl-style-input textarea{width:509px;resize:none;margin-bottom:12px;height:165px}#wpsl-style-preview{float:left;margin-bottom:12px}.wpsl-style-preview-error{float:left;margin:6px 0 0 10px;color:#b91111}.wpsl-curve{float:left;border-radius:3px}.wpsl-store-meta .wpsl-error{border:1px solid #c01313}#wpsl-lookup-location{margin-bottom:7px}#wpsl-wrap input[type=email],#wpsl-wrap input[type=text],#wpsl-wrap input[type=url]{width:340px}#wpsl-wrap.wpsl-settings input[type=text].textinput{width:255px}.wpsl-add-store{float:left;width:100%;clear:both}#wpsl-wrap .metabox-holder{float:left;margin-right:20px}#wpsl-wrap .metabox-holder.wpsl-wide{width:100%;padding-top:0}#wpsl-wrap .wpsl-edit-header{margin-bottom:12px}#wpsl-wrap.wpsl-settings .metabox-holder{width:100%}#wpsl-wrap.wpsl-settings .metabox-holder h3:hover{cursor:auto}#wpsl-meta-nav li:hover,#wpsl-store-hours .dashicons:hover,.wpsl-add-period:hover,.wpsl-info:hover,[class*=" wpsl-icon-"]:hover,[class^=wpsl-icon-]:hover{cursor:pointer}#wpsl-gmap-wrap{float:left;width:100%;height:250px;border-radius:3px;margin-top:0;margin-bottom:20px}#wpsl-map-preview #wpsl-gmap-wrap{margin:6px 0 12px}#wpsl-gmap-wrap.wpsl-styles-preview{float:none;margin:0;border-radius:0;clear:both}#wpsl-style-url{display:none;margin:20px 0 0}.wpsl-marker-list li{float:left;padding:10px;margin-right:5px;text-align:center}.wpsl-marker-list li input[type=radio]{margin-right:0}.wpsl-marker-list img{display:block;margin-bottom:7px}.wpsl-active-marker,.wpsl-marker-list li:hover{background:#E4E4E4;border-radius:5px;cursor:pointer}#wpsl-settings-form .postbox-container{width:535px;clear:both}#wpsl-wrap .metabox-holder{padding-top:0}.wpsl-info{position:relative;margin-left:3px}.wpsl-info:before{content:'\e802';font-size:14px;font-weight:400;display:inline-block;text-decoration:inherit;width:1em;margin-right:.2em;text-align:center;margin-left:.2em}.wpsl-info.wpsl-required-setting:before{color:#b91111}.wpsl-info-text{position:absolute;padding:10px;left:-29px;bottom:28px;color:#eee;min-width:200px;background:#222;border-radius:3px}#wpsl-map-preview .wpsl-info-text{width:175px;min-width:0;left:-88px}#wpsl-map-preview .wpsl-info-text::after{left:auto;right:87px}#wpsl-map-preview .wpsl-info{position:absolute;margin-left:5px;top:5px}.wpsl-submit-wrap{position:relative;clear:both}.wpsl-search-settings .wpsl-info-text{white-space:nowrap}.wpsl-info-text:after{position:absolute;border-left:11px solid transparent;border-right:11px solid transparent;border-top:11px solid #222;content:"";left:27px;bottom:-10px}.wpsl-info-text a{color:#fff}#wpsl-settings-form label{position:relative;display:inline-block;font-weight:400;margin:0 10px 0 0;width:220px}#wpsl-save-settings{float:left;clear:both}#wpsl-settings-form .wpsl-radioboxes label{float:none;margin-right:10px;width:auto}#wpsl-faq dt{margin-bottom:4px;font-weight:700;font-size:110%}#wpsl-faq dd{margin-left:0}#wpsl-faq dl{margin-bottom:25px}.wp-list-table .column-action .button{margin:3px 5px 3px 0}.wpsl-store-meta label{float:left;width:95px;margin-top:3px}.wpsl-store-meta input[type=email],.wpsl-store-meta input[type=url],.wpsl-store-meta input[type=text],.wpsl-store-meta textarea{width:340px}.wpsl-store-meta textarea{resize:none}#wpsl-map-preview em,#wpsl-settings-form em,.wpsl-store-meta em{display:block}#wpsl-settings-form .wpsl-info em{display:inline}#wpsl-meta-nav{margin:19px 0 6px}#wpsl-meta-nav li{display:inline;margin-right:5px}#wpsl-meta-nav li a{padding:6px 9px;border-radius:3px 3px 0 0;border-bottom:none;text-decoration:none;outline:0}.wpsl-tab{padding:5px 15px;display:none;border:1px solid #eee;border-radius:0 3px 3px}div.wpsl-active{display:block;background:#fdfdfd}#wpsl-meta-nav .wpsl-active a{border:1px solid #eee;border-bottom:1px solid #fdfdfd;background:#fdfdfd;color:#444}.wpsl-star{color:#c01313}#wpsl-store-hours{border-collapse:collapse;margin:5px 0 20px}#wpsl-settings-form #wpsl-store-hours{width:100%}#wpsl-store-hours div{margin:0;padding:3px;background:#eee;border:1px solid #eee;border-radius:3px;white-space:nowrap}#wpsl-store-hours .wpsl-store-closed{border:none;background:0 0;margin-top:9px;margin-bottom:0}.wpsl-add-period,.wpsl-current-period{float:left}#wpsl-store-hours .wpsl-multiple-periods{float:left;clear:both;margin-top:8px}.wpsl-add-period span,.wpsl-current-period span{float:left;margin:6px 7px 0}.wpsl-add-period span{margin:6px 0 0 7px}#wpsl-store-hours .wpsl-remove-period{background:#999;border-radius:9px}.wpsl-add-period{border:none;background:#eee;border-radius:3px;font-size:13px;padding:3px 10px}.wpsl-default-hours{margin-top:25px}#wpsl-store-hours select{float:left}#wpsl-store-hours th{text-align:left;padding:8px 10px 8px 0;border-bottom:1px solid #eee}#wpsl-settings-form #wpsl-store-hours th{text-align:left}#wpsl-store-hours td{border-bottom:1px solid #eee;padding:7px 10px 7px 0;vertical-align:top}#wpsl-store-hours .wpsl-opening-day{min-width:80px;padding:17px 17px 0 0;text-align:left;vertical-align:top}.wpsl-twentyfour-format .wpsl-opening-hours{width:197px}.wpsl-twelve-format .wpsl-opening-hours{width:245px}#wpsl-settings-form #wpsl-store-hours .wpsl-opening-day{width:150px}#wpsl-settings-form #wpsl-store-hours td p{padding:10px 0 0;margin:0;text-align:left}#wpsl-store-hours .wpsl-add-period{height:30px}.wpsl-pre-38 .wpsl-add-period{height:27px}#wpsl-store-hours .dashicons{color:#999;margin:0 3px}#wpsl-store-hours .dashicons:hover,#wpsl-store-hours .wpsl-add-period:hover .dashicons{color:#444}#wpsl-wrap.wpsl-pre-38 .submit{margin-bottom:0!important}[class*=" wpsl-icon-"]:before,[class^=wpsl-icon-]:before{font-weight:400;display:inline-block;text-decoration:inherit;width:1em;margin-right:.2em;text-align:center;margin-left:.2em;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.wpsl-icon-location:before{content:'\e801'}.wpsl-icon-attention-circled:before{content:'\e802'}.wpsl-icon-cancel-circled:before{content:'\e803'}.wpsl-icon-plus-circled:before{content:'\e805'}#wpsl-store-hours .wpsl-icon-cancel-circled,#wpsl-store-hours .wpsl-icon-plus-circled{margin-top:1px;font-size:18px;display:inline-block;color:#999}#wpsl-store-hours .wpsl-icon-cancel-circled:hover,#wpsl-store-hours .wpsl-icon-plus-circled:hover{color:#444}
1
+ #wpsl-wrap.wpsl-add-stores p,.wpsl-marker-list,.wpsl-store-meta p{overflow:hidden}.wpsl-info:before,[class*=" wpsl-icon-"]:before,[class^=wpsl-icon-]:before{font-family:fontello;font-style:normal;speak:none;text-decoration:inherit;font-variant:normal;text-transform:none;line-height:1em}@font-face{font-family:fontello;src:url(../font/fontello.eot?54620740);src:url(../font/fontello.eot?54620740#iefix) format('embedded-opentype'),url(../font/fontello.woff?54620740) format('woff'),url(../font/fontello.ttf?54620740) format('truetype'),url(../font/fontello.svg?54620740#fontello) format('svg');font-weight:400;font-style:normal}#wpsl-store-overview .widefat td,#wpsl-wrap .widefat td{padding:12px 7px}#wpsl-wrap.wpsl-settings h2{margin-bottom:15px}#wpsl-wrap .submit{padding:0!important;margin-bottom:-10px!important}#wpsl-store-overview .column-action a{float:left;margin-right:5px}#wpsl-store-overview p.search-box{margin:0 0 1em}.column-action{width:130px}#wpsl-delete-confirmation,.wpsl-hide{display:none}.wpsl-preloader{float:right;margin:4px 0 0 4px}#wpsl-mainnav{border-bottom:1px solid #CCC;float:left;margin-bottom:15px;padding-left:7px;width:99.4%}#wpsl-mainnav li a{display:block;padding:9px 12px;text-decoration:none}#wpsl-mainnav li{float:left;margin:0}#wpsl-wrap label,#wpsl-wrap.wpsl-add-stores label{width:85px;margin-top:6px}#wpsl-wrap.wpsl-add-stores label{float:left}#wpsl-wrap.wpsl-add-stores .wpsl-radioboxes label{float:none;margin-right:10px}#wpsl-wrap textarea{width:489px;resize:none}#wpsl-wrap textarea,.wpsl-tab #wpsl-hours{height:185px}#wpsl-wrap .wpsl-style-input textarea{width:509px;resize:none;margin-bottom:12px;height:165px}#wpsl-style-preview{float:left;margin-bottom:12px}.wpsl-style-preview-error{float:left;margin:6px 0 0 10px;color:#b91111}.wpsl-curve{float:left;border-radius:3px}.wpsl-store-meta .wpsl-error{border:1px solid #c01313}#wpsl-lookup-location{margin-bottom:7px}#wpsl-wrap input[type=email],#wpsl-wrap input[type=text],#wpsl-wrap input[type=url]{width:340px}#wpsl-wrap.wpsl-settings input[type=text].textinput{width:255px}.wpsl-add-store{float:left;width:100%;clear:both}#wpsl-wrap .metabox-holder{float:left;margin-right:20px}#wpsl-wrap .metabox-holder.wpsl-wide{width:100%;padding-top:0}#wpsl-wrap .wpsl-edit-header{margin-bottom:12px}#wpsl-wrap.wpsl-settings .metabox-holder{width:100%}#wpsl-wrap.wpsl-settings .metabox-holder h3:hover{cursor:auto}#wpsl-meta-nav li:hover,#wpsl-store-hours .dashicons:hover,.wpsl-add-period:hover,.wpsl-info:hover,[class*=" wpsl-icon-"]:hover,[class^=wpsl-icon-]:hover{cursor:pointer}#wpsl-gmap-wrap{float:left;width:100%;height:250px;border-radius:3px;margin-top:0;margin-bottom:20px}#wpsl-map-preview #wpsl-gmap-wrap{margin:6px 0 12px}#wpsl-gmap-wrap.wpsl-styles-preview{float:none;margin:0;border-radius:0;clear:both}#wpsl-style-url{display:none;margin:20px 0 0}.wpsl-marker-list li{float:left;padding:10px;margin-right:5px;text-align:center}.wpsl-marker-list li input[type=radio]{margin-right:0}.wpsl-marker-list img{display:block;margin-bottom:7px}.wpsl-active-marker,.wpsl-marker-list li:hover{background:#E4E4E4;border-radius:5px;cursor:pointer}#wpsl-settings-form .postbox-container{width:535px;clear:both}#wpsl-wrap .metabox-holder{padding-top:0}.wpsl-info{position:relative;margin-left:3px}.wpsl-info:before{content:'\e802';font-size:14px;font-weight:400;display:inline-block;width:1em;margin-right:.2em;text-align:center;margin-left:.2em}.wpsl-info.wpsl-required-setting:before{color:#b91111}.wpsl-info-text{position:absolute;padding:10px;left:-29px;bottom:28px;color:#eee;min-width:200px;background:#222;border-radius:3px}#wpsl-map-preview .wpsl-info-text{width:175px;min-width:0;left:-88px}#wpsl-map-preview .wpsl-info-text::after{left:auto;right:87px}#wpsl-map-preview .wpsl-info{position:absolute;margin-left:5px;top:5px}.wpsl-submit-wrap{position:relative;clear:both}.wpsl-search-settings .wpsl-info-text{white-space:nowrap}.wpsl-info-text:after{position:absolute;border-left:11px solid transparent;border-right:11px solid transparent;border-top:11px solid #222;content:"";left:27px;bottom:-10px}.wpsl-info-text a{color:#fff}#wpsl-settings-form label{position:relative;display:inline-block;font-weight:400;margin:0 10px 0 0;width:220px}#wpsl-save-settings{float:left;clear:both}#wpsl-settings-form .wpsl-radioboxes label{float:none;margin-right:10px;width:auto}#wpsl-faq dt{margin-bottom:4px;font-weight:700;font-size:110%}#wpsl-faq dd{margin-left:0}#wpsl-faq dl{margin-bottom:25px}.wp-list-table .column-action .button{margin:3px 5px 3px 0}.wpsl-store-meta label{float:left;width:95px;margin-top:3px}.wpsl-store-meta input[type=email],.wpsl-store-meta input[type=url],.wpsl-store-meta input[type=text],.wpsl-store-meta textarea{width:340px}.wpsl-store-meta textarea{resize:none}#wpsl-map-preview em,#wpsl-settings-form em,.wpsl-store-meta em{display:block}#wpsl-settings-form .wpsl-info em{display:inline}#wpsl-meta-nav{margin:19px 0 6px}#wpsl-meta-nav li{display:inline;margin-right:5px}#wpsl-meta-nav li a{padding:6px 9px;border-radius:3px 3px 0 0;border-bottom:none;text-decoration:none;outline:0}.wpsl-tab{padding:5px 15px;display:none;border:1px solid #eee;border-radius:0 3px 3px}div.wpsl-active{display:block;background:#fdfdfd}#wpsl-meta-nav .wpsl-active a{border:1px solid #eee;border-bottom:1px solid #fdfdfd;background:#fdfdfd;color:#444}.wpsl-star{color:#c01313}#wpsl-store-hours{border-collapse:collapse;margin:5px 0 20px}#wpsl-settings-form #wpsl-store-hours{width:100%}#wpsl-store-hours div{margin:0;padding:3px;background:#eee;border:1px solid #eee;border-radius:3px;white-space:nowrap}#wpsl-store-hours .wpsl-store-closed{border:none;background:0 0;margin-top:9px;margin-bottom:0}.wpsl-add-period,.wpsl-current-period{float:left}#wpsl-store-hours .wpsl-multiple-periods{float:left;clear:both;margin-top:8px}.wpsl-add-period span,.wpsl-current-period span{float:left;margin:6px 7px 0}.wpsl-add-period span{margin:6px 0 0 7px}#wpsl-store-hours .wpsl-remove-period{background:#999;border-radius:9px}.wpsl-add-period{border:none;background:#eee;border-radius:3px;font-size:13px;padding:3px 10px}.wpsl-default-hours{margin-top:25px}#wpsl-store-hours select{float:left}#wpsl-store-hours th{text-align:left;padding:8px 10px 8px 0;border-bottom:1px solid #eee}#wpsl-settings-form #wpsl-store-hours th{text-align:left}#wpsl-store-hours td{border-bottom:1px solid #eee;padding:7px 10px 7px 0;vertical-align:top}#wpsl-store-hours .wpsl-opening-day{min-width:80px;padding:17px 17px 0 0;text-align:left;vertical-align:top}.wpsl-twentyfour-format .wpsl-opening-hours{width:197px}.wpsl-twelve-format .wpsl-opening-hours{width:245px}#wpsl-settings-form #wpsl-store-hours .wpsl-opening-day{width:150px}#wpsl-settings-form #wpsl-store-hours td p{padding:10px 0 0;margin:0;text-align:left}#wpsl-store-hours .wpsl-add-period{height:30px}.wpsl-pre-38 .wpsl-add-period{height:27px}#wpsl-store-hours .dashicons{color:#999;margin:0 3px}#wpsl-store-hours .dashicons:hover,#wpsl-store-hours .wpsl-add-period:hover .dashicons{color:#444}#wpsl-wrap.wpsl-pre-38 .submit{margin-bottom:0!important}[class*=" wpsl-icon-"]:before,[class^=wpsl-icon-]:before{font-weight:400;display:inline-block;width:1em;margin-right:.2em;text-align:center;margin-left:.2em;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.wpsl-icon-location:before{content:'\e801'}.wpsl-icon-attention-circled:before{content:'\e802'}.wpsl-icon-cancel-circled:before{content:'\e803'}.wpsl-icon-plus-circled:before{content:'\e805'}#wpsl-store-hours .wpsl-icon-cancel-circled,#wpsl-store-hours .wpsl-icon-plus-circled{margin-top:1px;font-size:18px;display:inline-block;color:#999}#wpsl-store-hours .wpsl-icon-cancel-circled:hover,#wpsl-store-hours .wpsl-icon-plus-circled:hover{color:#444}
admin/roles.php CHANGED
@@ -1,9 +1,9 @@
1
  <?php
2
 
3
  /**
4
- * Add WPSL Roles
5
  *
6
- * @since 2.0
7
  * @return void
8
  */
9
  function wpsl_add_roles() {
@@ -47,9 +47,9 @@ function wpsl_add_roles() {
47
  }
48
 
49
  /**
50
- * Add WPSL user capabilities
51
  *
52
- * @since 2.0
53
  * @return void
54
  */
55
  function wpsl_add_caps() {
@@ -74,9 +74,10 @@ function wpsl_add_caps() {
74
  }
75
  }
76
 
77
- /* Get the WPSL post type capabilities
 
78
  *
79
- * @since 2.0
80
  * @return array $capabilities The post type capabilities
81
  */
82
  function wpsl_get_post_caps() {
@@ -101,11 +102,11 @@ function wpsl_get_post_caps() {
101
  }
102
 
103
  /**
104
- * Remove the WPSL caps and roles
105
  *
106
  * Only called from uninstall.php
107
  *
108
- * @since 2.0
109
  * @return void
110
  */
111
  function wpsl_remove_caps_and_roles() {
1
  <?php
2
 
3
  /**
4
+ * Add WPSL Roles.
5
  *
6
+ * @since 2.0.0
7
  * @return void
8
  */
9
  function wpsl_add_roles() {
47
  }
48
 
49
  /**
50
+ * Add WPSL user capabilities.
51
  *
52
+ * @since 2.0.0
53
  * @return void
54
  */
55
  function wpsl_add_caps() {
74
  }
75
  }
76
 
77
+ /**
78
+ * Get the WPSL post type capabilities.
79
  *
80
+ * @since 2.0.0
81
  * @return array $capabilities The post type capabilities
82
  */
83
  function wpsl_get_post_caps() {
102
  }
103
 
104
  /**
105
+ * Remove the WPSL caps and roles.
106
  *
107
  * Only called from uninstall.php
108
  *
109
+ * @since 2.0.0
110
  * @return void
111
  */
112
  function wpsl_remove_caps_and_roles() {
admin/templates/map-settings.php CHANGED
@@ -1,4 +1,8 @@
1
- <?php global $wpdb, $wpsl, $wpsl_admin, $wp_version, $wpsl_settings; ?>
 
 
 
 
2
 
3
  <div id="wpsl-wrap" class="wrap wpsl-settings <?php if ( floatval( $wp_version ) < 3.8 ) { echo 'wpsl-pre-38'; } // Fix CSS issue with < 3.8 versions ?>">
4
  <h2>WP Store Locator <?php _e( 'Settings', 'wpsl' ); ?></h2>
@@ -348,12 +352,23 @@
348
  </div>
349
  </div>
350
  </div>
351
-
352
  <div class="postbox-container">
353
  <div class="metabox-holder">
354
  <div id="wpsl-label-settings" class="postbox">
355
  <h3 class="hndle"><span><?php _e( 'Labels', 'wpsl' ); ?></span></h3>
356
  <div class="inside">
 
 
 
 
 
 
 
 
 
 
 
357
  <p>
358
  <label for="wpsl-search"><?php _e( 'Your location', 'wpsl' ); ?>:</label>
359
  <input type="text" value="<?php echo esc_attr( $wpsl->i18n->get_translation( 'search_label', __( 'Your location', 'wpsl' ) ) ); ?>" name="wpsl_label[search]" class="textinput" id="wpsl-search">
1
+ <?php
2
+ if ( !defined( 'ABSPATH' ) ) exit;
3
+
4
+ global $wpdb, $wpsl, $wpsl_admin, $wp_version, $wpsl_settings;
5
+ ?>
6
 
7
  <div id="wpsl-wrap" class="wrap wpsl-settings <?php if ( floatval( $wp_version ) < 3.8 ) { echo 'wpsl-pre-38'; } // Fix CSS issue with < 3.8 versions ?>">
8
  <h2>WP Store Locator <?php _e( 'Settings', 'wpsl' ); ?></h2>
352
  </div>
353
  </div>
354
  </div>
355
+
356
  <div class="postbox-container">
357
  <div class="metabox-holder">
358
  <div id="wpsl-label-settings" class="postbox">
359
  <h3 class="hndle"><span><?php _e( 'Labels', 'wpsl' ); ?></span></h3>
360
  <div class="inside">
361
+ <?php
362
+ /*
363
+ * Show a msg to make sure that when a WPML compatible plugin
364
+ * is active users use the 'String Translations' page to change the labels,
365
+ * instead of the 'Label' section.
366
+ */
367
+ if ( $wpsl->i18n->wpml_exists() ) {
368
+ echo '<p>' . sprintf( __( '%sWarning!%s %sWPML%s, or a plugin using the WPML API is active.', 'wpsl' ), '<strong>', '</strong>', '<a href="https://wpml.org/">', '</a>' ) . '</p>';
369
+ echo '<p>' . __( 'Please use the "String Translations" section in the used multilingual plugin to change the labels. Changing them here will have no effect as long as the multilingual plugin remains active.', 'wpsl' ) . '</p>';
370
+ }
371
+ ?>
372
  <p>
373
  <label for="wpsl-search"><?php _e( 'Your location', 'wpsl' ); ?>:</label>
374
  <input type="text" value="<?php echo esc_attr( $wpsl->i18n->get_translation( 'search_label', __( 'Your location', 'wpsl' ) ) ); ?>" name="wpsl_label[search]" class="textinput" id="wpsl-search">
css/styles.css CHANGED
@@ -668,8 +668,6 @@ table.wpsl-opening-hours td {
668
  text-align: left;
669
  }
670
 
671
- .wpsl_stores .wpsl-contact-details span,
672
- #wpsl-stores .wpsl-contact-details span,
673
  table.wpsl-opening-hours time {
674
  display:block;
675
  }
668
  text-align: left;
669
  }
670
 
 
 
671
  table.wpsl-opening-hours time {
672
  display:block;
673
  }
frontend/class-frontend.php CHANGED
@@ -2,8 +2,8 @@
2
  /**
3
  * Frontend class
4
  *
5
- * @package WP_Store_locator
6
- * @since 1.0
7
  */
8
 
9
  if ( !defined( 'ABSPATH' ) ) exit;
@@ -13,21 +13,21 @@ if ( !class_exists( 'WPSL_Frontend' ) ) {
13
  /**
14
  * Handle the frontend of the store locator
15
  *
16
- * @since 1.0
17
  */
18
  class WPSL_Frontend {
19
 
20
  /**
21
  * Keep track which scripts we need to load
22
  *
23
- * @since 2.0
24
  */
25
  private $load_scripts = array();
26
 
27
  /**
28
  * Keep track of the amount of maps on the page
29
  *
30
- * @since 2.0
31
  */
32
  private static $map_count = 0;
33
 
@@ -56,7 +56,7 @@ if ( !class_exists( 'WPSL_Frontend' ) ) {
56
  /**
57
  * Include the required front-end files.
58
  *
59
- * @since 2.0
60
  * @return void
61
  */
62
  public function includes() {
@@ -66,14 +66,15 @@ if ( !class_exists( 'WPSL_Frontend' ) ) {
66
  /**
67
  * Handle the Ajax search on the frontend.
68
  *
69
- * @since 1.0
70
  * @return json A list of store locations that are located within the selected search radius
71
  */
72
  public function store_search() {
73
 
74
  global $wpsl, $wpsl_settings;
75
 
76
- /* Check if auto loading the locations on page load is enabled.
 
77
  *
78
  * If so then we save the store data in a transient to prevent a long loading time
79
  * in case a large amount of locations need to be displayed.
@@ -84,7 +85,8 @@ if ( !class_exists( 'WPSL_Frontend' ) ) {
84
  */
85
  if ( $wpsl_settings['autoload'] && isset( $_GET['autoload'] ) && $_GET['autoload'] && !$wpsl_settings['debug'] && !isset( $_GET['skip_cache'] ) ) {
86
 
87
- /* If a multilingual plugin ( WPML or qTranslate X ) is active then we have
 
88
  * to make sure each language has his own unique transient. We do this by
89
  * including the lang code in the transient name.
90
  *
@@ -118,7 +120,7 @@ if ( !class_exists( 'WPSL_Frontend' ) ) {
118
  * latlng of the searched location, and the latlng from
119
  * the stores in the db.
120
  *
121
- * @since 2.0
122
  * @return void|array $store_data The list of stores that fall within the selected range.
123
  */
124
  public function find_nearby_locations() {
@@ -127,12 +129,13 @@ if ( !class_exists( 'WPSL_Frontend' ) ) {
127
 
128
  $store_data = array();
129
 
130
- /* Set the correct earth radius in either km or miles.
 
131
  * We need this to calculate the distance between two coordinates.
132
  */
133
  $radius = ( $wpsl_settings['distance_unit'] == 'km' ) ? 6371 : 3959;
134
 
135
- /* The placeholder values for the prepared statement in the sql query. */
136
  $placeholder_values = array(
137
  $radius,
138
  $_GET['lat'],
@@ -140,7 +143,7 @@ if ( !class_exists( 'WPSL_Frontend' ) ) {
140
  $_GET['lat']
141
  );
142
 
143
- /* Check if we need to filter the results by category. */
144
  if ( isset( $_GET['filter'] ) && $_GET['filter'] ) {
145
  $placeholder_values[] = $_GET['filter'];
146
 
@@ -152,7 +155,7 @@ if ( !class_exists( 'WPSL_Frontend' ) ) {
152
  $cat_filter = '';
153
  }
154
 
155
- /**
156
  * If WPML is active we include 'GROUP BY lat' in the sql query
157
  * to prevent duplicate locations from showing up in the results.
158
  *
@@ -167,7 +170,8 @@ if ( !class_exists( 'WPSL_Frontend' ) ) {
167
  $group_by = '';
168
  }
169
 
170
- /* If autoload is enabled we need to check if there is a limit to the
 
171
  * amount of locations we need to show.
172
  *
173
  * Otherwise include the radius and max results limit in the sql query.
@@ -188,7 +192,8 @@ if ( !class_exists( 'WPSL_Frontend' ) ) {
188
 
189
  $placeholder_values = apply_filters( 'wpsl_sql_placeholder_values', $placeholder_values );
190
 
191
- /* The sql that will check which store locations fall within
 
192
  * the selected radius based on the lat and lng values.
193
  */
194
  $sql = apply_filters( 'wpsl_sql',
@@ -207,7 +212,7 @@ if ( !class_exists( 'WPSL_Frontend' ) ) {
207
 
208
  $stores = $wpdb->get_results( $wpdb->prepare( $sql, $placeholder_values ) );
209
 
210
- if ( $stores ) {
211
  $store_data = apply_filters( 'wpsl_store_data', $this->get_store_meta_data( $stores ) );
212
  }
213
 
@@ -217,7 +222,7 @@ if ( !class_exists( 'WPSL_Frontend' ) ) {
217
  /**
218
  * Get the post meta data for the selected stores.
219
  *
220
- * @since 2.0
221
  * @param object $stores
222
  * @return array $all_stores The stores that fall within the selected range with the post meta data.
223
  */
@@ -228,12 +233,12 @@ if ( !class_exists( 'WPSL_Frontend' ) ) {
228
  $all_stores = array();
229
  $include_post_content = apply_filters( 'wpsl_include_post_content', false );
230
 
231
- /* Get the list of store fields that we need to filter out of the post meta data. */
232
  $meta_field_map = $this->frontend_meta_fields();
233
 
234
  foreach ( $stores as $store_key => $store ) {
235
 
236
- /* If WPML is active try to get the id of the translated page. */
237
  if ( $wpsl->i18n->wpml_exists() ) {
238
  $store->ID = $wpsl->i18n->maybe_get_wpml_id( $store->ID );
239
 
@@ -242,7 +247,7 @@ if ( !class_exists( 'WPSL_Frontend' ) ) {
242
  }
243
  }
244
 
245
- /* Get the post meta data for each store that was within the range of the search radius. */
246
  $custom_fields = get_post_custom( $store->ID );
247
 
248
  foreach ( $meta_field_map as $meta_key => $meta_value ) {
@@ -254,12 +259,12 @@ if ( !class_exists( 'WPSL_Frontend' ) ) {
254
  $meta_type = '';
255
  }
256
 
257
- /* If we need to hide the opening hours, and the current meta type is set to hours we skip it */
258
  if ( $wpsl_settings['hide_hours'] && $meta_type == 'hours' ) {
259
  continue;
260
  }
261
 
262
- /* Make sure the data is safe to use on the frontend and in the format we expect it to be */
263
  switch ( $meta_type ) {
264
  case 'numeric':
265
  $meta_data = ( is_numeric( $custom_fields[$meta_key][0] ) ) ? $custom_fields[$meta_key][0] : 0 ;
@@ -287,7 +292,8 @@ if ( !class_exists( 'WPSL_Frontend' ) ) {
287
  $store_meta[$meta_value['name']] = '';
288
  }
289
 
290
- /* Include the post content if the "More info" option is enabled on the settings page,
 
291
  * or if $include_post_content is set to true through the 'wpsl_include_post_content' filter.
292
  */
293
  if ( ( $wpsl_settings['more_info'] && $wpsl_settings['more_info_location'] == 'store listings' ) || $include_post_content ) {
@@ -324,7 +330,7 @@ if ( !class_exists( 'WPSL_Frontend' ) ) {
324
  *
325
  * If no type is set it will default to sanitize_text_field.
326
  *
327
- * @since 2.0
328
  * @return array $store_fields The names of the meta fields used by the store
329
  */
330
  public function frontend_meta_fields() {
@@ -382,7 +388,7 @@ if ( !class_exists( 'WPSL_Frontend' ) ) {
382
  /**
383
  * Get the store thumbnail.
384
  *
385
- * @since 2.0
386
  * @param string $post_id The post id of the store
387
  * @param string $store_name The name of the store
388
  * @return void|string $thumb The html img tag
@@ -402,7 +408,7 @@ if ( !class_exists( 'WPSL_Frontend' ) ) {
402
  /**
403
  * Get the store thumbnail size.
404
  *
405
- * @since 2.0
406
  * @return array $size The thumb format
407
  */
408
  public function get_store_thumb_size() {
@@ -420,7 +426,7 @@ if ( !class_exists( 'WPSL_Frontend' ) ) {
420
  *
421
  * Note: The opening hours can only be set in the textarea format by users who upgraded from 1.x.
422
  *
423
- * @since 2.0
424
  * @param array|string $hours The opening hours
425
  * @param boolean $hide_closed Hide the days were the location is closed
426
  * @return string $hours The formated opening hours
@@ -429,7 +435,8 @@ if ( !class_exists( 'WPSL_Frontend' ) ) {
429
 
430
  $hours = maybe_unserialize( $hours );
431
 
432
- /* If the hours are set through the dropdown then we create a table for the opening hours.
 
433
  * Otherwise we output the data entered in the textarea.
434
  */
435
  if ( is_array( $hours ) ) {
@@ -444,7 +451,8 @@ if ( !class_exists( 'WPSL_Frontend' ) ) {
444
  /**
445
  * Create a table for the opening hours.
446
  *
447
- * @since 2.0
 
448
  * @param array $hours The opening hours
449
  * @param boolean $hide_closed Hide the days where the location is closed
450
  * @return string $hour_table The opening hours sorted in a table
@@ -453,7 +461,7 @@ if ( !class_exists( 'WPSL_Frontend' ) ) {
453
 
454
  $opening_days = wpsl_get_weekdays();
455
 
456
- /* Make sure that we have actual opening hours, and not every day is empty */
457
  if ( $this->not_always_closed( $hours ) ) {
458
  $hour_table = '<table class="wpsl-opening-hours">';
459
 
@@ -461,7 +469,7 @@ if ( !class_exists( 'WPSL_Frontend' ) ) {
461
  $i = 0;
462
  $hour_count = count( $hours[$index] );
463
 
464
- /* If we need to hide days that are set to closed then skip them */
465
  if ( $hide_closed && !$hour_count ) {
466
  continue;
467
  }
@@ -469,7 +477,7 @@ if ( !class_exists( 'WPSL_Frontend' ) ) {
469
  $hour_table .= '<tr>';
470
  $hour_table .= '<td>' . esc_html( $day ) . '</td>';
471
 
472
- /* If we have opening hours we show them, otherwise just show 'Closed' */
473
  if ( $hour_count > 0 ) {
474
  $hour_table .= '<td>';
475
 
@@ -501,7 +509,7 @@ if ( !class_exists( 'WPSL_Frontend' ) ) {
501
  * create a single-wpsl_stores.php file in your theme folder.
502
  * You can see an example here http://wpstorelocator.co/document/create-custom-store-page-template/
503
  *
504
- * @since 2.0
505
  * @param string $content
506
  * @return string $content
507
  */
@@ -526,7 +534,7 @@ if ( !class_exists( 'WPSL_Frontend' ) ) {
526
  /**
527
  * Handle the [wpsl] shortcode.
528
  *
529
- * @since 1.0
530
  * @param array $atts Shortcode attributes
531
  * @return string $output The wpsl template
532
  */
@@ -534,18 +542,18 @@ if ( !class_exists( 'WPSL_Frontend' ) ) {
534
 
535
  global $wpsl_settings;
536
 
537
- /* Accept a 'template' attribute to specify the template ID (e.g. "default" or "below_map" */
538
  $atts = shortcode_atts( array(
539
  'template' => $wpsl_settings['template_id']
540
  ), $atts );
541
 
542
- /* Make sure the required scripts are included for the wpsl shortcode */
543
  array_push( $this->load_scripts, 'wpsl_store_locator' );
544
 
545
  $template_list = wpsl_get_templates();
546
  $template_path = '';
547
 
548
- /* Loop over the template list and look for a matching id with the one set on the settings page. */
549
  foreach ( $template_list as $template ) {
550
  if ( $atts['template'] == $template['id'] ) {
551
  $template_path = $template['path'];
@@ -553,7 +561,7 @@ if ( !class_exists( 'WPSL_Frontend' ) ) {
553
  }
554
  }
555
 
556
- /* Check if we have a template path and the file exists, otherwise we use the default template. */
557
  if ( !$template_path || ( !file_exists( $template_path ) ) ) {
558
  $template_path = WPSL_PLUGIN_DIR . 'frontend/templates/default.php';
559
  }
@@ -565,8 +573,9 @@ if ( !class_exists( 'WPSL_Frontend' ) ) {
565
 
566
  /**
567
  * Handle the [wpsl_address] shortcode.
568
- *
569
- * @since 2.0
 
570
  * @param array $atts Shortcode attributes
571
  * @return void|string $output The store address
572
  */
@@ -574,7 +583,7 @@ if ( !class_exists( 'WPSL_Frontend' ) ) {
574
 
575
  global $post, $wpsl_settings, $wpsl;
576
 
577
- $atts = shortcode_atts( apply_filters( 'wpsl_address_shortcode_defaults', array(
578
  'id' => '',
579
  'name' => true,
580
  'address' => true,
@@ -587,7 +596,7 @@ if ( !class_exists( 'WPSL_Frontend' ) ) {
587
  'fax' => true,
588
  'email' => true,
589
  'url' => true
590
- ) ), $atts );
591
 
592
  if ( get_post_type() == 'wpsl_stores' ) {
593
  if ( empty( $atts['id'] ) ) {
@@ -621,16 +630,17 @@ if ( !class_exists( 'WPSL_Frontend' ) ) {
621
  $count = count( $address_format );
622
  $i = 1;
623
 
624
- /* Loop over the address parts to make sure they are shown in the right order */
625
  foreach ( $address_format as $address_part ) {
626
 
627
- /* Make sure the shortcode attribute is set to true for the $address_part, and it's not the 'comma' part */
628
  if ( $address_part != 'comma' && $atts[$address_part] ) {
629
  $post_meta = get_post_meta( $atts['id'], 'wpsl_' . $address_part, true );
630
 
631
  if ( $post_meta ) {
632
 
633
- /* Check if the next part of the address is set to 'comma'.
 
634
  * If so add the, after the current address part, otherwise just show a space
635
  */
636
  if ( isset( $address_format[$i] ) && ( $address_format[$i] == 'comma' ) ) {
@@ -639,7 +649,7 @@ if ( !class_exists( 'WPSL_Frontend' ) ) {
639
  $punctuation = ' ';
640
  }
641
 
642
- /* If we have reached the last item add a <br /> behind it */
643
  $br = ( $count == $i ) ? '<br />' : '';
644
 
645
  $content .= '<span>' . esc_html( $post_meta ) . $punctuation . '</span>' . $br;
@@ -655,25 +665,25 @@ if ( !class_exists( 'WPSL_Frontend' ) ) {
655
 
656
  $content .= '</div>';
657
 
658
- /* If either the phone, fax, email or url is set to true add the wrap div for the contact div */
659
  if ( $atts['phone'] || $atts['fax'] || $atts['email'] || $atts['url'] ) {
660
  $content .= '<div class="wpsl-contact-details">';
661
 
662
  if ( $atts['phone'] && $store_phone = get_post_meta( $atts['id'], 'wpsl_phone', true ) ) {
663
- $content .= '<span>' . esc_html( $wpsl->i18n->get_translation( 'phone_label', __( 'Phone', 'wpsl' ) ) ) . ': ' . esc_html( $store_phone ) . '</span>';
664
  }
665
 
666
  if ( $atts['fax'] && $store_fax = get_post_meta( $atts['id'], 'wpsl_fax', true ) ) {
667
- $content .= '<span>' . esc_html( $wpsl->i18n->get_translation( 'fax_label', __( 'Fax', 'wpsl' ) ) ) . ': ' . esc_html( $store_fax ) . '</span>';
668
  }
669
 
670
  if ( $atts['email'] && $store_email = get_post_meta( $atts['id'], 'wpsl_email', true ) ) {
671
- $content .= '<span>' . esc_html( $wpsl->i18n->get_translation( 'email_label', __( 'Email', 'wpsl' ) ) ) . ': ' . sanitize_email( $store_email ) . '</span>';
672
  }
673
 
674
  if ( $atts['url'] && $store_url = get_post_meta( $atts['id'], 'wpsl_url', true ) ) {
675
  $new_window = ( $wpsl_settings['new_window'] ) ? 'target="_blank"' : '' ;
676
- $content .= '<span>' . esc_html( $wpsl->i18n->get_translation( 'url_label', __( 'Url', 'wpsl' ) ) ) . ': <a ' . $new_window . ' href="' . esc_url( $store_url ) . '">' . esc_url( $store_url ) . '</a></span>';
677
  }
678
 
679
  $content .= '</div>';
@@ -687,7 +697,7 @@ if ( !class_exists( 'WPSL_Frontend' ) ) {
687
  /**
688
  * Handle the [wpsl_hours] shortcode.
689
  *
690
- * @since 2.0
691
  * @param array $atts Shortcode attributes
692
  * @return void|string $output The opening hours
693
  */
@@ -695,10 +705,10 @@ if ( !class_exists( 'WPSL_Frontend' ) ) {
695
 
696
  global $post;
697
 
698
- $atts = shortcode_atts( apply_filters( 'wpsl_hour_shortcode_defaults', array(
699
  'id' => '',
700
  'hide_closed' => false
701
- ) ), $atts );
702
 
703
  if ( get_post_type() == 'wpsl_stores' ) {
704
  if ( empty( $atts['id'] ) ) {
@@ -721,10 +731,31 @@ if ( !class_exists( 'WPSL_Frontend' ) ) {
721
  }
722
  }
723
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
724
  /**
725
  * Handle the [wpsl_map] shortcode.
726
  *
727
- * @since 2.0
728
  * @param array $atts Shortcode attributes
729
  * @return string $output The html for the map
730
  */
@@ -767,7 +798,7 @@ if ( !class_exists( 'WPSL_Frontend' ) ) {
767
  $lat = get_post_meta( $store_id, 'wpsl_lat', true );
768
  $lng = get_post_meta( $store_id, 'wpsl_lng', true );
769
 
770
- /* Make sure the latlng is numeric before collecting the other meta data */
771
  if ( is_numeric( $lat ) && is_numeric( $lng ) ) {
772
  $store_meta[$i] = apply_filters( 'wpsl_cpt_info_window_meta_fields', array(
773
  'store' => get_the_title( $store_id ),
@@ -789,7 +820,7 @@ if ( !class_exists( 'WPSL_Frontend' ) ) {
789
 
790
  $output = '<div id="wpsl-base-gmap_' . self::$map_count . '" class="wpsl-gmap-canvas"></div>' . "\r\n";
791
 
792
- /* Make sure the shortcode attributes are valid */
793
  $map_styles = $this->check_map_shortcode_atts( $atts );
794
 
795
  if ( $map_styles ) {
@@ -817,7 +848,7 @@ if ( !class_exists( 'WPSL_Frontend' ) ) {
817
  *
818
  * The values are send to wp_localize_script in add_frontend_scripts.
819
  *
820
- * @since 2.0
821
  * @param array $atts The map style shortcode attributes
822
  * @return array $map_atts Validated map style shortcode attributes
823
  */
@@ -875,7 +906,7 @@ if ( !class_exists( 'WPSL_Frontend' ) ) {
875
  /**
876
  * Set the shortcode attribute to either 1 or 0.
877
  *
878
- * @since 2.0
879
  * @param string $att The shortcode attribute val
880
  * @return int $att_val Either 1 or 0
881
  */
@@ -893,7 +924,7 @@ if ( !class_exists( 'WPSL_Frontend' ) ) {
893
  /**
894
  * Make sure the filter contains a valid value, otherwise use the default value.
895
  *
896
- * @since 2.0
897
  * @return string $filter_value The filter value
898
  */
899
  public function check_store_filter( $filter ) {
@@ -910,7 +941,7 @@ if ( !class_exists( 'WPSL_Frontend' ) ) {
910
  /**
911
  * Get the default selected value for a dropdown.
912
  *
913
- * @since 1.0
914
  * @param string $type The request list type
915
  * @return string $response The default list value
916
  */
@@ -921,7 +952,7 @@ if ( !class_exists( 'WPSL_Frontend' ) ) {
921
 
922
  foreach ( $list_values as $k => $list_value ) {
923
 
924
- /* The default radius has a [] wrapped around it, so we check for that and filter out the [] */
925
  if ( strpos( $list_value, '[' ) !== false ) {
926
  $response = filter_var( $list_value, FILTER_SANITIZE_NUMBER_INT );
927
  break;
@@ -934,7 +965,7 @@ if ( !class_exists( 'WPSL_Frontend' ) ) {
934
  /**
935
  * Check if we have a opening day that has an value, if not they are all set to closed.
936
  *
937
- * @since 2.0
938
  * @param array $opening_hours The opening hours
939
  * @return boolean True if a day is found that isn't empty
940
  */
@@ -950,7 +981,7 @@ if ( !class_exists( 'WPSL_Frontend' ) ) {
950
  /**
951
  * Create the css rules based on the height / max-width that is set on the settings page.
952
  *
953
- * @since 1.0
954
  * @return string $css The custom css rules
955
  */
956
  public function get_custom_css() {
@@ -972,8 +1003,10 @@ if ( !class_exists( 'WPSL_Frontend' ) ) {
972
  $css .= "\t" . "#wpsl-stores, #wpsl-direction-details, #wpsl-gmap {height:" . esc_attr( $wpsl_settings['height'] ) . "px !important;}" . "\r\n";
973
  }
974
 
975
- /* If the category dropdowns are enabled then we make it
976
- * the same width as the search input field. */
 
 
977
  if ( $wpsl_settings['category_dropdown'] ) {
978
  $cat_elem = ',#wpsl-category .wpsl-dropdown';
979
  } else {
@@ -991,7 +1024,7 @@ if ( !class_exists( 'WPSL_Frontend' ) ) {
991
  /**
992
  * Collect the CSS classes that are placed on the outer store locator div.
993
  *
994
- * @since 2.0
995
  * @return string $classes The custom CSS rules
996
  */
997
  public function get_css_classes() {
@@ -1023,7 +1056,7 @@ if ( !class_exists( 'WPSL_Frontend' ) ) {
1023
  * Collect all the attributes (language, key, region)
1024
  * we need before making a request to the Google Maps API.
1025
  *
1026
- * @since 1.0
1027
  * @param string $list_type The name of the list we need to load data for
1028
  * @return string $dropdown_list A list with the available options for the dropdown list
1029
  */
@@ -1034,7 +1067,7 @@ if ( !class_exists( 'WPSL_Frontend' ) ) {
1034
  $dropdown_list = '';
1035
  $settings = explode( ',', $wpsl_settings[$list_type] );
1036
 
1037
- /* Only show the distance unit if we are dealing with the search radius */
1038
  if ( $list_type == 'search_radius' ) {
1039
  $distance_unit = ' '. esc_attr( $wpsl_settings['distance_unit'] );
1040
  } else {
@@ -1043,7 +1076,7 @@ if ( !class_exists( 'WPSL_Frontend' ) ) {
1043
 
1044
  foreach ( $settings as $index => $setting_value ) {
1045
 
1046
- /* The default radius has a [] wrapped around it, so we check for that and filter out the [] */
1047
  if ( strpos( $setting_value, '[' ) !== false ) {
1048
  $setting_value = filter_var( $setting_value, FILTER_SANITIZE_NUMBER_INT );
1049
  $selected = 'selected="selected" ';
@@ -1060,7 +1093,7 @@ if ( !class_exists( 'WPSL_Frontend' ) ) {
1060
  /**
1061
  * Create the category filter.
1062
  *
1063
- * @since 2.0
1064
  * @return string|void $category The HTML for the category dropdown, or nothing if no terms exist.
1065
  */
1066
  public function create_category_filter() {
@@ -1092,7 +1125,7 @@ if ( !class_exists( 'WPSL_Frontend' ) ) {
1092
  * So when a user selected green.png in the admin panel. The JS on the front-end will end up
1093
  * loading green@2x.png to provide support for retina compatible devices.
1094
  *
1095
- * @since 1.0
1096
  * @param string $filename The name of the seleted marker
1097
  * @return string $filename The filename with @2x added to the end
1098
  */
@@ -1119,7 +1152,7 @@ if ( !class_exists( 'WPSL_Frontend' ) ) {
1119
  'search_radius'
1120
  );
1121
 
1122
- /* Strip out the default values that are wrapped in [] */
1123
  foreach ( $required_defaults as $required_default ) {
1124
  preg_match_all( '/\[([0-9]+?)\]/', $wpsl_settings[$required_default], $match, PREG_PATTERN_ORDER );
1125
  $output[$required_default] = $match[1][0];
@@ -1131,7 +1164,7 @@ if ( !class_exists( 'WPSL_Frontend' ) ) {
1131
  /**
1132
  * Load the required css styles.
1133
  *
1134
- * @since 2.0
1135
  * @return void
1136
  */
1137
  public function add_frontend_styles() {
@@ -1146,7 +1179,7 @@ if ( !class_exists( 'WPSL_Frontend' ) ) {
1146
  *
1147
  * The '&#xe800;' and '&#xe801;' code is for the icon font from fontello.com
1148
  *
1149
- * @since 2.0
1150
  * @return string The HTML for the map controls
1151
  */
1152
  public function get_map_controls() {
@@ -1192,7 +1225,7 @@ if ( !class_exists( 'WPSL_Frontend' ) ) {
1192
  *
1193
  * They are shown when the HTML Geolocation API returns an error.
1194
  *
1195
- * @since 2.0
1196
  * @return array $geolocation_errors
1197
  */
1198
  public function geolocation_errors() {
@@ -1208,16 +1241,16 @@ if ( !class_exists( 'WPSL_Frontend' ) ) {
1208
  }
1209
 
1210
  /**
1211
- * Load the required js scripts.
1212
  *
1213
- * @since 1.0
1214
  * @return void
1215
  */
1216
  public function add_frontend_scripts() {
1217
 
1218
  global $wpsl_settings, $wpsl;
1219
 
1220
- /* Only load the required js files on the store locator page or individual store pages. */
1221
  if ( empty( $this->load_scripts ) ) {
1222
  return;
1223
  }
@@ -1226,7 +1259,7 @@ if ( !class_exists( 'WPSL_Frontend' ) ) {
1226
 
1227
  $dropdown_defaults = $this->get_dropdown_defaults();
1228
 
1229
- wp_enqueue_script( 'wpsl-gmap', ( 'https://maps.google.com/maps/api/js?sensor=false' . wpsl_get_gmap_api_params() ), '', null, true );
1230
 
1231
  $base_settings = array(
1232
  'storeMarker' => $this->create_retina_filename( $wpsl_settings['store_marker'] ),
@@ -1265,32 +1298,32 @@ if ( !class_exists( 'WPSL_Frontend' ) ) {
1265
  'mapControls' => $this->get_map_controls(),
1266
  'mapTabAnchor' => apply_filters( 'wpsl_map_tab_anchor', 'wpsl-map-tab' )
1267
  );
1268
-
1269
- /* If the marker clusters are enabled, include the js file and marker settings */
1270
  if ( $wpsl_settings['marker_clusters'] ) {
1271
  wp_enqueue_script( 'wpsl-cluster', WPSL_URL . 'js/markerclusterer'. $min .'.js', '', WPSL_VERSION_NUM, true ); //not minified version is in the /js folder
1272
 
1273
  $base_settings['clusterZoom'] = $wpsl_settings['cluster_zoom'];
1274
  $base_settings['clusterSize'] = $wpsl_settings['cluster_size'];
1275
  }
1276
-
1277
- /* Check if we need to include the infobox script and settings */
1278
  if ( $wpsl_settings['infowindow_style'] == 'infobox' ) {
1279
  wp_enqueue_script( 'wpsl-infobox', WPSL_URL . 'js/infobox'. $min .'.js', array( 'wpsl-gmap' ), WPSL_VERSION_NUM, true ); // Not minified version is in the /js folder
1280
 
1281
  $base_settings['infoWindowStyle'] = $wpsl_settings['infowindow_style'];
1282
  $base_settings = $this->get_infobox_settings( $base_settings );
1283
  }
1284
-
1285
- /* Include the map style */
1286
  if ( !empty( $wpsl_settings['map_style'] ) ) {
1287
  $base_settings['mapStyle'] = strip_tags( stripslashes( json_decode( $wpsl_settings['map_style'] ) ) );
1288
  }
1289
-
1290
  wp_enqueue_script( 'wpsl-js', WPSL_URL . 'js/wpsl-gmap'. $min .'.js', array( 'jquery' ), WPSL_VERSION_NUM, true );
1291
  wp_enqueue_script( 'underscore' );
1292
-
1293
- /* Check if we need to include all the settings and labels or just a part of them */
1294
  if ( in_array( 'wpsl_store_locator', $this->load_scripts ) ) {
1295
  $settings = wp_parse_args( $base_settings, $locator_map_settings );
1296
  $template = 'wpsl_store_locator';
@@ -1307,18 +1340,18 @@ if ( !class_exists( 'WPSL_Frontend' ) ) {
1307
  'streetView' => $wpsl->i18n->get_translation( 'street_view_label', __( 'Street view', 'wpsl' ) ),
1308
  'zoomHere' => $wpsl->i18n->get_translation( 'zoom_here_label', __( 'Zoom here', 'wpsl' ) )
1309
  );
1310
-
1311
  wp_localize_script( 'wpsl-js', 'wpslLabels', $labels );
1312
  wp_localize_script( 'wpsl-js', 'wpslGeolocationErrors', $this->geolocation_errors() );
1313
  } else {
1314
  $template = '';
1315
  $settings = $base_settings;
1316
  }
1317
-
1318
  wp_localize_script( 'wpsl-js', 'wpslSettings', $settings );
1319
-
1320
  wpsl_create_underscore_templates( $template );
1321
-
1322
  if ( !empty( $this->store_map_data ) ) {
1323
  $i = 0;
1324
 
@@ -1333,7 +1366,7 @@ if ( !class_exists( 'WPSL_Frontend' ) ) {
1333
  /**
1334
  * Get the infobox settings.
1335
  *
1336
- * @since 2.0
1337
  * @see http://google-maps-utility-library-v3.googlecode.com/svn/trunk/infobox/docs/reference.html
1338
  * @param array $settings The plugin settings used on the front-end in js
1339
  * @return array $settings The plugin settings including the infobox settings
2
  /**
3
  * Frontend class
4
  *
5
+ * @author Tijmen Smit
6
+ * @since 1.0.0
7
  */
8
 
9
  if ( !defined( 'ABSPATH' ) ) exit;
13
  /**
14
  * Handle the frontend of the store locator
15
  *
16
+ * @since 1.0.0
17
  */
18
  class WPSL_Frontend {
19
 
20
  /**
21
  * Keep track which scripts we need to load
22
  *
23
+ * @since 2.0.0
24
  */
25
  private $load_scripts = array();
26
 
27
  /**
28
  * Keep track of the amount of maps on the page
29
  *
30
+ * @since 2.0.0
31
  */
32
  private static $map_count = 0;
33
 
56
  /**
57
  * Include the required front-end files.
58
  *
59
+ * @since 2.0.0
60
  * @return void
61
  */
62
  public function includes() {
66
  /**
67
  * Handle the Ajax search on the frontend.
68
  *
69
+ * @since 1.0.0
70
  * @return json A list of store locations that are located within the selected search radius
71
  */
72
  public function store_search() {
73
 
74
  global $wpsl, $wpsl_settings;
75
 
76
+ /*
77
+ * Check if auto loading the locations on page load is enabled.
78
  *
79
  * If so then we save the store data in a transient to prevent a long loading time
80
  * in case a large amount of locations need to be displayed.
85
  */
86
  if ( $wpsl_settings['autoload'] && isset( $_GET['autoload'] ) && $_GET['autoload'] && !$wpsl_settings['debug'] && !isset( $_GET['skip_cache'] ) ) {
87
 
88
+ /*
89
+ * If a multilingual plugin ( WPML or qTranslate X ) is active then we have
90
  * to make sure each language has his own unique transient. We do this by
91
  * including the lang code in the transient name.
92
  *
120
  * latlng of the searched location, and the latlng from
121
  * the stores in the db.
122
  *
123
+ * @since 2.0.0
124
  * @return void|array $store_data The list of stores that fall within the selected range.
125
  */
126
  public function find_nearby_locations() {
129
 
130
  $store_data = array();
131
 
132
+ /*
133
+ * Set the correct earth radius in either km or miles.
134
  * We need this to calculate the distance between two coordinates.
135
  */
136
  $radius = ( $wpsl_settings['distance_unit'] == 'km' ) ? 6371 : 3959;
137
 
138
+ // The placeholder values for the prepared statement in the sql query.
139
  $placeholder_values = array(
140
  $radius,
141
  $_GET['lat'],
143
  $_GET['lat']
144
  );
145
 
146
+ // Check if we need to filter the results by category.
147
  if ( isset( $_GET['filter'] ) && $_GET['filter'] ) {
148
  $placeholder_values[] = $_GET['filter'];
149
 
155
  $cat_filter = '';
156
  }
157
 
158
+ /*
159
  * If WPML is active we include 'GROUP BY lat' in the sql query
160
  * to prevent duplicate locations from showing up in the results.
161
  *
170
  $group_by = '';
171
  }
172
 
173
+ /*
174
+ * If autoload is enabled we need to check if there is a limit to the
175
  * amount of locations we need to show.
176
  *
177
  * Otherwise include the radius and max results limit in the sql query.
192
 
193
  $placeholder_values = apply_filters( 'wpsl_sql_placeholder_values', $placeholder_values );
194
 
195
+ /*
196
+ * The sql that will check which store locations fall within
197
  * the selected radius based on the lat and lng values.
198
  */
199
  $sql = apply_filters( 'wpsl_sql',
212
 
213
  $stores = $wpdb->get_results( $wpdb->prepare( $sql, $placeholder_values ) );
214
 
215
+ if ( $stores ) {
216
  $store_data = apply_filters( 'wpsl_store_data', $this->get_store_meta_data( $stores ) );
217
  }
218
 
222
  /**
223
  * Get the post meta data for the selected stores.
224
  *
225
+ * @since 2.0.0
226
  * @param object $stores
227
  * @return array $all_stores The stores that fall within the selected range with the post meta data.
228
  */
233
  $all_stores = array();
234
  $include_post_content = apply_filters( 'wpsl_include_post_content', false );
235
 
236
+ // Get the list of store fields that we need to filter out of the post meta data.
237
  $meta_field_map = $this->frontend_meta_fields();
238
 
239
  foreach ( $stores as $store_key => $store ) {
240
 
241
+ // If WPML is active try to get the id of the translated page.
242
  if ( $wpsl->i18n->wpml_exists() ) {
243
  $store->ID = $wpsl->i18n->maybe_get_wpml_id( $store->ID );
244
 
247
  }
248
  }
249
 
250
+ // Get the post meta data for each store that was within the range of the search radius.
251
  $custom_fields = get_post_custom( $store->ID );
252
 
253
  foreach ( $meta_field_map as $meta_key => $meta_value ) {
259
  $meta_type = '';
260
  }
261
 
262
+ // If we need to hide the opening hours, and the current meta type is set to hours we skip it.
263
  if ( $wpsl_settings['hide_hours'] && $meta_type == 'hours' ) {
264
  continue;
265
  }
266
 
267
+ // Make sure the data is safe to use on the frontend and in the format we expect it to be.
268
  switch ( $meta_type ) {
269
  case 'numeric':
270
  $meta_data = ( is_numeric( $custom_fields[$meta_key][0] ) ) ? $custom_fields[$meta_key][0] : 0 ;
292
  $store_meta[$meta_value['name']] = '';
293
  }
294
 
295
+ /*
296
+ * Include the post content if the "More info" option is enabled on the settings page,
297
  * or if $include_post_content is set to true through the 'wpsl_include_post_content' filter.
298
  */
299
  if ( ( $wpsl_settings['more_info'] && $wpsl_settings['more_info_location'] == 'store listings' ) || $include_post_content ) {
330
  *
331
  * If no type is set it will default to sanitize_text_field.
332
  *
333
+ * @since 2.0.0
334
  * @return array $store_fields The names of the meta fields used by the store
335
  */
336
  public function frontend_meta_fields() {
388
  /**
389
  * Get the store thumbnail.
390
  *
391
+ * @since 2.0.0
392
  * @param string $post_id The post id of the store
393
  * @param string $store_name The name of the store
394
  * @return void|string $thumb The html img tag
408
  /**
409
  * Get the store thumbnail size.
410
  *
411
+ * @since 2.0.0
412
  * @return array $size The thumb format
413
  */
414
  public function get_store_thumb_size() {
426
  *
427
  * Note: The opening hours can only be set in the textarea format by users who upgraded from 1.x.
428
  *
429
+ * @since 2.0.0
430
  * @param array|string $hours The opening hours
431
  * @param boolean $hide_closed Hide the days were the location is closed
432
  * @return string $hours The formated opening hours
435
 
436
  $hours = maybe_unserialize( $hours );
437
 
438
+ /*
439
+ * If the hours are set through the dropdown then we create a table for the opening hours.
440
  * Otherwise we output the data entered in the textarea.
441
  */
442
  if ( is_array( $hours ) ) {
451
  /**
452
  * Create a table for the opening hours.
453
  *
454
+ * @since 2.0.0
455
+ * @todo add schema.org support.
456
  * @param array $hours The opening hours
457
  * @param boolean $hide_closed Hide the days where the location is closed
458
  * @return string $hour_table The opening hours sorted in a table
461
 
462
  $opening_days = wpsl_get_weekdays();
463
 
464
+ // Make sure that we have actual opening hours, and not every day is empty.
465
  if ( $this->not_always_closed( $hours ) ) {
466
  $hour_table = '<table class="wpsl-opening-hours">';
467
 
469
  $i = 0;
470
  $hour_count = count( $hours[$index] );
471
 
472
+ // If we need to hide days that are set to closed then skip them.
473
  if ( $hide_closed && !$hour_count ) {
474
  continue;
475
  }
477
  $hour_table .= '<tr>';
478
  $hour_table .= '<td>' . esc_html( $day ) . '</td>';
479
 
480
+ // If we have opening hours we show them, otherwise just show 'Closed'.
481
  if ( $hour_count > 0 ) {
482
  $hour_table .= '<td>';
483
 
509
  * create a single-wpsl_stores.php file in your theme folder.
510
  * You can see an example here http://wpstorelocator.co/document/create-custom-store-page-template/
511
  *
512
+ * @since 2.0.0
513
  * @param string $content
514
  * @return string $content
515
  */
534
  /**
535
  * Handle the [wpsl] shortcode.
536
  *
537
+ * @since 1.0.0
538
  * @param array $atts Shortcode attributes
539
  * @return string $output The wpsl template
540
  */
542
 
543
  global $wpsl_settings;
544
 
545
+ // Accept a 'template' attribute to specify the template ID e.g. "default" or "below_map".
546
  $atts = shortcode_atts( array(
547
  'template' => $wpsl_settings['template_id']
548
  ), $atts );
549
 
550
+ // Make sure the required scripts are included for the wpsl shortcode.
551
  array_push( $this->load_scripts, 'wpsl_store_locator' );
552
 
553
  $template_list = wpsl_get_templates();
554
  $template_path = '';
555
 
556
+ // Loop over the template list and look for a matching id with the one set on the settings page.
557
  foreach ( $template_list as $template ) {
558
  if ( $atts['template'] == $template['id'] ) {
559
  $template_path = $template['path'];
561
  }
562
  }
563
 
564
+ // Check if we have a template path and the file exists, otherwise we use the default template.
565
  if ( !$template_path || ( !file_exists( $template_path ) ) ) {
566
  $template_path = WPSL_PLUGIN_DIR . 'frontend/templates/default.php';
567
  }
573
 
574
  /**
575
  * Handle the [wpsl_address] shortcode.
576
+ *
577
+ * @since 2.0.0
578
+ * @todo add schema.org support.
579
  * @param array $atts Shortcode attributes
580
  * @return void|string $output The store address
581
  */
583
 
584
  global $post, $wpsl_settings, $wpsl;
585
 
586
+ $atts = $this->bool_check( shortcode_atts( apply_filters( 'wpsl_address_shortcode_defaults', array(
587
  'id' => '',
588
  'name' => true,
589
  'address' => true,
596
  'fax' => true,
597
  'email' => true,
598
  'url' => true
599
+ ) ), $atts ) );
600
 
601
  if ( get_post_type() == 'wpsl_stores' ) {
602
  if ( empty( $atts['id'] ) ) {
630
  $count = count( $address_format );
631
  $i = 1;
632
 
633
+ // Loop over the address parts to make sure they are shown in the right order.
634
  foreach ( $address_format as $address_part ) {
635
 
636
+ // Make sure the shortcode attribute is set to true for the $address_part, and it's not the 'comma' part.
637
  if ( $address_part != 'comma' && $atts[$address_part] ) {
638
  $post_meta = get_post_meta( $atts['id'], 'wpsl_' . $address_part, true );
639
 
640
  if ( $post_meta ) {
641
 
642
+ /*
643
+ * Check if the next part of the address is set to 'comma'.
644
  * If so add the, after the current address part, otherwise just show a space
645
  */
646
  if ( isset( $address_format[$i] ) && ( $address_format[$i] == 'comma' ) ) {
649
  $punctuation = ' ';
650
  }
651
 
652
+ // If we have reached the last item add a <br /> behind it.
653
  $br = ( $count == $i ) ? '<br />' : '';
654
 
655
  $content .= '<span>' . esc_html( $post_meta ) . $punctuation . '</span>' . $br;
665
 
666
  $content .= '</div>';
667
 
668
+ // If either the phone, fax, email or url is set to true, then add the wrap div for the contact details.
669
  if ( $atts['phone'] || $atts['fax'] || $atts['email'] || $atts['url'] ) {
670
  $content .= '<div class="wpsl-contact-details">';
671
 
672
  if ( $atts['phone'] && $store_phone = get_post_meta( $atts['id'], 'wpsl_phone', true ) ) {
673
+ $content .= esc_html( $wpsl->i18n->get_translation( 'phone_label', __( 'Phone', 'wpsl' ) ) ) . ': <span>' . esc_html( $store_phone ) . '</span><br/>';
674
  }
675
 
676
  if ( $atts['fax'] && $store_fax = get_post_meta( $atts['id'], 'wpsl_fax', true ) ) {
677
+ $content .= esc_html( $wpsl->i18n->get_translation( 'fax_label', __( 'Fax', 'wpsl' ) ) ) . ': <span>' . esc_html( $store_fax ) . '</span><br/>';
678
  }
679
 
680
  if ( $atts['email'] && $store_email = get_post_meta( $atts['id'], 'wpsl_email', true ) ) {
681
+ $content .= esc_html( $wpsl->i18n->get_translation( 'email_label', __( 'Email', 'wpsl' ) ) ) . ': <span>' . sanitize_email( $store_email ) . '</span><br/>';
682
  }
683
 
684
  if ( $atts['url'] && $store_url = get_post_meta( $atts['id'], 'wpsl_url', true ) ) {
685
  $new_window = ( $wpsl_settings['new_window'] ) ? 'target="_blank"' : '' ;
686
+ $content .= esc_html( $wpsl->i18n->get_translation( 'url_label', __( 'Url', 'wpsl' ) ) ) . ': <a ' . $new_window . ' href="' . esc_url( $store_url ) . '">' . esc_url( $store_url ) . '</a><br/>';
687
  }
688
 
689
  $content .= '</div>';
697
  /**
698
  * Handle the [wpsl_hours] shortcode.
699
  *
700
+ * @since 2.0.0
701
  * @param array $atts Shortcode attributes
702
  * @return void|string $output The opening hours
703
  */
705
 
706
  global $post;
707
 
708
+ $atts = $this->bool_check( shortcode_atts( apply_filters( 'wpsl_hour_shortcode_defaults', array(
709
  'id' => '',
710
  'hide_closed' => false
711
+ ) ), $atts ) );
712
 
713
  if ( get_post_type() == 'wpsl_stores' ) {
714
  if ( empty( $atts['id'] ) ) {
731
  }
732
  }
733
 
734
+ /**
735
+ * Make sure the shortcode attributes are booleans
736
+ * when they are expected to be.
737
+ *
738
+ * @since 2.0.4
739
+ * @param array $atts Shortcode attributes
740
+ * @return array $atts Shortcode attributes
741
+ */
742
+ public function bool_check( $atts ) {
743
+
744
+ foreach ( $atts as $key => $val ) {
745
+ if ( in_array( $val, array( 'true', '1', 'yes', 'on' ) ) ) {
746
+ $atts[$key] = true;
747
+ } else if ( in_array( $val, array( 'false', '0', 'no', 'off' ) ) ) {
748
+ $atts[$key] = false;
749
+ }
750
+ }
751
+
752
+ return $atts;
753
+ }
754
+
755
  /**
756
  * Handle the [wpsl_map] shortcode.
757
  *
758
+ * @since 2.0.0
759
  * @param array $atts Shortcode attributes
760
  * @return string $output The html for the map
761
  */
798
  $lat = get_post_meta( $store_id, 'wpsl_lat', true );
799
  $lng = get_post_meta( $store_id, 'wpsl_lng', true );
800
 
801
+ // Make sure the latlng is numeric before collecting the other meta data.
802
  if ( is_numeric( $lat ) && is_numeric( $lng ) ) {
803
  $store_meta[$i] = apply_filters( 'wpsl_cpt_info_window_meta_fields', array(
804
  'store' => get_the_title( $store_id ),
820
 
821
  $output = '<div id="wpsl-base-gmap_' . self::$map_count . '" class="wpsl-gmap-canvas"></div>' . "\r\n";
822
 
823
+ // Make sure the shortcode attributes are valid.
824
  $map_styles = $this->check_map_shortcode_atts( $atts );
825
 
826
  if ( $map_styles ) {
848
  *
849
  * The values are send to wp_localize_script in add_frontend_scripts.
850
  *
851
+ * @since 2.0.0
852
  * @param array $atts The map style shortcode attributes
853
  * @return array $map_atts Validated map style shortcode attributes
854
  */
906
  /**
907
  * Set the shortcode attribute to either 1 or 0.
908
  *
909
+ * @since 2.0.0
910
  * @param string $att The shortcode attribute val
911
  * @return int $att_val Either 1 or 0
912
  */
924
  /**
925
  * Make sure the filter contains a valid value, otherwise use the default value.
926
  *
927
+ * @since 2.0.0
928
  * @return string $filter_value The filter value
929
  */
930
  public function check_store_filter( $filter ) {
941
  /**
942
  * Get the default selected value for a dropdown.
943
  *
944
+ * @since 1.0.0
945
  * @param string $type The request list type
946
  * @return string $response The default list value
947
  */
952
 
953
  foreach ( $list_values as $k => $list_value ) {
954
 
955
+ // The default radius has a [] wrapped around it, so we check for that and filter out the [].
956
  if ( strpos( $list_value, '[' ) !== false ) {
957
  $response = filter_var( $list_value, FILTER_SANITIZE_NUMBER_INT );
958
  break;
965
  /**
966
  * Check if we have a opening day that has an value, if not they are all set to closed.
967
  *
968
+ * @since 2.0.0
969
  * @param array $opening_hours The opening hours
970
  * @return boolean True if a day is found that isn't empty
971
  */
981
  /**
982
  * Create the css rules based on the height / max-width that is set on the settings page.
983
  *
984
+ * @since 1.0.0
985
  * @return string $css The custom css rules
986
  */
987
  public function get_custom_css() {
1003
  $css .= "\t" . "#wpsl-stores, #wpsl-direction-details, #wpsl-gmap {height:" . esc_attr( $wpsl_settings['height'] ) . "px !important;}" . "\r\n";
1004
  }
1005
 
1006
+ /*
1007
+ * If the category dropdowns are enabled then we make it
1008
+ * the same width as the search input field.
1009
+ */
1010
  if ( $wpsl_settings['category_dropdown'] ) {
1011
  $cat_elem = ',#wpsl-category .wpsl-dropdown';
1012
  } else {
1024
  /**
1025
  * Collect the CSS classes that are placed on the outer store locator div.
1026
  *
1027
+ * @since 2.0.0
1028
  * @return string $classes The custom CSS rules
1029
  */
1030
  public function get_css_classes() {
1056
  * Collect all the attributes (language, key, region)
1057
  * we need before making a request to the Google Maps API.
1058
  *
1059
+ * @since 1.0.0
1060
  * @param string $list_type The name of the list we need to load data for
1061
  * @return string $dropdown_list A list with the available options for the dropdown list
1062
  */
1067
  $dropdown_list = '';
1068
  $settings = explode( ',', $wpsl_settings[$list_type] );
1069
 
1070
+ // Only show the distance unit if we are dealing with the search radius.
1071
  if ( $list_type == 'search_radius' ) {
1072
  $distance_unit = ' '. esc_attr( $wpsl_settings['distance_unit'] );
1073
  } else {
1076
 
1077
  foreach ( $settings as $index => $setting_value ) {
1078
 
1079
+ // The default radius has a [] wrapped around it, so we check for that and filter out the [].
1080
  if ( strpos( $setting_value, '[' ) !== false ) {
1081
  $setting_value = filter_var( $setting_value, FILTER_SANITIZE_NUMBER_INT );
1082
  $selected = 'selected="selected" ';
1093
  /**
1094
  * Create the category filter.
1095
  *
1096
+ * @since 2.0.0
1097
  * @return string|void $category The HTML for the category dropdown, or nothing if no terms exist.
1098
  */
1099
  public function create_category_filter() {
1125
  * So when a user selected green.png in the admin panel. The JS on the front-end will end up
1126
  * loading green@2x.png to provide support for retina compatible devices.
1127
  *
1128
+ * @since 1.0.0
1129
  * @param string $filename The name of the seleted marker
1130
  * @return string $filename The filename with @2x added to the end
1131
  */
1152
  'search_radius'
1153
  );
1154
 
1155
+ // Strip out the default values that are wrapped in [].
1156
  foreach ( $required_defaults as $required_default ) {
1157
  preg_match_all( '/\[([0-9]+?)\]/', $wpsl_settings[$required_default], $match, PREG_PATTERN_ORDER );
1158
  $output[$required_default] = $match[1][0];
1164
  /**
1165
  * Load the required css styles.
1166
  *
1167
+ * @since 2.0.0
1168
  * @return void
1169
  */
1170
  public function add_frontend_styles() {
1179
  *
1180
  * The '&#xe800;' and '&#xe801;' code is for the icon font from fontello.com
1181
  *
1182
+ * @since 2.0.0
1183
  * @return string The HTML for the map controls
1184
  */
1185
  public function get_map_controls() {
1225
  *
1226
  * They are shown when the HTML Geolocation API returns an error.
1227
  *
1228
+ * @since 2.0.0
1229
  * @return array $geolocation_errors
1230
  */
1231
  public function geolocation_errors() {
1241
  }
1242
 
1243
  /**
1244
+ * Load the required JS scripts.
1245
  *
1246
+ * @since 1.0.0
1247
  * @return void
1248
  */
1249
  public function add_frontend_scripts() {
1250
 
1251
  global $wpsl_settings, $wpsl;
1252
 
1253
+ // Only load the required js files on the store locator page or individual store pages.
1254
  if ( empty( $this->load_scripts ) ) {
1255
  return;
1256
  }
1259
 
1260
  $dropdown_defaults = $this->get_dropdown_defaults();
1261
 
1262
+ wp_enqueue_script( 'wpsl-gmap', ( 'https://maps.google.com/maps/api/js' . wpsl_get_gmap_api_params() ), '', null, true );
1263
 
1264
  $base_settings = array(
1265
  'storeMarker' => $this->create_retina_filename( $wpsl_settings['store_marker'] ),
1298
  'mapControls' => $this->get_map_controls(),
1299
  'mapTabAnchor' => apply_filters( 'wpsl_map_tab_anchor', 'wpsl-map-tab' )
1300
  );
1301
+
1302
+ // If the marker clusters are enabled, include the js file and marker settings.
1303
  if ( $wpsl_settings['marker_clusters'] ) {
1304
  wp_enqueue_script( 'wpsl-cluster', WPSL_URL . 'js/markerclusterer'. $min .'.js', '', WPSL_VERSION_NUM, true ); //not minified version is in the /js folder
1305
 
1306
  $base_settings['clusterZoom'] = $wpsl_settings['cluster_zoom'];
1307
  $base_settings['clusterSize'] = $wpsl_settings['cluster_size'];
1308
  }
1309
+
1310
+ // Check if we need to include the infobox script and settings.
1311
  if ( $wpsl_settings['infowindow_style'] == 'infobox' ) {
1312
  wp_enqueue_script( 'wpsl-infobox', WPSL_URL . 'js/infobox'. $min .'.js', array( 'wpsl-gmap' ), WPSL_VERSION_NUM, true ); // Not minified version is in the /js folder
1313
 
1314
  $base_settings['infoWindowStyle'] = $wpsl_settings['infowindow_style'];
1315
  $base_settings = $this->get_infobox_settings( $base_settings );
1316
  }
1317
+
1318
+ // Include the map style.
1319
  if ( !empty( $wpsl_settings['map_style'] ) ) {
1320
  $base_settings['mapStyle'] = strip_tags( stripslashes( json_decode( $wpsl_settings['map_style'] ) ) );
1321
  }
1322
+
1323
  wp_enqueue_script( 'wpsl-js', WPSL_URL . 'js/wpsl-gmap'. $min .'.js', array( 'jquery' ), WPSL_VERSION_NUM, true );
1324
  wp_enqueue_script( 'underscore' );
1325
+
1326
+ // Check if we need to include all the settings and labels or just a part of them.
1327
  if ( in_array( 'wpsl_store_locator', $this->load_scripts ) ) {
1328
  $settings = wp_parse_args( $base_settings, $locator_map_settings );
1329
  $template = 'wpsl_store_locator';
1340
  'streetView' => $wpsl->i18n->get_translation( 'street_view_label', __( 'Street view', 'wpsl' ) ),
1341
  'zoomHere' => $wpsl->i18n->get_translation( 'zoom_here_label', __( 'Zoom here', 'wpsl' ) )
1342
  );
1343
+
1344
  wp_localize_script( 'wpsl-js', 'wpslLabels', $labels );
1345
  wp_localize_script( 'wpsl-js', 'wpslGeolocationErrors', $this->geolocation_errors() );
1346
  } else {
1347
  $template = '';
1348
  $settings = $base_settings;
1349
  }
1350
+
1351
  wp_localize_script( 'wpsl-js', 'wpslSettings', $settings );
1352
+
1353
  wpsl_create_underscore_templates( $template );
1354
+
1355
  if ( !empty( $this->store_map_data ) ) {
1356
  $i = 0;
1357
 
1366
  /**
1367
  * Get the infobox settings.
1368
  *
1369
+ * @since 2.0.0
1370
  * @see http://google-maps-utility-library-v3.googlecode.com/svn/trunk/infobox/docs/reference.html
1371
  * @param array $settings The plugin settings used on the front-end in js
1372
  * @return array $settings The plugin settings including the infobox settings
frontend/underscore-functions.php CHANGED
@@ -4,7 +4,7 @@
4
  *
5
  * The template is created in JS with _.template, see http://underscorejs.org/#template
6
  *
7
- * @since 2.0
8
  * @param string $template The type of template we need to create
9
  * @return void
10
  */
@@ -95,7 +95,7 @@ function wpsl_create_underscore_templates( $template ) {
95
  /**
96
  * Create the more info template.
97
  *
98
- * @since 2.0
99
  * @return string $more_info_template The template that is used to show the "More info" content
100
  */
101
  function wpsl_more_info_template() {
@@ -148,7 +148,7 @@ function wpsl_more_info_template() {
148
  /**
149
  * Create the store header template.
150
  *
151
- * @since 2.0
152
  * @param string $location The location where the header is shown ( info_window or listing )
153
  * @return string $header_template The template for the store header
154
  */
@@ -162,7 +162,8 @@ function wpsl_store_header_template( $location = 'info_window' ) {
162
  $new_window = '';
163
  }
164
 
165
- /* To keep the code readable in the HTML source we ( unfortunately ) need to adjust the
 
166
  * amount of tabs in front of it based on the location were it is shown.
167
  */
168
  if ( $location == 'listing') {
@@ -187,7 +188,7 @@ function wpsl_store_header_template( $location = 'info_window' ) {
187
  /**
188
  * Create the address placeholders based on the structure defined on the settings page.
189
  *
190
- * @since 2.0
191
  * @return string $address_placeholders A list of address placeholders in the correct order
192
  */
193
  function wpsl_address_format_placeholders() {
@@ -202,7 +203,8 @@ function wpsl_address_format_placeholders() {
202
  foreach ( $address_format as $address_part ) {
203
  if ( $address_part != 'comma' ) {
204
 
205
- /* Don't add a space after the placeholder if the next part
 
206
  * is going to be a comma or if it is the last part.
207
  */
208
  if ( $i == $part_count || $address_format[$i + 1] == 'comma' ) {
4
  *
5
  * The template is created in JS with _.template, see http://underscorejs.org/#template
6
  *
7
+ * @since 2.0.0
8
  * @param string $template The type of template we need to create
9
  * @return void
10
  */
95
  /**
96
  * Create the more info template.
97
  *
98
+ * @since 2.0.0
99
  * @return string $more_info_template The template that is used to show the "More info" content
100
  */
101
  function wpsl_more_info_template() {
148
  /**
149
  * Create the store header template.
150
  *
151
+ * @since 2.0.0
152
  * @param string $location The location where the header is shown ( info_window or listing )
153
  * @return string $header_template The template for the store header
154
  */
162
  $new_window = '';
163
  }
164
 
165
+ /*
166
+ * To keep the code readable in the HTML source we ( unfortunately ) need to adjust the
167
  * amount of tabs in front of it based on the location were it is shown.
168
  */
169
  if ( $location == 'listing') {
188
  /**
189
  * Create the address placeholders based on the structure defined on the settings page.
190
  *
191
+ * @since 2.0.0
192
  * @return string $address_placeholders A list of address placeholders in the correct order
193
  */
194
  function wpsl_address_format_placeholders() {
203
  foreach ( $address_format as $address_part ) {
204
  if ( $address_part != 'comma' ) {
205
 
206
+ /*
207
+ * Don't add a space after the placeholder if the next part
208
  * is going to be a comma or if it is the last part.
209
  */
210
  if ( $i == $part_count || $address_format[$i + 1] == 'comma' ) {
inc/class-i18n.php CHANGED
@@ -2,8 +2,8 @@
2
  /**
3
  * i18n class
4
  *
5
- * @package WP_Store_locator
6
- * @since 2.0
7
  */
8
 
9
  if ( !defined( 'ABSPATH' ) ) exit;
@@ -26,7 +26,7 @@ if ( !class_exists( 'WPSL_i18n' ) ) {
26
  /**
27
  * Load the translations from the language folder
28
  *
29
- * @since 2.0
30
  * @return void
31
  */
32
  public function load_plugin_textdomain() {
@@ -34,17 +34,17 @@ if ( !class_exists( 'WPSL_i18n' ) ) {
34
  $domain = 'wpsl';
35
  $locale = apply_filters( 'plugin_locale', get_locale(), $domain );
36
 
37
- /* Load the language file from the /wp-content/languages/wp-store-locator folder, custom + update proof translations */
38
  load_textdomain( $domain, WP_LANG_DIR . '/wp-store-locator/' . $domain . '-' . $locale . '.mo' );
39
 
40
- /* Load the language file from the /wp-content/plugins/wp-store-locator/languages/ folder */
41
  load_plugin_textdomain( $domain, false, dirname( WPSL_BASENAME ) . '/languages/' );
42
  }
43
 
44
  /**
45
  * Check if WPML is active
46
  *
47
- * @since 2.0
48
  * @return boolean|null
49
  */
50
  public function wpml_exists() {
@@ -59,7 +59,7 @@ if ( !class_exists( 'WPSL_i18n' ) ) {
59
  /**
60
  * Check if a qTranslate compatible plugin is active.
61
  *
62
- * @since 2.0
63
  * @return boolean|null
64
  */
65
  public function qtrans_exists() {
@@ -74,7 +74,7 @@ if ( !class_exists( 'WPSL_i18n' ) ) {
74
  /**
75
  * See if there is a translated page available for the provided store ID.
76
  *
77
- * @since 2.0
78
  * @see https://wpml.org/documentation/support/creating-multilingual-wordpress-themes/language-dependent-ids/#2
79
  * @param string $store_id
80
  * @return string empty or the id of the translated store
@@ -84,7 +84,7 @@ if ( !class_exists( 'WPSL_i18n' ) ) {
84
  $return_original_id = apply_filters( 'wpsl_return_original_wpml_id', true );
85
  $translated_id = icl_object_id( $store_id, 'wpsl_stores', $return_original_id, ICL_LANGUAGE_CODE );
86
 
87
- /* If '$return_original_id' is set to false, NULL is returned if no translation exists. */
88
  if ( is_null( $translated_id ) ) {
89
  $translated_id = '';
90
  }
@@ -95,7 +95,7 @@ if ( !class_exists( 'WPSL_i18n' ) ) {
95
  /**
96
  * Translate with a qTranslate compatible plugin.
97
  *
98
- * @since 2.0
99
  * @param string $text The original text
100
  * @return string $translation The translated text
101
  */
@@ -111,12 +111,12 @@ if ( !class_exists( 'WPSL_i18n' ) ) {
111
  }
112
 
113
  /**
114
- * Get the correct translation
115
  *
116
  * Return the translated text from either WPML or qTranslate
117
  * or the translation that was set on the settings page.
118
  *
119
- * @since 2.0
120
  * @param string $name The name of the translated string
121
  * @param string $text The text of the translated string
122
  * @return string The translation
@@ -146,7 +146,7 @@ if ( !class_exists( 'WPSL_i18n' ) ) {
146
  * If a multilingual plugin like WPML or qTranslate X is active
147
  * we return the active language code.
148
  *
149
- * @since 2.0
150
  * @return string Empty or the current language code
151
  */
152
  public function check_multilingual_code() {
2
  /**
3
  * i18n class
4
  *
5
+ * @author Tijmen Smit
6
+ * @since 2.0.0
7
  */
8
 
9
  if ( !defined( 'ABSPATH' ) ) exit;
26
  /**
27
  * Load the translations from the language folder
28
  *
29
+ * @since 2.0.0
30
  * @return void
31
  */
32
  public function load_plugin_textdomain() {
34
  $domain = 'wpsl';
35
  $locale = apply_filters( 'plugin_locale', get_locale(), $domain );
36
 
37
+ // Load the language file from the /wp-content/languages/wp-store-locator folder, custom + update proof translations.
38
  load_textdomain( $domain, WP_LANG_DIR . '/wp-store-locator/' . $domain . '-' . $locale . '.mo' );
39
 
40
+ // Load the language file from the /wp-content/plugins/wp-store-locator/languages/ folder.
41
  load_plugin_textdomain( $domain, false, dirname( WPSL_BASENAME ) . '/languages/' );
42
  }
43
 
44
  /**
45
  * Check if WPML is active
46
  *
47
+ * @since 2.0.0
48
  * @return boolean|null
49
  */
50
  public function wpml_exists() {
59
  /**
60
  * Check if a qTranslate compatible plugin is active.
61
  *
62
+ * @since 2.0.0
63
  * @return boolean|null
64
  */
65
  public function qtrans_exists() {
74
  /**
75
  * See if there is a translated page available for the provided store ID.
76
  *
77
+ * @since 2.0.0
78
  * @see https://wpml.org/documentation/support/creating-multilingual-wordpress-themes/language-dependent-ids/#2
79
  * @param string $store_id
80
  * @return string empty or the id of the translated store
84
  $return_original_id = apply_filters( 'wpsl_return_original_wpml_id', true );
85
  $translated_id = icl_object_id( $store_id, 'wpsl_stores', $return_original_id, ICL_LANGUAGE_CODE );
86
 
87
+ // If '$return_original_id' is set to false, NULL is returned if no translation exists.
88
  if ( is_null( $translated_id ) ) {
89
  $translated_id = '';
90
  }
95
  /**
96
  * Translate with a qTranslate compatible plugin.
97
  *
98
+ * @since 2.0.0
99
  * @param string $text The original text
100
  * @return string $translation The translated text
101
  */
111
  }
112
 
113
  /**
114
+ * Get the correct translation.
115
  *
116
  * Return the translated text from either WPML or qTranslate
117
  * or the translation that was set on the settings page.
118
  *
119
+ * @since 2.0.0
120
  * @param string $name The name of the translated string
121
  * @param string $text The text of the translated string
122
  * @return string The translation
146
  * If a multilingual plugin like WPML or qTranslate X is active
147
  * we return the active language code.
148
  *
149
+ * @since 2.0.0
150
  * @return string Empty or the current language code
151
  */
152
  public function check_multilingual_code() {
inc/class-post-types.php CHANGED
@@ -1,10 +1,10 @@
1
  <?php
2
  /**
3
- * Store Locator custom post type
4
  *
5
- * @package WP_Store_locator
6
- * @since 2.0
7
- */
8
 
9
  if ( !defined( 'ABSPATH' ) ) exit;
10
 
@@ -29,14 +29,14 @@ if ( !class_exists( 'WPSL_Post_Types' ) ) {
29
  /**
30
  * Register the WPSL post type.
31
  *
32
- * @since 2.0
33
  * @return void
34
  */
35
  public function register_post_types() {
36
 
37
  global $wpsl_settings;
38
 
39
- /* Enable permalinks for the post type? */
40
  if ( isset( $wpsl_settings['permalinks'] ) && $wpsl_settings['permalinks'] ) {
41
  $public = true;
42
  $exclude_from_search = false;
@@ -50,7 +50,7 @@ if ( !class_exists( 'WPSL_Post_Types' ) ) {
50
  $singular = __( 'Store', 'wpsl' );
51
  $plural = __( 'Stores', 'wpsl' );
52
 
53
- /* The labels for the wpsl_stores post type */
54
  $labels = apply_filters( 'wpsl_post_type_labels', array(
55
  'name' => __( 'Store Locator', 'wpsl' ),
56
  'all_items' => sprintf( __( 'All %s', 'wpsl' ), $plural ),
@@ -66,7 +66,7 @@ if ( !class_exists( 'WPSL_Post_Types' ) ) {
66
  )
67
  );
68
 
69
- /* The arguments for the wpsl_stores post type */
70
  $args = apply_filters( 'wpsl_post_type_args', array(
71
  'labels' => $labels,
72
  'public' => $public,
@@ -87,14 +87,14 @@ if ( !class_exists( 'WPSL_Post_Types' ) ) {
87
  /**
88
  * Register the WPSL custom taxonomy.
89
  *
90
- * @since 2.0
91
  * @return void
92
  */
93
  public function register_taxonomies() {
94
 
95
  global $wpsl_settings;
96
 
97
- /* Enable permalinks for the taxonomy? */
98
  if ( isset( $wpsl_settings['permalinks'] ) && $wpsl_settings['permalinks'] ) {
99
  $public = true;
100
  $rewrite = array( 'slug' => $wpsl_settings['category_slug'] );
@@ -135,7 +135,7 @@ if ( !class_exists( 'WPSL_Post_Types' ) ) {
135
  /**
136
  * Change the default "Enter title here" placeholder.
137
  *
138
- * @since 2.0
139
  * @param string $title The default title placeholder
140
  * @return string $title The new title placeholder
141
  */
@@ -153,7 +153,7 @@ if ( !class_exists( 'WPSL_Post_Types' ) ) {
153
  /**
154
  * Add new columns to the store list table.
155
  *
156
- * @since 2.0
157
  * @param array $columns The default columns
158
  * @return array $columns Updated column list
159
  */
@@ -170,7 +170,7 @@ if ( !class_exists( 'WPSL_Post_Types' ) ) {
170
  /**
171
  * Show the correct store content in the correct custom column.
172
  *
173
- * @since 2.0
174
  * @param string $column The column name
175
  * @param int $post_id The post id
176
  * @return void
@@ -196,7 +196,7 @@ if ( !class_exists( 'WPSL_Post_Types' ) ) {
196
  /**
197
  * Define the columns that are sortable.
198
  *
199
- * @since 2.0
200
  * @param array $columns List of sortable columns
201
  * @return array
202
  */
@@ -215,7 +215,7 @@ if ( !class_exists( 'WPSL_Post_Types' ) ) {
215
  /**
216
  * Set the correct column sort parameters.
217
  *
218
- * @since 2.0
219
  * @param array $vars Column sorting parameters
220
  * @return array $vars The column sorting parameters inc the correct orderby and wpsl meta_key
221
  */
1
  <?php
2
  /**
3
+ * Store Locator custom post type.
4
  *
5
+ * @author Tijmen Smit
6
+ * @since 2.0.0
7
+ */
8
 
9
  if ( !defined( 'ABSPATH' ) ) exit;
10
 
29
  /**
30
  * Register the WPSL post type.
31
  *
32
+ * @since 2.0.0
33
  * @return void
34
  */
35
  public function register_post_types() {
36
 
37
  global $wpsl_settings;
38
 
39
+ // Enable permalinks for the post type?
40
  if ( isset( $wpsl_settings['permalinks'] ) && $wpsl_settings['permalinks'] ) {
41
  $public = true;
42
  $exclude_from_search = false;
50
  $singular = __( 'Store', 'wpsl' );
51
  $plural = __( 'Stores', 'wpsl' );
52
 
53
+ // The labels for the wpsl_stores post type.
54
  $labels = apply_filters( 'wpsl_post_type_labels', array(
55
  'name' => __( 'Store Locator', 'wpsl' ),
56
  'all_items' => sprintf( __( 'All %s', 'wpsl' ), $plural ),
66
  )
67
  );
68
 
69
+ // The arguments for the wpsl_stores post type.
70
  $args = apply_filters( 'wpsl_post_type_args', array(
71
  'labels' => $labels,
72
  'public' => $public,
87
  /**
88
  * Register the WPSL custom taxonomy.
89
  *
90
+ * @since 2.0.0
91
  * @return void
92
  */
93
  public function register_taxonomies() {
94
 
95
  global $wpsl_settings;
96
 
97
+ // Enable permalinks for the taxonomy?
98
  if ( isset( $wpsl_settings['permalinks'] ) && $wpsl_settings['permalinks'] ) {
99
  $public = true;
100
  $rewrite = array( 'slug' => $wpsl_settings['category_slug'] );
135
  /**
136
  * Change the default "Enter title here" placeholder.
137
  *
138
+ * @since 2.0.0
139
  * @param string $title The default title placeholder
140
  * @return string $title The new title placeholder
141
  */
153
  /**
154
  * Add new columns to the store list table.
155
  *
156
+ * @since 2.0.0
157
  * @param array $columns The default columns
158
  * @return array $columns Updated column list
159
  */
170
  /**
171
  * Show the correct store content in the correct custom column.
172
  *
173
+ * @since 2.0.0
174
  * @param string $column The column name
175
  * @param int $post_id The post id
176
  * @return void
196
  /**
197
  * Define the columns that are sortable.
198
  *
199
+ * @since 2.0.0
200
  * @param array $columns List of sortable columns
201
  * @return array
202
  */
215
  /**
216
  * Set the correct column sort parameters.
217
  *
218
+ * @since 2.0.0
219
  * @param array $vars Column sorting parameters
220
  * @return array $vars The column sorting parameters inc the correct orderby and wpsl meta_key
221
  */
inc/install.php CHANGED
@@ -2,14 +2,14 @@
2
  /**
3
  * WPSL Install
4
  *
5
- * @package WP_Store_locator
6
- * @since 2.0
7
  */
8
 
9
  if ( !defined( 'ABSPATH' ) ) exit;
10
 
11
  /**
12
- * Run the install
13
  *
14
  * @since 1.2.20
15
  * @return void
@@ -38,7 +38,7 @@ function wpsl_install( $network_wide ) {
38
  }
39
 
40
  /**
41
- * Install the required data
42
  *
43
  * @since 1.2.20
44
  * @return void
@@ -47,19 +47,19 @@ function wpsl_install_data() {
47
 
48
  global $wpsl;
49
 
50
- /* Register the post type and flush the permalinks */
51
  $wpsl->post_types->register_post_types();
52
  flush_rewrite_rules();
53
 
54
- /* Create the default settings */
55
  wpsl_set_default_settings();
56
 
57
- /* Set the correct version */
58
  update_option( 'wpsl_version', WPSL_VERSION_NUM );
59
 
60
- /* Add user roles */
61
  wpsl_add_roles();
62
 
63
- /* Add user capabilities */
64
  wpsl_add_caps();
65
  }
2
  /**
3
  * WPSL Install
4
  *
5
+ * @author Tijmen Smit
6
+ * @since 2.0.0
7
  */
8
 
9
  if ( !defined( 'ABSPATH' ) ) exit;
10
 
11
  /**
12
+ * Run the install.
13
  *
14
  * @since 1.2.20
15
  * @return void
38
  }
39
 
40
  /**
41
+ * Install the required data.
42
  *
43
  * @since 1.2.20
44
  * @return void
47
 
48
  global $wpsl;
49
 
50
+ // Register the post type and flush the permalinks.
51
  $wpsl->post_types->register_post_types();
52
  flush_rewrite_rules();
53
 
54
+ // Create the default settings.
55
  wpsl_set_default_settings();
56
 
57
+ // Set the correct version.
58
  update_option( 'wpsl_version', WPSL_VERSION_NUM );
59
 
60
+ // Add user roles.
61
  wpsl_add_roles();
62
 
63
+ // Add user capabilities.
64
  wpsl_add_caps();
65
  }
inc/wpsl-functions.php CHANGED
@@ -4,7 +4,7 @@
4
  * Collect all the parameters ( language, key, region )
5
  * we need before making a request to the Google Maps API.
6
  *
7
- * @since 1.0
8
  * @return string $api_params The api parameters
9
  */
10
  function wpsl_get_gmap_api_params() {
@@ -16,17 +16,21 @@ function wpsl_get_gmap_api_params() {
16
 
17
  foreach ( $api_keys as $api_key ) {
18
  if ( !empty( $wpsl_settings['api_'.$api_key] ) ) {
19
- $api_params .= '&' . $api_key . '=' . $wpsl_settings['api_'.$api_key];
20
  }
21
  }
22
 
 
 
 
 
23
  return apply_filters( 'wpsl_gmap_api_params', $api_params );
24
  }
25
 
26
  /**
27
  * Get the default plugin settings.
28
  *
29
- * @since 1.0
30
  * @return void
31
  */
32
  function wpsl_get_default_settings() {
@@ -119,7 +123,7 @@ function wpsl_get_default_settings() {
119
  /**
120
  * Get the current plugin settings.
121
  *
122
- * @since 1.0
123
  * @return array $setting The current plugin settings
124
  */
125
  function wpsl_get_settings() {
@@ -137,7 +141,7 @@ function wpsl_get_settings() {
137
  /**
138
  * Get a single value from the default settings.
139
  *
140
- * @since 1.0
141
  * @param string $setting The value that should be restored
142
  * @return string $wpsl_default_settings The default setting value
143
  */
@@ -151,7 +155,7 @@ function wpsl_get_default_setting( $setting ) {
151
  /**
152
  * Set the default plugin settings.
153
  *
154
- * @since 1.0
155
  * @return void
156
  */
157
  function wpsl_set_default_settings() {
@@ -190,7 +194,7 @@ function wpsl_get_templates() {
190
  /**
191
  * Return the days of the week.
192
  *
193
- * @since 2.0
194
  * @return array $weekdays The days of the week
195
  */
196
  function wpsl_get_weekdays() {
@@ -211,7 +215,7 @@ function wpsl_get_weekdays() {
211
  /**
212
  * Get the default opening hours.
213
  *
214
- * @since 2.0
215
  * @return array $opening_hours The default opening hours
216
  */
217
  function wpsl_default_opening_hours() {
@@ -241,7 +245,7 @@ function wpsl_default_opening_hours() {
241
  /**
242
  * Get the available map types.
243
  *
244
- * @since 2.0
245
  * @return array $map_types The available map types
246
  */
247
  function wpsl_get_map_types() {
@@ -259,7 +263,7 @@ function wpsl_get_map_types() {
259
  /**
260
  * Get the address formats.
261
  *
262
- * @since 2.0
263
  * @return array $address_formats The address formats
264
  */
265
  function wpsl_get_address_formats() {
@@ -281,7 +285,7 @@ function wpsl_get_address_formats() {
281
  *
282
  * If the map type is invalid the default is used ( roadmap ).
283
  *
284
- * @since 2.0
285
  * @param string $map_type The provided map type
286
  * @return string $map_type A valid map type
287
  */
@@ -301,7 +305,7 @@ function wpsl_valid_map_type( $map_type ) {
301
  *
302
  * If the zoom level is invalid the default is used ( 3 ).
303
  *
304
- * @since 2.0
305
  * @param string $zoom_level The provided zoom level
306
  * @return string $zoom_level A valid zoom level
307
  */
@@ -319,7 +323,7 @@ function wpsl_valid_zoom_level( $zoom_level ) {
319
  /**
320
  * Get the max auto zoom levels for the map.
321
  *
322
- * @since 2.0
323
  * @return array $max_zoom_levels The array holding the min - max zoom levels
324
  */
325
  function wpsl_get_max_zoom_levels() {
@@ -343,7 +347,7 @@ function wpsl_get_max_zoom_levels() {
343
  /**
344
  * The labels and the values that can be set through the settings page.
345
  *
346
- * @since 2.0
347
  * @return array $labels The label names from the settings page.
348
  */
349
  function wpsl_labels() {
@@ -378,7 +382,7 @@ function wpsl_labels() {
378
  /**
379
  * Callback for array_walk_recursive, sanitize items in a multidimensional array.
380
  *
381
- * @since 2.0
382
  * @param string $item The value
383
  * @param integer $key The key
384
  */
@@ -389,7 +393,7 @@ function wpsl_sanitize_multi_array( &$item, $key ) {
389
  /**
390
  * Check whether the array is multidimensional.
391
  *
392
- * @since 2.0
393
  * @param array $array The array to check
394
  * @return boolean
395
  */
4
  * Collect all the parameters ( language, key, region )
5
  * we need before making a request to the Google Maps API.
6
  *
7
+ * @since 1.0.0
8
  * @return string $api_params The api parameters
9
  */
10
  function wpsl_get_gmap_api_params() {
16
 
17
  foreach ( $api_keys as $api_key ) {
18
  if ( !empty( $wpsl_settings['api_'.$api_key] ) ) {
19
+ $api_params .= $api_key . '=' . $wpsl_settings['api_'.$api_key] . '&';
20
  }
21
  }
22
 
23
+ if ( $api_params ) {
24
+ $api_params = '?' . rtrim( $api_params, '&' );
25
+ }
26
+
27
  return apply_filters( 'wpsl_gmap_api_params', $api_params );
28
  }
29
 
30
  /**
31
  * Get the default plugin settings.
32
  *
33
+ * @since 1.0.0
34
  * @return void
35
  */
36
  function wpsl_get_default_settings() {
123
  /**
124
  * Get the current plugin settings.
125
  *
126
+ * @since 1.0.0
127
  * @return array $setting The current plugin settings
128
  */
129
  function wpsl_get_settings() {
141
  /**
142
  * Get a single value from the default settings.
143
  *
144
+ * @since 1.0.0
145
  * @param string $setting The value that should be restored
146
  * @return string $wpsl_default_settings The default setting value
147
  */
155
  /**
156
  * Set the default plugin settings.
157
  *
158
+ * @since 1.0.0
159
  * @return void
160
  */
161
  function wpsl_set_default_settings() {
194
  /**
195
  * Return the days of the week.
196
  *
197
+ * @since 2.0.0
198
  * @return array $weekdays The days of the week
199
  */
200
  function wpsl_get_weekdays() {
215
  /**
216
  * Get the default opening hours.
217
  *
218
+ * @since 2.0.0
219
  * @return array $opening_hours The default opening hours
220
  */
221
  function wpsl_default_opening_hours() {
245
  /**
246
  * Get the available map types.
247
  *
248
+ * @since 2.0.0
249
  * @return array $map_types The available map types
250
  */
251
  function wpsl_get_map_types() {
263
  /**
264
  * Get the address formats.
265
  *
266
+ * @since 2.0.0
267
  * @return array $address_formats The address formats
268
  */
269
  function wpsl_get_address_formats() {
285
  *
286
  * If the map type is invalid the default is used ( roadmap ).
287
  *
288
+ * @since 2.0.0
289
  * @param string $map_type The provided map type
290
  * @return string $map_type A valid map type
291
  */
305
  *
306
  * If the zoom level is invalid the default is used ( 3 ).
307
  *
308
+ * @since 2.0.0
309
  * @param string $zoom_level The provided zoom level
310
  * @return string $zoom_level A valid zoom level
311
  */
323
  /**
324
  * Get the max auto zoom levels for the map.
325
  *
326
+ * @since 2.0.0
327
  * @return array $max_zoom_levels The array holding the min - max zoom levels
328
  */
329
  function wpsl_get_max_zoom_levels() {
347
  /**
348
  * The labels and the values that can be set through the settings page.
349
  *
350
+ * @since 2.0.0
351
  * @return array $labels The label names from the settings page.
352
  */
353
  function wpsl_labels() {
382
  /**
383
  * Callback for array_walk_recursive, sanitize items in a multidimensional array.
384
  *
385
+ * @since 2.0.0
386
  * @param string $item The value
387
  * @param integer $key The key
388
  */
393
  /**
394
  * Check whether the array is multidimensional.
395
  *
396
+ * @since 2.0.0
397
  * @param array $array The array to check
398
  * @return boolean
399
  */
js/wpsl-gmap.js CHANGED
@@ -10,14 +10,16 @@ var geocoder, map, directionsDisplay, directionsService, geolocationLatlng,
10
  autoLoad = ( typeof wpslSettings !== "undefined" ) ? wpslSettings.autoLoad : "";
11
 
12
  /**
13
- * Set the underscore template settings
14
  *
15
  * Defining them here prevents other plugins
16
  * that also use underscore / backbone, and defined a
17
  * different _.templateSettings from breaking the
18
  * rendering of the store locator template.
19
  *
20
- * @see http://underscorejs.org/#template
 
 
21
  */
22
  _.templateSettings = {
23
  evaluate: /\<\%(.+?)\%\>/g,
@@ -25,11 +27,12 @@ _.templateSettings = {
25
  escape: /\<\%-(.+?)\%\>/g
26
  };
27
 
28
- /* Only continue if a map is present */
29
  if ( $( ".wpsl-gmap-canvas" ).length ) {
30
  $( "<img />" ).attr( "src", wpslSettings.path + "img/ajax-loader.gif" );
31
 
32
- /* The [wpsl] shortcode can only exist once on a page,
 
33
  * but the [wpsl_map] shortcode can exist multiple times.
34
  *
35
  * So to make sure we init all the maps we loop over them.
@@ -42,28 +45,28 @@ if ( $( ".wpsl-gmap-canvas" ).length ) {
42
  }
43
 
44
  /**
45
- * Initialize the map with the correct settings
46
  *
47
- * @since 1.0
48
- * @param {string} mapId The id of the map div
49
- * @param {number} mapIndex Number of the map
50
  * @returns {void}
51
  */
52
  function initializeGmap( mapId, mapIndex ) {
53
  var mapOptions, settings, infoWindow, latLng, bounds, mapData, locationCount,
54
  maxZoom = Number( wpslSettings.autoZoomLevel );
55
 
56
- /* Get the settings that belong to the map */
57
  settings = getMapSettings( mapIndex );
58
 
59
- /* Create a new infoWindow, either with the infobox libray or use the default one */
60
  infoWindow = newInfoWindow();
61
 
62
  geocoder = new google.maps.Geocoder();
63
  directionsDisplay = new google.maps.DirectionsRenderer();
64
  directionsService = new google.maps.DirectionsService();
65
 
66
- /* Set the map options */
67
  mapOptions = {
68
  zoom: Number( settings.zoomLevel ),
69
  center: settings.startLatLng,
@@ -78,7 +81,7 @@ function initializeGmap( mapId, mapIndex ) {
78
 
79
  map = new google.maps.Map( document.getElementById( mapId ), mapOptions );
80
 
81
- /* Check if we need to apply a map style */
82
  maybeApplyMapStyle( settings.mapStyle );
83
 
84
  if ( ( typeof window[ "wpslMap_" + mapIndex ] !== "undefined" ) && ( typeof window[ "wpslMap_" + mapIndex ].locations !== "undefined" ) ) {
@@ -86,17 +89,17 @@ function initializeGmap( mapId, mapIndex ) {
86
  mapData = window[ "wpslMap_" + mapIndex ].locations,
87
  locationCount = mapData.length;
88
 
89
- /* Loop over the map data, create the infowindow object and add each marker */
90
  $.each( mapData, function( index ) {
91
  latLng = new google.maps.LatLng( mapData[index].lat, mapData[index].lng );
92
  addMarker( latLng, mapData[index].id, mapData[index], false, infoWindow );
93
  bounds.extend( latLng );
94
  });
95
 
96
- /* Make all the markers fit on the map */
97
  map.fitBounds( bounds );
98
 
99
- /* Make sure we don't zoom to far */
100
  google.maps.event.addListenerOnce( map, "bounds_changed", ( function( currentMap ) {
101
  return function() {
102
  if ( currentMap.getZoom() > maxZoom ) {
@@ -106,10 +109,11 @@ function initializeGmap( mapId, mapIndex ) {
106
  }( map ) ) );
107
  }
108
 
109
- /* Only run this part if the store locator exist and we don't just have a basic map */
110
  if ( $( "#wpsl-gmap" ).length ) {
111
 
112
- /* Not the most optimal solution, but we check the useragent if we should enable the styled dropdowns.
 
113
  *
114
  * We do this because several people have reported issues with the styled dropdowns on
115
  * iOS and Android devices. So on mobile devices the dropdowns will be styled according
@@ -122,26 +126,26 @@ function initializeGmap( mapId, mapIndex ) {
122
  $( "#wpsl-wrap" ).addClass( "wpsl-mobile" );
123
  }
124
 
125
- /* Check if we need to autolocate the user, or autoload the store locations */
126
  if ( wpslSettings.autoLocate == 1 ) {
127
  checkGeolocation( settings.startLatLng, infoWindow );
128
  } else if ( wpslSettings.autoLoad == 1 ) {
129
  showStores( settings.startLatLng, infoWindow );
130
  }
131
 
132
- /* Move the mousecursor to the store search field if the focus option is enabled */
133
  if ( wpslSettings.mouseFocus == 1 && !checkMobileUserAgent() ) {
134
  $( "#wpsl-search-input" ).focus();
135
  }
136
 
137
- /* Bind store search button */
138
  searchLocationBtn( infoWindow );
139
 
140
- /* Add the 'reload' and 'find location' icon to the map */
141
  mapControlIcons( settings, map, infoWindow );
142
  }
143
 
144
- /* Bind the zoom_changed listener */
145
  zoomChangedListener();
146
  }
147
 
@@ -151,7 +155,7 @@ function initializeGmap( mapId, mapIndex ) {
151
  *
152
  * The 'max auto zoom level' is set on the settings page.
153
  *
154
- * @since 2.0
155
  * @returns {void}
156
  */
157
  function zoomChangedListener() {
@@ -164,10 +168,10 @@ function zoomChangedListener() {
164
  }
165
 
166
  /**
167
- * Get the correct map settings
168
  *
169
- * @since 2.0
170
- * @param {number} mapIndex Number of the map
171
  * @returns {object} mapSettings The map settings either set through a shortcode or the default settings
172
  */
173
  function getMapSettings( mapIndex ) {
@@ -183,12 +187,12 @@ function getMapSettings( mapIndex ) {
183
  controlPosition: wpslSettings.controlPosition
184
  };
185
 
186
- /* If there are settings that are set through the shortcode, then we use them instead of the default ones */
187
  if ( ( typeof window[ "wpslMap_" + mapIndex ] !== "undefined" ) && ( typeof window[ "wpslMap_" + mapIndex ].shortCode !== "undefined" ) ) {
188
  for ( j = 0, len = settingOptions.length; j < len; j++ ) {
189
  shortCodeVal = window[ "wpslMap_" + mapIndex ].shortCode[ settingOptions[j] ];
190
 
191
- /* If the value is set through the shortcode, we overwrite the default value */
192
  if ( typeof shortCodeVal !== "undefined" ) {
193
  mapSettings[ settingOptions[j] ] = shortCodeVal;
194
  }
@@ -201,24 +205,26 @@ function getMapSettings( mapIndex ) {
201
  }
202
 
203
  /**
204
- * Get the latlng coordinates that are used to init the map
205
  *
206
- * @since 2.0
207
- * @param {number} mapIndex Number of the map
208
  * @returns {object} startLatLng The latlng value where the map will initially focus on
209
  */
210
  function getStartLatlng( mapIndex ) {
211
  var startLatLng, latLng,
212
  firstLocation = "";
213
 
214
- /* Maps that are added with the [wpsl_map] shortcode will have the locations key set.
 
215
  * If it exists we use the coordinates from the first location to center the map on.
216
  */
217
  if ( ( typeof window[ "wpslMap_" + mapIndex ] !== "undefined" ) && ( typeof window[ "wpslMap_" + mapIndex ].locations !== "undefined" ) ) {
218
  firstLocation = window[ "wpslMap_" + mapIndex ].locations[0];
219
  }
220
 
221
- /* Either use the coordinates from the first location as the start coordinates
 
222
  * or the default start point defined on the settings page.
223
  *
224
  * If both are not available we set it to 0,0
@@ -236,21 +242,21 @@ function getStartLatlng( mapIndex ) {
236
  }
237
 
238
  /**
239
- * Create a new infoWindow object
240
  *
241
- * Either use the default infoWindow or use the infobox library
242
  *
243
- * @since 2.0
244
  * @return {object} infoWindow The infoWindow object
245
  */
246
  function newInfoWindow() {
247
  var boxClearance, boxPixelOffset,
248
  infoBoxOptions = {};
249
 
250
- /* Do we need to use the infobox script or use the default info windows? */
251
  if ( ( typeof wpslSettings.infoWindowStyle !== "undefined" ) && ( wpslSettings.infoWindowStyle == "infobox" ) ) {
252
 
253
- /* See http://google-maps-utility-library-v3.googlecode.com/svn/trunk/infobox/docs/reference.html */
254
  boxClearance = wpslSettings.infoBoxClearance.split( "," );
255
  boxPixelOffset = wpslSettings.infoBoxPixelOffset.split( "," );
256
  infoBoxOptions = {
@@ -275,15 +281,15 @@ function newInfoWindow() {
275
  }
276
 
277
  /**
278
- * Check if we have a map style that we need to apply to the map
279
  *
280
- * @since 2.0
281
- * @param {string} mapStyle The id of the map
282
  * @return {void}
283
  */
284
  function maybeApplyMapStyle( mapStyle ) {
285
 
286
- /* Make sure the JSON is valid before applying it as a map style */
287
  mapStyle = tryParseJSON( mapStyle );
288
 
289
  if ( mapStyle ) {
@@ -294,20 +300,22 @@ function maybeApplyMapStyle( mapStyle ) {
294
  /**
295
  * Make sure the JSON is valid.
296
  *
297
- * @since 2.0
298
- * @see http://stackoverflow.com/a/20392392/1065294
299
- * @param {string} jsonString The JSON data
300
- * @return {object|boolean} The JSON string or false if it's invalid json.
301
  */
302
  function tryParseJSON( jsonString ) {
303
 
304
  try {
305
  var o = JSON.parse( jsonString );
306
 
307
- // Handle non-exception-throwing cases:
308
- // Neither JSON.parse(false) or JSON.parse(1234) throw errors, hence the type-checking,
309
- // but... JSON.parse(null) returns 'null', and typeof null === "object",
310
- // so we must check for that, too.
 
 
311
  if ( o && typeof o === "object" && o !== null ) {
312
  return o;
313
  }
@@ -318,26 +326,22 @@ function tryParseJSON( jsonString ) {
318
  }
319
 
320
  /**
321
- * Add the start marker and call the function that inits the store search
322
  *
323
- * @since 1.1
324
- * @param {object} startLatLng The start coordinates
325
- * @param {object} infoWindow The infoWindow object
326
  * @returns {void}
327
  */
328
  function showStores( startLatLng, infoWindow ) {
329
- var startMarker = {
330
- store: wpslLabels.startPoint
331
- };
332
-
333
- addMarker( startLatLng, 0, startMarker, true, infoWindow ); // This marker is the 'start location' marker. With a storeId of 0, no name and is draggable
334
  findStoreLocations( startLatLng, resetMap, autoLoad, infoWindow );
335
  }
336
 
337
  /**
338
- * Compare the current useragent to a list of known mobile useragents ( not optimal, I know )
339
  *
340
- * @since 1.2.20
341
  * @returns {boolean} Whether the useragent is from a known mobile useragent or not.
342
  */
343
  function checkMobileUserAgent() {
@@ -348,11 +352,12 @@ function checkMobileUserAgent() {
348
  * Check if Geolocation detection is supported.
349
  *
350
  * If there is an error / timeout with determining the users
351
- * location we use the 'start point' value from the settings as the start location through the showStores function.
 
352
  *
353
- * @since 1.0
354
- * @param {object} startLatLng The start coordinates
355
- * @param {object} infoWindow The infoWindow object
356
  * @returns {void}
357
  */
358
  function checkGeolocation( startLatLng, infoWindow ) {
@@ -362,12 +367,13 @@ function checkGeolocation( startLatLng, infoWindow ) {
362
  keepStartMarker = false,
363
  timeout = Number( wpslSettings.geoLocationTimout );
364
 
365
- /* Make the direction icon flash every 600ms to indicate the geolocation attempt is in progress. */
366
  geolocationInProgress = setInterval( function() {
367
  $( ".wpsl-icon-direction" ).toggleClass( "wpsl-active-icon" );
368
  }, 600 );
369
 
370
- /* If the user doesn't approve the geolocation request within the value set in
 
371
  * wpslSettings.geoLocationTimout, then the default map is loaded.
372
  *
373
  * You can increase the timeout value with the wpsl_geolocation_timeout filter.
@@ -381,7 +387,8 @@ function checkGeolocation( startLatLng, infoWindow ) {
381
  geolocationFinished( geolocationInProgress );
382
  clearTimeout( locationTimeout );
383
 
384
- /* If the timeout is triggerd and the user later decides to enable
 
385
  * the geolocation detection again, it gets messy with multiple start markers.
386
  *
387
  * So we first clear the map before adding new ones.
@@ -390,13 +397,14 @@ function checkGeolocation( startLatLng, infoWindow ) {
390
  handleGeolocationQuery( startLatLng, position, resetMap, infoWindow );
391
  }, function( error ) {
392
 
393
- /* Only show the geocode errors if the user actually clicked on the direction icon.
 
394
  *
395
- * Otherwise if the "Attempt to auto-locate the user" option is enabled on the settings page
396
  * and the geolocation attempt fails for whatever reason ( blocked in browser, unavailable etc ).
397
  * Then the first thing the visitor will see on pageload is an alert box, which isn't very userfriendly.
398
  *
399
- * If an error occurs on pageload without the user clicking on the direction icon
400
  * the default map is shown without any alert boxes.
401
  */
402
  if ( $( ".wpsl-icon-direction" ).hasClass( "wpsl-user-activated") ) {
@@ -428,48 +436,56 @@ function checkGeolocation( startLatLng, infoWindow ) {
428
  }
429
  }
430
 
 
 
 
 
 
 
 
431
  function geolocationFinished( geolocationInProgress ) {
432
  clearInterval( geolocationInProgress );
433
  $( ".wpsl-icon-direction" ).removeClass( "wpsl-active-icon" );
434
  }
435
 
436
  /**
437
- * Handle the data returned from the Geolocation API
438
  *
439
  * If there is an error / timeout determining the users location,
440
  * then we use the 'start point' value from the settings as the start location through the showStores function.
441
  *
442
- * @since 1.0
443
- * @param {object} startLatLng The start coordinates
444
- * @param {object} position The latlng coordinates from the geolocation attempt
445
- * @param {boolean} resetMap Whether we should reset the map or not
446
- * @param {object} infoWindow The infoWindow object
447
  * @returns {void}
448
  */
449
- function handleGeolocationQuery( startLatLng, position, resetMap, infoWindow ) {
450
 
451
  if ( typeof( position ) === "undefined" ) {
452
  showStores( startLatLng, infoWindow );
453
  } else {
454
  var latLng = new google.maps.LatLng( position.coords.latitude, position.coords.longitude );
455
 
456
- /* Store the latlng from the geolocation for when the user hits "reset" again
 
457
  * without having to ask for permission again.
458
  */
459
  geolocationLatlng = position;
460
 
461
  reverseGeocode( latLng ); // Set the zipcode that belongs to the latlng in the input field
462
  map.setCenter( latLng );
463
- addMarker( latLng, 0, '', true ); // This marker is the 'start location' marker. With a storeId of 0, no name and is draggable
464
  findStoreLocations( latLng, resetMap, autoLoad, infoWindow );
465
  }
466
  }
467
 
468
  /**
469
- * Handle clicks on the store locator search button
470
  *
471
- * @since 1.0
472
- * @param {object} infoWindow The infoWindow object
473
  * @returns {void}
474
  */
475
  function searchLocationBtn( infoWindow ) {
@@ -488,7 +504,7 @@ function searchLocationBtn( infoWindow ) {
488
 
489
  resetMap = false;
490
 
491
- /* Force the open InfoBox info window to close. */
492
  closeInfoBoxWindow();
493
 
494
  deleteOverlays( keepStartMarker );
@@ -504,7 +520,7 @@ function searchLocationBtn( infoWindow ) {
504
  * This is required if the user makes a new search,
505
  * or clicks on the "Directions" link.
506
  *
507
- * @since 2.0
508
  * @return {void}
509
  */
510
  function closeInfoBoxWindow() {
@@ -514,34 +530,35 @@ function closeInfoBoxWindow() {
514
  }
515
 
516
  /**
517
- * Add the 'reload' and 'find location' icon to the map
518
  *
519
- * @since 2.0
520
- * @param {object} settings Map settings
521
- * @param {object} map The map object
522
- * @param {object} infoWindow The info window object
523
  * @return {void}
524
  */
525
  function mapControlIcons( settings, map, infoWindow ) {
526
 
527
- /* Once the map has finished loading include the map control button(s). */
528
  google.maps.event.addListenerOnce( map, "tilesloaded", function() {
529
 
530
- /* Add the html for the map controls to the map */
531
  $( ".gm-style" ).append( wpslSettings.mapControls );
532
 
533
  if ( $( ".wpsl-icon-reset, #wpsl-reset-map" ).length > 0 ) {
534
 
535
- /* Bind the reset map button */
536
  resetMapBtn( settings.startLatLng, infoWindow );
537
 
538
- /* Hide it to prevent users from clicking it before
 
539
  * the store location are placed on the map.
540
  */
541
  $( ".wpsl-icon-reset" ).hide();
542
  }
543
 
544
- /* Bind the direction button to trigger a new geolocation request */
545
  $( ".wpsl-icon-direction" ).on( "click", function() {
546
  $( this ).addClass( "wpsl-user-activated" );
547
  checkGeolocation( settings.startLatLng, infoWindow );
@@ -550,11 +567,11 @@ function mapControlIcons( settings, map, infoWindow ) {
550
  }
551
 
552
  /**
553
- * Handle clicks on the "Reset" button
554
  *
555
- * @since 1.0
556
- * @param {object} startLatLng The start coordinates
557
- * @param {object} infoWindow The infoWindow object
558
  * @returns {void}
559
  */
560
  function resetMapBtn( startLatLng, infoWindow ) {
@@ -562,38 +579,41 @@ function resetMapBtn( startLatLng, infoWindow ) {
562
  var keepStartMarker = false,
563
  resetMap = true;
564
 
565
- /* Check if a map reset is already in progress,
 
566
  * if so prevent another one from starting.
567
  */
568
  if ( $( this ).hasClass( "wpsl-in-progress" ) ) {
569
  return;
570
  }
571
 
572
- /* When the start marker is dragged the autoload value is set to false.
573
- * So we need to check the correct value when the reset button is pushed before reloading the stores.
 
 
574
  */
575
  if ( wpslSettings.autoLoad == 1 ) {
576
  autoLoad = 1;
577
  }
578
 
579
- /* Check if the latlng or zoom has changed since pageload, if so there is something to reset */
580
  if ( ( ( ( map.getCenter().lat() !== mapDefaults.centerLatlng.lat() ) || ( map.getCenter().lng() !== mapDefaults.centerLatlng.lng() ) || ( map.getZoom() !== mapDefaults.zoomLevel ) ) ) ) {
581
  deleteOverlays( keepStartMarker );
582
 
583
  $( "#wpsl-search-input" ).val( "" ).removeClass();
584
 
585
- /* We use this to prevent multiple reset request */
586
  $( ".wpsl-icon-reset" ).addClass( "wpsl-in-progress" );
587
 
588
- /* If marker clusters exist, remove them from the map */
589
  if ( markerClusterer ) {
590
  markerClusterer.clearMarkers();
591
  }
592
 
593
- /* Remove the start marker */
594
  deleteStartMarker();
595
 
596
- /* Reset the dropdown values */
597
  resetDropdowns();
598
 
599
  if ( wpslSettings.autoLocate == 1 ) {
@@ -603,16 +623,16 @@ function resetMapBtn( startLatLng, infoWindow ) {
603
  }
604
  }
605
 
606
- /* Make sure the stores are shown and the direction details are hidden */
607
  $( "#wpsl-stores" ).show();
608
  $( "#wpsl-direction-details" ).hide();
609
  });
610
  }
611
 
612
  /**
613
- * Remove the start marker from the map
614
  *
615
- * @since 1.2.12
616
  * @returns {void}
617
  */
618
  function deleteStartMarker() {
@@ -626,7 +646,7 @@ function deleteStartMarker() {
626
  * Reset the dropdown values for the max results,
627
  * and search radius after the "reset" button is triggerd.
628
  *
629
- * @since 1.1
630
  * @returns {void}
631
  */
632
  function resetDropdowns() {
@@ -668,24 +688,24 @@ function resetDropdowns() {
668
  }
669
  }
670
 
671
- /* Handle the click on the back button when the route directions are displayed */
672
  $( "#wpsl-result-list" ).on( "click", ".wpsl-back", function() {
673
  var i, len;
674
 
675
- /* Remove the directions from the map */
676
  directionsDisplay.setMap( null );
677
 
678
- /* Restore the store markers on the map */
679
  for ( i = 0, len = markersArray.length; i < len; i++ ) {
680
  markersArray[i].setMap( map );
681
  }
682
 
683
- /* Restore the start marker on the map */
684
  if ( ( typeof( startMarkerData ) !== "undefined" ) && ( startMarkerData !== "" ) ) {
685
  startMarkerData.setMap( map );
686
  }
687
 
688
- /* If marker clusters are enabled, restore them */
689
  if ( markerClusterer ) {
690
  checkMarkerClusters();
691
  }
@@ -701,43 +721,43 @@ $( "#wpsl-result-list" ).on( "click", ".wpsl-back", function() {
701
  });
702
 
703
  /**
704
- * Show the driving directions
705
  *
706
- * @since 1.1
707
- * @param {object} e The clicked elemennt
708
  * @returns {void}
709
  */
710
  function renderDirections( e ) {
711
  var i, start, end, len, storeId;
712
 
713
- /* Force the open InfoBox info window to close. */
714
  closeInfoBoxWindow();
715
 
716
  /*
717
- The storeId is placed on the li in the results list,
718
- but in the marker it will be on the wrapper div. So we check which one we need to target.
719
- */
720
  if ( e.parents( "li" ).length > 0 ) {
721
  storeId = e.parents( "li" ).data( "store-id" );
722
  } else {
723
  storeId = e.parents( ".wpsl-info-window" ).data( "store-id" );
724
  }
725
 
726
- /* Check if we need to get the start point from a dragged marker */
727
  if ( ( typeof( startMarkerData ) !== "undefined" ) && ( startMarkerData !== "" ) ) {
728
  start = startMarkerData.getPosition();
729
  }
730
 
731
- /* Used to restore the map back to the state it was in before the user clicked on 'directions' */
732
  directionMarkerPosition = {
733
  centerLatlng: map.getCenter(),
734
  zoomLevel: map.getZoom()
735
  };
736
 
737
- /* Find the latlng that belongs to the start and end point */
738
  for ( i = 0, len = markersArray.length; i < len; i++ ) {
739
 
740
- /* Only continue if the start data is still empty or undefined */
741
  if ( ( markersArray[i].storeId == 0 ) && ( ( typeof( start ) === "undefined" ) || ( start === "" ) ) ) {
742
  start = markersArray[i].getPosition();
743
  } else if ( markersArray[i].storeId == storeId ) {
@@ -782,17 +802,17 @@ if ( $( "#wpsl-gmap" ).length ) {
782
  }
783
 
784
  /**
785
- * Let a single marker bounce
786
  *
787
- * @since 1.0
788
- * @param {number} storeId The storeId of the marker that we need to bounce on the map
789
- * @param {string} status Indicates whether we should stop or start the bouncing
790
  * @returns {void}
791
  */
792
  function letsBounce( storeId, status ) {
793
  var i, len, marker;
794
 
795
- /* Find the correct marker to bounce based on the storeId */
796
  for ( i = 0, len = markersArray.length; i < len; i++ ) {
797
  if ( markersArray[i].storeId == storeId ) {
798
  marker = markersArray[i];
@@ -807,11 +827,11 @@ function letsBounce( storeId, status ) {
807
  }
808
 
809
  /**
810
- * Calculate the route from the start to the end
811
  *
812
- * @since 1.0
813
- * @param {object} start The latlng from the start point
814
- * @param {object} end The latlng from the end point
815
  * @returns {void}
816
  */
817
  function calcRoute( start, end ) {
@@ -840,7 +860,7 @@ function calcRoute( start, end ) {
840
  if ( response.routes.length > 0 ) {
841
  direction = response.routes[0];
842
 
843
- /* Loop over the legs and steps of the directions */
844
  for ( i = 0; i < direction.legs.length; i++ ) {
845
  legs = direction.legs[i];
846
 
@@ -854,24 +874,24 @@ function calcRoute( start, end ) {
854
  $( "#wpsl-direction-details ul" ).append( directionStops ).before( "<div class='wpsl-direction-before'><a class='wpsl-back' id='wpsl-direction-start' href='#'>" + wpslLabels.back + "</a><div><span class='wpsl-total-distance'>" + direction.legs[0].distance.text + "</span> - <span class='wpsl-total-durations'>" + direction.legs[0].duration.text + "</span></div></div>" ).after( "<p class='wpsl-direction-after'>" + response.routes[0].copyrights + "</p>" );
855
  $( "#wpsl-direction-details" ).show();
856
 
857
- /* Remove all single markers from the map */
858
  for ( i = 0, len = markersArray.length; i < len; i++ ) {
859
  markersArray[i].setMap( null );
860
  }
861
 
862
- /* Remove the marker clusters from the map */
863
  if ( markerClusterer ) {
864
  markerClusterer.clearMarkers();
865
  }
866
 
867
- /* Remove the start marker from the map */
868
  if ( ( typeof( startMarkerData ) !== "undefined" ) && ( startMarkerData !== "" ) ) {
869
  startMarkerData.setMap( null );
870
  }
871
 
872
  $( "#wpsl-stores" ).hide();
873
 
874
- /* Make sure the start of the route directions are visible if the store listings are shown below the map */
875
  if ( wpslSettings.templateId == 1 ) {
876
  directionOffset = $( "#wpsl-gmap" ).offset();
877
  $( window ).scrollTop( directionOffset.top );
@@ -884,10 +904,10 @@ function calcRoute( start, end ) {
884
  }
885
 
886
  /**
887
- * Geocode the user input
888
  *
889
- * @since 1.0
890
- * @param {object} infoWindow The infoWindow object
891
  * @returns {void}
892
  */
893
  function codeAddress( infoWindow ) {
@@ -895,16 +915,16 @@ function codeAddress( infoWindow ) {
895
  autoLoad = false,
896
  keepStartMarker = false,
897
  address = $( "#wpsl-search-input" ).val();
898
-
899
  geocoder.geocode( { 'address': address}, function( response, status ) {
900
- if ( status == google.maps.GeocoderStatus.OK ) {
901
  latLng = response[0].geometry.location;
902
-
903
- /* Remove any previous markers and add a new one */
904
  deleteOverlays( keepStartMarker );
905
- addMarker( latLng, 0, '', true, infoWindow ); // This marker is the 'start location' marker. With a storeId of 0, no name and is draggable
906
 
907
- /* Try to find stores that match the radius, location criteria */
908
  findStoreLocations( latLng, resetMap, autoLoad, infoWindow );
909
  } else {
910
  geocodeErrors( status );
@@ -913,10 +933,10 @@ function codeAddress( infoWindow ) {
913
  }
914
 
915
  /**
916
- * Geocode the user input and set the returned zipcode in the input field
917
  *
918
- * @since 1.0
919
- * @param {object} latLng The coordinates of the location that should be reverse geocoded
920
  * @returns {void}
921
  */
922
  function reverseGeocode( latLng ) {
@@ -936,21 +956,21 @@ function reverseGeocode( latLng ) {
936
  }
937
 
938
  /**
939
- * Filter out the zipcode from the response
940
  *
941
- * @since 1.0
942
- * @param {object} response The complete Google API response
943
- * @returns {string} zipcode The zipcode
944
  */
945
  function filterApiResponse( response ) {
946
  var zipcode, responseType, i,
947
  addressLength = response[0].address_components.length;
948
 
949
- /* Loop over the API response */
950
  for ( i = 0; i < addressLength; i++ ){
951
  responseType = response[0].address_components[i].types;
952
 
953
- /* filter out the postal code */
954
  if ( ( /^postal_code$/.test( responseType ) ) || ( /^postal_code_prefix,postal_code$/.test( responseType ) ) ) {
955
  zipcode = response[0].address_components[i].long_name;
956
  }
@@ -965,16 +985,16 @@ function filterApiResponse( response ) {
965
  * If we need to show the driving directions on maps.google.com itself,
966
  * we first need to geocode the start latlng into a formatted address.
967
  *
968
- * @since 1.0
969
- * @param {object} startLatLng The latlng used as the starting point
970
- * @param {boolean} resetMap Whether we should reset the map or not
971
- * @param {string} autoLoad Check if we need to autoload all the stores
972
- * @param {object} infoWindow The infoWindow object
973
  * @returns {void}
974
  */
975
  function findStoreLocations( startLatLng, resetMap, autoLoad, infoWindow ) {
976
 
977
- /* Check if we need to open a new window and show the route on the Google Maps site itself. */
978
  if ( wpslSettings.directionRedirect == 1 ) {
979
  findFormattedAddress( startLatLng, function() {
980
  makeAjaxRequest( startLatLng, resetMap, autoLoad, infoWindow );
@@ -985,11 +1005,11 @@ function findStoreLocations( startLatLng, resetMap, autoLoad, infoWindow ) {
985
  }
986
 
987
  /**
988
- * Convert the latlng into a formatted address
989
  *
990
- * @since 1.0
991
- * @param {object} latLng The latlng to geocode
992
- * @param {callback} callback
993
  * @returns {void}
994
  */
995
  function findFormattedAddress( latLng, callback ) {
@@ -1004,13 +1024,13 @@ function findFormattedAddress( latLng, callback ) {
1004
  }
1005
 
1006
  /**
1007
- * Make the Ajax request to load the store data
1008
  *
1009
- * @since 1.2
1010
- * @param {object} startLatLng The latlng used as the starting point
1011
- * @param {boolean} resetMap Whether we should reset the map or not
1012
- * @param {string} autoLoad Check if we need to autoload all the stores
1013
- * @param {object} infoWindow The infoWindow object
1014
  * @returns {void}
1015
  */
1016
  function makeAjaxRequest( startLatLng, resetMap, autoLoad, infoWindow ) {
@@ -1028,7 +1048,8 @@ function makeAjaxRequest( startLatLng, resetMap, autoLoad, infoWindow ) {
1028
  lng: startLatLng.lng()
1029
  };
1030
 
1031
- /* If we reset the map we use the default dropdown values instead of the selected values.
 
1032
  * Otherwise we first make sure the filter val is valid before including the radius / max_results param
1033
  */
1034
  if ( resetMap ) {
@@ -1043,7 +1064,7 @@ function makeAjaxRequest( startLatLng, resetMap, autoLoad, infoWindow ) {
1043
  radius = parseInt( $( "#wpsl-radius .wpsl-selected-item" ).attr( "data-value" ) );
1044
  }
1045
 
1046
- /* If the max resuls or radius filter values are NaN, then we use the default value */
1047
  if ( isNaN( maxResult ) ) {
1048
  ajaxData.max_results = wpslSettings.maxResults;
1049
  } else {
@@ -1056,7 +1077,7 @@ function makeAjaxRequest( startLatLng, resetMap, autoLoad, infoWindow ) {
1056
  ajaxData.radius = radius;
1057
  }
1058
 
1059
- /* If the category dropdown exist get the id */
1060
  if ( $( "#wpsl-category" ).length > 0 ) {
1061
  if ( isMobile ) {
1062
  categoryId = parseInt( $( "#wpsl-category .wpsl-dropdown" ).val() );
@@ -1095,36 +1116,36 @@ function makeAjaxRequest( startLatLng, resetMap, autoLoad, infoWindow ) {
1095
  }
1096
  }
1097
 
1098
- /* Add the preloader */
1099
  $storeList.empty().append( "<li class='wpsl-preloader'><img src='" + preloader + "'/>" + wpslLabels.preloader + "</li>" );
1100
 
1101
  $.get( wpslSettings.ajaxurl, ajaxData, function( response ) {
1102
 
1103
- /* Remove the preloaders and no results msg */
1104
  $( ".wpsl-preloader, .no-results" ).remove();
1105
-
1106
  if ( response.length > 0 ) {
1107
 
1108
- /* Loop over the returned locations */
1109
  $.each( response, function( index ) {
1110
  _.extend( response[index], templateHelpers );
1111
 
1112
- /* Add the location maker to the map */
1113
  latLng = new google.maps.LatLng( response[index].lat, response[index].lng );
1114
  addMarker( latLng, response[index].id, response[index], draggable, infoWindow );
1115
 
1116
- /* Create the html output with help from underscore js */
1117
  storeData = storeData + _.template( template, response[index] );
1118
  });
1119
 
1120
  $( "#wpsl-result-list" ).off( "click", ".wpsl-directions" );
1121
 
1122
- /* Add the html for the store listing to the <ul> */
1123
  $storeList.append( storeData );
1124
 
1125
  $( "#wpsl-result-list" ).on( "click", ".wpsl-directions", function() {
1126
 
1127
- /* Check if we need to render the direction on the map. */
1128
  if ( wpslSettings.directionRedirect != 1 ) {
1129
  renderDirections( $( this ) );
1130
 
@@ -1132,10 +1153,10 @@ function makeAjaxRequest( startLatLng, resetMap, autoLoad, infoWindow ) {
1132
  }
1133
  });
1134
 
1135
- /* Do we need to create a marker cluster? */
1136
  checkMarkerClusters();
1137
 
1138
- /* Make sure everything fits on the screen */
1139
  fitBounds();
1140
 
1141
  $( "#wpsl-result-list p:empty" ).remove();
@@ -1143,7 +1164,8 @@ function makeAjaxRequest( startLatLng, resetMap, autoLoad, infoWindow ) {
1143
  $storeList.html( "<li class='no-results'>" + wpslLabels.noResults + "</li>" );
1144
  }
1145
 
1146
- /* Store the default zoom and latlng values the first time
 
1147
  * all the stores are added to the map.
1148
  *
1149
  * This way when a user clicks the reset button we can check if the
@@ -1158,12 +1180,14 @@ function makeAjaxRequest( startLatLng, resetMap, autoLoad, infoWindow ) {
1158
  zoomLevel: map.getZoom()
1159
  };
1160
 
1161
- /* Because the reset icon exists, we need to adjust
 
1162
  * the styling of the direction icon.
1163
  */
1164
  $( "#wpsl-map-controls" ).addClass( "wpsl-reset-exists" );
1165
 
1166
- /* The reset initialy is set to hidden to prevent
 
1167
  * users from clicking it before the map is loaded.
1168
  */
1169
  $( ".wpsl-icon-reset, #wpsl-reset-map" ).show();
@@ -1174,7 +1198,7 @@ function makeAjaxRequest( startLatLng, resetMap, autoLoad, infoWindow ) {
1174
  }
1175
  });
1176
 
1177
- /* Move the mousecursor to the store search field if the focus option is enabled */
1178
  if ( wpslSettings.mouseFocus == 1 && !checkMobileUserAgent() ) {
1179
  $( "#wpsl-search-input" ).focus();
1180
  }
@@ -1209,21 +1233,25 @@ function checkMarkerClusters() {
1209
  }
1210
 
1211
  /**
1212
- * Add a new marker to the map based on the provided location (latlng)
1213
  *
1214
- * @since 1.0
1215
- * @param {object} latLng The coordinates
1216
- * @param {number} storeId The store id
1217
- * @param {object} infoWindowData The data we need to show in the info window
1218
- * @param {boolean} draggable Should the marker be draggable
1219
- * @param {object} infoWindow The infoWindow object
1220
  * @return {void}
1221
  */
1222
  function addMarker( latLng, storeId, infoWindowData, draggable, infoWindow ) {
1223
- var markerPath, mapIcon, marker,
1224
  keepStartMarker = true;
1225
 
1226
  if ( storeId === 0 ) {
 
 
 
 
1227
  markerPath = wpslSettings.path + "img/markers/" + wpslSettings.startMarker;
1228
  } else {
1229
  markerPath = wpslSettings.path + "img/markers/" + wpslSettings.storeMarker;
@@ -1232,7 +1260,7 @@ function addMarker( latLng, storeId, infoWindowData, draggable, infoWindow ) {
1232
  mapIcon = {
1233
  url: markerPath,
1234
  scaledSize: new google.maps.Size( 24,35 ), //retina format
1235
- origin: new google.maps.Point( 0,0 ),
1236
  anchor: new google.maps.Point( 12,35 )
1237
  };
1238
 
@@ -1240,22 +1268,22 @@ function addMarker( latLng, storeId, infoWindowData, draggable, infoWindow ) {
1240
  position: latLng,
1241
  map: map,
1242
  optimized: false, //fixes markers flashing while bouncing
1243
- title: infoWindowData.store,
1244
  draggable: draggable,
1245
  storeId: storeId,
1246
  icon: mapIcon
1247
  });
1248
 
1249
- /* Store the marker for later use */
1250
  markersArray.push( marker );
1251
 
1252
  google.maps.event.addListener( marker, "click",( function( currentMap ) {
1253
  return function() {
1254
 
1255
- /* The start marker will have a store id of 0, all others won't */
1256
  if ( storeId != 0 ) {
1257
 
1258
- /* Check if streetview is available at the clicked location */
1259
  if ( typeof wpslSettings.markerStreetView !== "undefined" && wpslSettings.markerStreetView == 1 ) {
1260
  checkStreetViewStatus( latLng, function() {
1261
  setInfoWindowContent( marker, createInfoWindowHtml( infoWindowData ), infoWindow, currentMap );
@@ -1276,7 +1304,7 @@ function addMarker( latLng, storeId, infoWindowData, draggable, infoWindow ) {
1276
  };
1277
  }( map ) ) );
1278
 
1279
- /* Only the start marker will be draggable */
1280
  if ( draggable ) {
1281
  google.maps.event.addListener( marker, "dragend", function( event ) {
1282
  deleteOverlays( keepStartMarker );
@@ -1287,13 +1315,30 @@ function addMarker( latLng, storeId, infoWindowData, draggable, infoWindow ) {
1287
  }
1288
  }
1289
 
1290
- /* Check if we are using both the infobox for the info windows and have marker clusters */
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1291
  if ( typeof wpslSettings.infoWindowStyle !== "undefined" && wpslSettings.infoWindowStyle == "infobox" && wpslSettings.markerClusters == 1 ) {
1292
  var clusters, clusterLen, markerLen, i, j;
1293
 
1294
- /* We need to listen to both zoom_changed and idle.
 
1295
  *
1296
- * If the zoom level changes the marker clusters either merges nearby
1297
  * markers, or changes into individual markers. Which is the moment we
1298
  * either show or hide the opened info window.
1299
  *
@@ -1310,10 +1355,14 @@ if ( typeof wpslSettings.infoWindowStyle !== "undefined" && wpslSettings.infoWin
1310
  for ( i = 0, clusterLen = clusters.length; i < clusterLen; i++ ) {
1311
  for ( j = 0, markerLen = clusters[i].markers_.length; j < markerLen; j++ ) {
1312
 
1313
- /* Match the storeId from the cluster marker with the marker id that was set when the info window was opened */
 
 
 
1314
  if ( clusters[i].markers_[j].storeId == activeWindowMarkerId ) {
1315
 
1316
- /* If there is a visible info window but the markers_[j].map is null ( hidden )
 
1317
  * it means the info window belongs to a marker that is part of a marker cluster.
1318
  *
1319
  * If that is the case then we hide the info window ( the individual marker isn't visible ).
@@ -1338,13 +1387,13 @@ if ( typeof wpslSettings.infoWindowStyle !== "undefined" && wpslSettings.infoWin
1338
  }
1339
 
1340
  /**
1341
- * Set the correct info window content for the marker
1342
  *
1343
- * @since 1.2.20
1344
- * @param {object} marker Marker data
1345
- * @param {string} infoWindowContent The infoWindow content
1346
- * @param {object} infoWindow The infoWindow object
1347
- * @param {object} currentMap The map object
1348
  * @returns {void}
1349
  */
1350
  function setInfoWindowContent( marker, infoWindowContent, infoWindow, currentMap ) {
@@ -1355,12 +1404,15 @@ function setInfoWindowContent( marker, infoWindowContent, infoWindow, currentMap
1355
 
1356
  openInfoWindow.push( infoWindow );
1357
 
1358
- /* Store the marker id if both the marker clusters and the infobox are enabled.
 
1359
  *
1360
- * With the normal info window script the info window is automatically closed once a user
1361
- * zooms out and the marker clusters are enabled, but this doesn't happen with the infobox library.
 
1362
  *
1363
- * So we need to show/hide it manually when the user zooms out, and for this to work we need to know which marker to target.
 
1364
  */
1365
  if ( typeof wpslSettings.infoWindowStyle !== "undefined" && wpslSettings.infoWindowStyle == "infobox" && wpslSettings.markerClusters == 1 ) {
1366
  activeWindowMarkerId = marker.storeId;
@@ -1372,9 +1424,9 @@ function setInfoWindowContent( marker, infoWindowContent, infoWindow, currentMap
1372
  * Handle clicks for the different info window actions like,
1373
  * direction, streetview and zoom here.
1374
  *
1375
- * @since 1.2.20
1376
- * @param {object} marker Holds the marker data
1377
- * @param {object} currentMap The map object
1378
  * @returns {void}
1379
  */
1380
  function infoWindowClickActions( marker, currentMap ) {
@@ -1385,7 +1437,8 @@ function infoWindowClickActions( marker, currentMap ) {
1385
 
1386
  if ( $( this ).hasClass( "wpsl-directions" ) ) {
1387
 
1388
- /* Check if we need to show the direction on the map
 
1389
  * or send the users to maps.google.com
1390
  */
1391
  if ( wpslSettings.directionRedirect == 1 ) {
@@ -1410,7 +1463,7 @@ function infoWindowClickActions( marker, currentMap ) {
1410
  * If so we hide the 'Zoom here' text in the info window,
1411
  * otherwise we show it.
1412
  *
1413
- * @since 2.0
1414
  * @returns {void}
1415
  */
1416
  function checkMaxZoomLevel() {
@@ -1424,11 +1477,11 @@ function checkMaxZoomLevel() {
1424
  }
1425
 
1426
  /**
1427
- * Activate streetview for the clicked location
1428
  *
1429
- * @since 1.2.20
1430
- * @param {object} marker The current marker
1431
- * @param {object} currentMap The map object
1432
  * @returns {void}
1433
  */
1434
  function activateStreetView( marker, currentMap ) {
@@ -1442,15 +1495,15 @@ function activateStreetView( marker, currentMap ) {
1442
  }
1443
 
1444
  /**
1445
- * Listen for changes in the streetview visibility
1446
  *
1447
  * Sometimes the infowindow offset is incorrect after switching back from streetview.
1448
  * We fix this by zooming in and out. If someone has a better fix, then let me know at
1449
  * info at tijmensmit.com
1450
  *
1451
- * @since 1.2.20
1452
- * @param {object} panorama The streetview object
1453
- * @param {object} currentMap The map object
1454
  * @returns {void}
1455
  */
1456
  function StreetViewListener( panorama, currentMap ) {
@@ -1467,13 +1520,14 @@ function StreetViewListener( panorama, currentMap ) {
1467
  }
1468
 
1469
  /**
1470
- * Check the streetview status
1471
  *
1472
- * Make sure that a streetview exists for the latlng
 
1473
  *
1474
- * @since 1.2.20
1475
- * @param {object} latLng The latlng coordinates
1476
- * @param {callback} callback
1477
  * @returns {void}
1478
  */
1479
  function checkStreetViewStatus( latLng, callback ) {
@@ -1486,16 +1540,18 @@ function checkStreetViewStatus( latLng, callback ) {
1486
  }
1487
 
1488
  /**
1489
- * Helper methods for the underscore templates
1490
  *
1491
- * @since 2.0
 
 
1492
  */
1493
  var templateHelpers = {
1494
  /**
1495
- * Make the phone number clickable if we are dealing with a mobile useragent
1496
  *
1497
- * @since 1.2.20
1498
- * @param {string} phoneNumber The phone number
1499
  * @returns {string} phoneNumber Either just the plain number, or with a link wrapped around it with tel:
1500
  */
1501
  formatPhoneNumber: function( phoneNumber ) {
@@ -1509,8 +1565,8 @@ var templateHelpers = {
1509
  * Replace spaces - . and () from phone numbers.
1510
  * Also if the number starts with a + we check for a (0) and remove it.
1511
  *
1512
- * @since 1.2.20
1513
- * @param {string} phoneNumber The phone number
1514
  * @returns {string} phoneNumber The 'cleaned' number
1515
  */
1516
  formatClickablePhoneNumber: function( phoneNumber ) {
@@ -1521,10 +1577,10 @@ var templateHelpers = {
1521
  return phoneNumber.replace( /(-| |\(|\)|\.|)/g, "" );
1522
  },
1523
  /**
1524
- * Create the html for the info window action
1525
  *
1526
- * @since 2.0
1527
- * @param {string} id The store id
1528
  * @returns {string} output The html for the info window actions
1529
  */
1530
  createInfoWindowActions: function( id ) {
@@ -1550,8 +1606,8 @@ var templateHelpers = {
1550
  * Create the url that takes the user to the maps.google.com page
1551
  * and shows the correct driving directions.
1552
  *
1553
- * @since 1.0
1554
- * @param {string} id The store id
1555
  * @returns {string} directionUrl The full maps.google.com url with the encoded start + end address
1556
  */
1557
  createDirectionUrl: function( id ) {
@@ -1560,19 +1616,19 @@ var templateHelpers = {
1560
 
1561
  if ( wpslSettings.directionRedirect == 1 ) {
1562
 
1563
- /* If we somehow failed to determine the start address, just set it to empty. */
1564
  if ( typeof startAddress === "undefined" ) {
1565
  startAddress = "";
1566
  }
1567
 
1568
  url.target = "target='_blank'";
1569
 
1570
- /* If the id exists the user clicked on a marker we get the direction url from the search results. */
1571
  if ( typeof id !== "undefined" ) {
1572
  url.src = $( "[data-store-id=" + id + "] .wpsl-directions" ).attr( "href" );
1573
  } else {
1574
 
1575
- /* Only add a , after the zip if the zip value exists. */
1576
  if ( this.zip ) {
1577
  zip = this.zip + ", ";
1578
  } else {
@@ -1595,12 +1651,12 @@ var templateHelpers = {
1595
  return directionUrl;
1596
  },
1597
  /**
1598
- * Make the URI encoding compatible with RFC 3986
1599
  *
1600
- * !, ', (, ), and * will be escaped, otherwise they break the string
1601
  *
1602
- * @since 1.2.20
1603
- * @param {string} str The string to encode
1604
  * @returns {string} The encoded string
1605
  */
1606
  rfc3986EncodeURIComponent: function( str ) {
@@ -1609,11 +1665,11 @@ var templateHelpers = {
1609
  };
1610
 
1611
  /**
1612
- * Create the html template used in the info windows on the map
1613
  *
1614
- * @since 1.0
1615
- * @param {object} infoWindowData The data that is shown in the info window (address, url, phone etc)
1616
- * @returns {string} windowContent The html content that is placed in the info window
1617
  */
1618
  function createInfoWindowHtml( infoWindowData ) {
1619
  var windowContent, template;
@@ -1630,9 +1686,9 @@ function createInfoWindowHtml( infoWindowData ) {
1630
  }
1631
 
1632
  /**
1633
- * Zoom the map so that all markers fit in the window
1634
  *
1635
- * @since 1.0
1636
  * @returns {void}
1637
  */
1638
  function fitBounds() {
@@ -1640,7 +1696,7 @@ function fitBounds() {
1640
  maxZoom = Number( wpslSettings.autoZoomLevel ),
1641
  bounds = new google.maps.LatLngBounds();
1642
 
1643
- /* Make sure we don't zoom to far */
1644
  google.maps.event.addListenerOnce( map, "bounds_changed", function( event ) {
1645
  if ( this.getZoom() > maxZoom ) {
1646
  this.setZoom( maxZoom );
@@ -1655,10 +1711,10 @@ function fitBounds() {
1655
  }
1656
 
1657
  /**
1658
- * Remove all existing markers from the map
1659
  *
1660
- * @since 1.0
1661
- * @param {boolean} keepStartMarker Whether or not to keep the start marker while removing all the other markers from the map
1662
  * @returns {void}
1663
  */
1664
  function deleteOverlays( keepStartMarker ) {
@@ -1666,10 +1722,11 @@ function deleteOverlays( keepStartMarker ) {
1666
 
1667
  directionsDisplay.setMap( null );
1668
 
1669
- /* Remove all the markers from the map, and empty the array */
1670
  if ( markersArray ) {
1671
- for ( i = 0, markerLen = markersArray.length; i < markerLen; i++ ) {
1672
- /* Check if we need to keep the start marker, or remove everything */
 
1673
  if ( keepStartMarker ) {
1674
  if ( markersArray[i].draggable != true ) {
1675
  markersArray[i].setMap( null );
@@ -1684,7 +1741,7 @@ function deleteOverlays( keepStartMarker ) {
1684
  markersArray.length = 0;
1685
  }
1686
 
1687
- /* If marker clusters exist, remove them from the map */
1688
  if ( markerClusterer ) {
1689
  markerClusterer.clearMarkers();
1690
  }
@@ -1693,9 +1750,9 @@ function deleteOverlays( keepStartMarker ) {
1693
  /**
1694
  * Handle the geocode errors.
1695
  *
1696
- * @since 1.0
1697
- * @param {string} status Contains the error code
1698
- * @returns void
1699
  */
1700
  function geocodeErrors( status ) {
1701
  var msg;
@@ -1718,9 +1775,9 @@ function geocodeErrors( status ) {
1718
  /**
1719
  * Handle the driving direction errors.
1720
  *
1721
- * @since 1.2.20
1722
- * @param {string} status Contains the error code
1723
- * @returns void
1724
  */
1725
  function directionErrors( status ) {
1726
  var msg;
@@ -1741,7 +1798,7 @@ function directionErrors( status ) {
1741
  alert( msg );
1742
  }
1743
 
1744
- /* Trigger the search when the user presses "enter" on the keyboard */
1745
  $( "#wpsl-search-input" ).keydown( function ( event ) {
1746
  var keypressed = event.keyCode || event.which;
1747
 
@@ -1755,7 +1812,7 @@ $( "#wpsl-stores" ).on( "click", ".wpsl-store-details", function() {
1755
  $parentLi = $( this ).parents( "li" ),
1756
  storeId = $parentLi.data( "store-id" );
1757
 
1758
- /* Check if we should show the 'more info' details */
1759
  if ( wpslSettings.moreInfoLocation == "info window" ) {
1760
  for ( i = 0, len = markersArray.length; i < len; i++ ) {
1761
  if ( markersArray[i].storeId == storeId ) {
@@ -1764,7 +1821,7 @@ $( "#wpsl-stores" ).on( "click", ".wpsl-store-details", function() {
1764
  }
1765
  } else {
1766
 
1767
- /* Check if we should set the 'more info' item to active or not */
1768
  if ( $parentLi.find( ".wpsl-more-info-listings" ).is( ":visible" ) ) {
1769
  $( this ).removeClass( "wpsl-active-details" );
1770
  } else {
@@ -1776,7 +1833,8 @@ $( "#wpsl-stores" ).on( "click", ".wpsl-store-details", function() {
1776
  $parentLi.find( ".wpsl-more-info-listings" ).toggle();
1777
  }
1778
 
1779
- /* If we show the store listings under the map, we do want to jump to the
 
1780
  * top of the map to focus on the opened infowindow
1781
  */
1782
  if ( wpslSettings.templateId != "default" || wpslSettings.moreInfoLocation == "store listings" ) {
@@ -1785,12 +1843,12 @@ $( "#wpsl-stores" ).on( "click", ".wpsl-store-details", function() {
1785
  });
1786
 
1787
  /**
1788
- * Create the dropdown filters
1789
  *
1790
  * Inspired by https://github.com/patrickkunka/easydropdown
1791
  *
1792
- * @since 1.2.24
1793
- * @returns void
1794
  */
1795
  function createDropdowns() {
1796
 
@@ -1803,10 +1861,10 @@ function createDropdowns() {
1803
  $this.$dropdown = $this.$dropdownElem.find( "ul" );
1804
  $this.$options = $this.$dropdownWrap.find( "option" );
1805
 
1806
- /* Hide the original <select> and remove the css class */
1807
  $this.hide().removeClass( "wpsl-dropdown" );
1808
 
1809
- /* Loop over the options from the <select> and move them to a <li> instead */
1810
  $.each( $this.$options, function() {
1811
  if ( $( this ).val() == $this.$selectedVal ) {
1812
  active = 'class="wpsl-selected-dropdown"';
@@ -1821,14 +1879,14 @@ function createDropdowns() {
1821
  $this.$dropdownElem.before( "<span data-value=" + $this.find( ":selected" ).val() + " class='wpsl-selected-item'>" + $this.find( ":selected" ).text() + "</span>" );
1822
  $this.$dropdownItem = $this.$dropdownElem.find( "li" );
1823
 
1824
- /* Listen for clicks on the 'wpsl-dropdown' div */
1825
  $this.$dropdownWrap.on( "click", function( e ) {
1826
  closeDropdowns();
1827
 
1828
  $( this ).toggleClass( "wpsl-active" );
1829
  maxHeight = 0;
1830
 
1831
- /* Either calculate the correct height for the <ul>, or set it to 0 to hide it */
1832
  if ( $( this ).hasClass( "wpsl-active" ) ) {
1833
  $this.$dropdownItem.each( function( index ) {
1834
  maxHeight += $( this ).outerHeight();
@@ -1842,13 +1900,13 @@ function createDropdowns() {
1842
  e.stopPropagation();
1843
  });
1844
 
1845
- /* Listen for clicks on the individual dropdown items */
1846
  $this.$dropdownItem.on( "click", function( e ) {
1847
 
1848
- /* Set the correct value as the selected item */
1849
  $this.$dropdownWrap.find( $( ".wpsl-selected-item" ) ).html( $( this ).text() ).attr( "data-value", $( this ).attr( "data-value" ) );
1850
 
1851
- /* Apply the class to the correct item to make it bold */
1852
  $this.$dropdownItem.removeClass( "wpsl-selected-dropdown" );
1853
  $( this ).addClass( "wpsl-selected-dropdown" );
1854
 
@@ -1864,9 +1922,9 @@ function createDropdowns() {
1864
  }
1865
 
1866
  /**
1867
- * Close all the dropdowns
1868
  *
1869
- * @since 1.2.24
1870
  * @returns void
1871
  */
1872
  function closeDropdowns() {
@@ -1889,8 +1947,8 @@ function closeDropdowns() {
1889
  * is to simply disable the "Attempt to auto-locate the user" option if
1890
  * you use the store locator in a tab.
1891
  *
1892
- * @see http://stackoverflow.com/questions/9458215/google-maps-not-working-in-jquery-tabs
1893
- * @since 2.0
1894
  */
1895
  if ( $( "a[href='#" + wpslSettings.mapTabAnchor + "']" ).length ) {
1896
  var mapZoom, mapCenter,
10
  autoLoad = ( typeof wpslSettings !== "undefined" ) ? wpslSettings.autoLoad : "";
11
 
12
  /**
13
+ * Set the underscore template settings.
14
  *
15
  * Defining them here prevents other plugins
16
  * that also use underscore / backbone, and defined a
17
  * different _.templateSettings from breaking the
18
  * rendering of the store locator template.
19
  *
20
+ * @link http://underscorejs.org/#template
21
+ * @requires underscore.js
22
+ * @since 2.0.0
23
  */
24
  _.templateSettings = {
25
  evaluate: /\<\%(.+?)\%\>/g,
27
  escape: /\<\%-(.+?)\%\>/g
28
  };
29
 
30
+ // Only continue if a map is present.
31
  if ( $( ".wpsl-gmap-canvas" ).length ) {
32
  $( "<img />" ).attr( "src", wpslSettings.path + "img/ajax-loader.gif" );
33
 
34
+ /*
35
+ * The [wpsl] shortcode can only exist once on a page,
36
  * but the [wpsl_map] shortcode can exist multiple times.
37
  *
38
  * So to make sure we init all the maps we loop over them.
45
  }
46
 
47
  /**
48
+ * Initialize the map with the correct settings.
49
  *
50
+ * @since 1.0.0
51
+ * @param {string} mapId The id of the map div
52
+ * @param {number} mapIndex Number of the map
53
  * @returns {void}
54
  */
55
  function initializeGmap( mapId, mapIndex ) {
56
  var mapOptions, settings, infoWindow, latLng, bounds, mapData, locationCount,
57
  maxZoom = Number( wpslSettings.autoZoomLevel );
58
 
59
+ // Get the settings that belong to the map.
60
  settings = getMapSettings( mapIndex );
61
 
62
+ // Create a new infoWindow, either with the infobox libray or use the default one.
63
  infoWindow = newInfoWindow();
64
 
65
  geocoder = new google.maps.Geocoder();
66
  directionsDisplay = new google.maps.DirectionsRenderer();
67
  directionsService = new google.maps.DirectionsService();
68
 
69
+ // Set the map options.
70
  mapOptions = {
71
  zoom: Number( settings.zoomLevel ),
72
  center: settings.startLatLng,
81
 
82
  map = new google.maps.Map( document.getElementById( mapId ), mapOptions );
83
 
84
+ // Check if we need to apply a map style.
85
  maybeApplyMapStyle( settings.mapStyle );
86
 
87
  if ( ( typeof window[ "wpslMap_" + mapIndex ] !== "undefined" ) && ( typeof window[ "wpslMap_" + mapIndex ].locations !== "undefined" ) ) {
89
  mapData = window[ "wpslMap_" + mapIndex ].locations,
90
  locationCount = mapData.length;
91
 
92
+ // Loop over the map data, create the infowindow object and add each marker.
93
  $.each( mapData, function( index ) {
94
  latLng = new google.maps.LatLng( mapData[index].lat, mapData[index].lng );
95
  addMarker( latLng, mapData[index].id, mapData[index], false, infoWindow );
96
  bounds.extend( latLng );
97
  });
98
 
99
+ // Make all the markers fit on the map.
100
  map.fitBounds( bounds );
101
 
102
+ // Make sure we don't zoom to far.
103
  google.maps.event.addListenerOnce( map, "bounds_changed", ( function( currentMap ) {
104
  return function() {
105
  if ( currentMap.getZoom() > maxZoom ) {
109
  }( map ) ) );
110
  }
111
 
112
+ // Only run this part if the store locator exist and we don't just have a basic map.
113
  if ( $( "#wpsl-gmap" ).length ) {
114
 
115
+ /*
116
+ * Not the most optimal solution, but we check the useragent if we should enable the styled dropdowns.
117
  *
118
  * We do this because several people have reported issues with the styled dropdowns on
119
  * iOS and Android devices. So on mobile devices the dropdowns will be styled according
126
  $( "#wpsl-wrap" ).addClass( "wpsl-mobile" );
127
  }
128
 
129
+ // Check if we need to autolocate the user, or autoload the store locations.
130
  if ( wpslSettings.autoLocate == 1 ) {
131
  checkGeolocation( settings.startLatLng, infoWindow );
132
  } else if ( wpslSettings.autoLoad == 1 ) {
133
  showStores( settings.startLatLng, infoWindow );
134
  }
135
 
136
+ // Move the mousecursor to the store search field if the focus option is enabled.
137
  if ( wpslSettings.mouseFocus == 1 && !checkMobileUserAgent() ) {
138
  $( "#wpsl-search-input" ).focus();
139
  }
140
 
141
+ // Bind store search button.
142
  searchLocationBtn( infoWindow );
143
 
144
+ // Add the 'reload' and 'find location' icon to the map.
145
  mapControlIcons( settings, map, infoWindow );
146
  }
147
 
148
+ // Bind the zoom_changed listener.
149
  zoomChangedListener();
150
  }
151
 
155
  *
156
  * The 'max auto zoom level' is set on the settings page.
157
  *
158
+ * @since 2.0.0
159
  * @returns {void}
160
  */
161
  function zoomChangedListener() {
168
  }
169
 
170
  /**
171
+ * Get the correct map settings.
172
  *
173
+ * @since 2.0.0
174
+ * @param {number} mapIndex Number of the map
175
  * @returns {object} mapSettings The map settings either set through a shortcode or the default settings
176
  */
177
  function getMapSettings( mapIndex ) {
187
  controlPosition: wpslSettings.controlPosition
188
  };
189
 
190
+ // If there are settings that are set through the shortcode, then we use them instead of the default ones.
191
  if ( ( typeof window[ "wpslMap_" + mapIndex ] !== "undefined" ) && ( typeof window[ "wpslMap_" + mapIndex ].shortCode !== "undefined" ) ) {
192
  for ( j = 0, len = settingOptions.length; j < len; j++ ) {
193
  shortCodeVal = window[ "wpslMap_" + mapIndex ].shortCode[ settingOptions[j] ];
194
 
195
+ // If the value is set through the shortcode, we overwrite the default value.
196
  if ( typeof shortCodeVal !== "undefined" ) {
197
  mapSettings[ settingOptions[j] ] = shortCodeVal;
198
  }
205
  }
206
 
207
  /**
208
+ * Get the latlng coordinates that are used to init the map.
209
  *
210
+ * @since 2.0.0
211
+ * @param {number} mapIndex Number of the map
212
  * @returns {object} startLatLng The latlng value where the map will initially focus on
213
  */
214
  function getStartLatlng( mapIndex ) {
215
  var startLatLng, latLng,
216
  firstLocation = "";
217
 
218
+ /*
219
+ * Maps that are added with the [wpsl_map] shortcode will have the locations key set.
220
  * If it exists we use the coordinates from the first location to center the map on.
221
  */
222
  if ( ( typeof window[ "wpslMap_" + mapIndex ] !== "undefined" ) && ( typeof window[ "wpslMap_" + mapIndex ].locations !== "undefined" ) ) {
223
  firstLocation = window[ "wpslMap_" + mapIndex ].locations[0];
224
  }
225
 
226
+ /*
227
+ * Either use the coordinates from the first location as the start coordinates
228
  * or the default start point defined on the settings page.
229
  *
230
  * If both are not available we set it to 0,0
242
  }
243
 
244
  /**
245
+ * Create a new infoWindow object.
246
  *
247
+ * Either use the default infoWindow or use the infobox library.
248
  *
249
+ * @since 2.0.0
250
  * @return {object} infoWindow The infoWindow object
251
  */
252
  function newInfoWindow() {
253
  var boxClearance, boxPixelOffset,
254
  infoBoxOptions = {};
255
 
256
+ // Do we need to use the infobox script or use the default info windows?
257
  if ( ( typeof wpslSettings.infoWindowStyle !== "undefined" ) && ( wpslSettings.infoWindowStyle == "infobox" ) ) {
258
 
259
+ // See http://google-maps-utility-library-v3.googlecode.com/svn/trunk/infobox/docs/reference.html.
260
  boxClearance = wpslSettings.infoBoxClearance.split( "," );
261
  boxPixelOffset = wpslSettings.infoBoxPixelOffset.split( "," );
262
  infoBoxOptions = {
281
  }
282
 
283
  /**
284
+ * Check if we have a map style that we need to apply to the map.
285
  *
286
+ * @since 2.0.0
287
+ * @param {string} mapStyle The id of the map
288
  * @return {void}
289
  */
290
  function maybeApplyMapStyle( mapStyle ) {
291
 
292
+ // Make sure the JSON is valid before applying it as a map style.
293
  mapStyle = tryParseJSON( mapStyle );
294
 
295
  if ( mapStyle ) {
300
  /**
301
  * Make sure the JSON is valid.
302
  *
303
+ * @link http://stackoverflow.com/a/20392392/1065294
304
+ * @since 2.0.0
305
+ * @param {string} jsonString The JSON data
306
+ * @return {object|boolean} The JSON string or false if it's invalid json.
307
  */
308
  function tryParseJSON( jsonString ) {
309
 
310
  try {
311
  var o = JSON.parse( jsonString );
312
 
313
+ /*
314
+ * Handle non-exception-throwing cases:
315
+ * Neither JSON.parse(false) or JSON.parse(1234) throw errors, hence the type-checking,
316
+ * but... JSON.parse(null) returns 'null', and typeof null === "object",
317
+ * so we must check for that, too.
318
+ */
319
  if ( o && typeof o === "object" && o !== null ) {
320
  return o;
321
  }
326
  }
327
 
328
  /**
329
+ * Add the start marker and call the function that inits the store search.
330
  *
331
+ * @since 1.1.0
332
+ * @param {object} startLatLng The start coordinates
333
+ * @param {object} infoWindow The infoWindow object
334
  * @returns {void}
335
  */
336
  function showStores( startLatLng, infoWindow ) {
337
+ addMarker( startLatLng, 0, '', true, infoWindow ); // This marker is the 'start location' marker. With a storeId of 0, no name and is draggable
 
 
 
 
338
  findStoreLocations( startLatLng, resetMap, autoLoad, infoWindow );
339
  }
340
 
341
  /**
342
+ * Compare the current useragent to a list of known mobile useragents ( not optimal, I know ).
343
  *
344
+ * @since 1.2.20
345
  * @returns {boolean} Whether the useragent is from a known mobile useragent or not.
346
  */
347
  function checkMobileUserAgent() {
352
  * Check if Geolocation detection is supported.
353
  *
354
  * If there is an error / timeout with determining the users
355
+ * location, then we use the 'start point' value from the settings
356
+ * as the start location through the showStores function.
357
  *
358
+ * @since 1.0.0
359
+ * @param {object} startLatLng The start coordinates
360
+ * @param {object} infoWindow The infoWindow object
361
  * @returns {void}
362
  */
363
  function checkGeolocation( startLatLng, infoWindow ) {
367
  keepStartMarker = false,
368
  timeout = Number( wpslSettings.geoLocationTimout );
369
 
370
+ // Make the direction icon flash every 600ms to indicate the geolocation attempt is in progress.
371
  geolocationInProgress = setInterval( function() {
372
  $( ".wpsl-icon-direction" ).toggleClass( "wpsl-active-icon" );
373
  }, 600 );
374
 
375
+ /*
376
+ * If the user doesn't approve the geolocation request within the value set in
377
  * wpslSettings.geoLocationTimout, then the default map is loaded.
378
  *
379
  * You can increase the timeout value with the wpsl_geolocation_timeout filter.
387
  geolocationFinished( geolocationInProgress );
388
  clearTimeout( locationTimeout );
389
 
390
+ /*
391
+ * If the timeout is triggerd and the user later decides to enable
392
  * the geolocation detection again, it gets messy with multiple start markers.
393
  *
394
  * So we first clear the map before adding new ones.
397
  handleGeolocationQuery( startLatLng, position, resetMap, infoWindow );
398
  }, function( error ) {
399
 
400
+ /*
401
+ * Only show the geocode errors if the user actually clicked on the direction icon.
402
  *
403
+ * Otherwise if the "Attempt to auto-locate the user" option is enabled on the settings page,
404
  * and the geolocation attempt fails for whatever reason ( blocked in browser, unavailable etc ).
405
  * Then the first thing the visitor will see on pageload is an alert box, which isn't very userfriendly.
406
  *
407
+ * If an error occurs on pageload without the user clicking on the direction icon,
408
  * the default map is shown without any alert boxes.
409
  */
410
  if ( $( ".wpsl-icon-direction" ).hasClass( "wpsl-user-activated") ) {
436
  }
437
  }
438
 
439
+ /**
440
+ * Clean up after the geolocation attempt finished.
441
+ *
442
+ * @since 2.0.0
443
+ * @param {number} geolocationInProgress
444
+ * @returns {void}
445
+ */
446
  function geolocationFinished( geolocationInProgress ) {
447
  clearInterval( geolocationInProgress );
448
  $( ".wpsl-icon-direction" ).removeClass( "wpsl-active-icon" );
449
  }
450
 
451
  /**
452
+ * Handle the data returned from the Geolocation API.
453
  *
454
  * If there is an error / timeout determining the users location,
455
  * then we use the 'start point' value from the settings as the start location through the showStores function.
456
  *
457
+ * @since 1.0.0
458
+ * @param {object} startLatLng The start coordinates
459
+ * @param {object} position The latlng coordinates from the geolocation attempt
460
+ * @param {boolean} resetMap Whether we should reset the map or not
461
+ * @param {object} infoWindow The infoWindow object
462
  * @returns {void}
463
  */
464
+ function handleGeolocationQuery( startLatLng, position, resetMap, infoWindow ) {
465
 
466
  if ( typeof( position ) === "undefined" ) {
467
  showStores( startLatLng, infoWindow );
468
  } else {
469
  var latLng = new google.maps.LatLng( position.coords.latitude, position.coords.longitude );
470
 
471
+ /*
472
+ * Store the latlng from the geolocation for when the user hits "reset" again
473
  * without having to ask for permission again.
474
  */
475
  geolocationLatlng = position;
476
 
477
  reverseGeocode( latLng ); // Set the zipcode that belongs to the latlng in the input field
478
  map.setCenter( latLng );
479
+ addMarker( latLng, 0, '', true, infoWindow ); // This marker is the 'start location' marker. With a storeId of 0, no name and is draggable
480
  findStoreLocations( latLng, resetMap, autoLoad, infoWindow );
481
  }
482
  }
483
 
484
  /**
485
+ * Handle clicks on the store locator search button.
486
  *
487
+ * @since 1.0.0
488
+ * @param {object} infoWindow The infoWindow object
489
  * @returns {void}
490
  */
491
  function searchLocationBtn( infoWindow ) {
504
 
505
  resetMap = false;
506
 
507
+ // Force the open InfoBox info window to close.
508
  closeInfoBoxWindow();
509
 
510
  deleteOverlays( keepStartMarker );
520
  * This is required if the user makes a new search,
521
  * or clicks on the "Directions" link.
522
  *
523
+ * @since 2.0.0
524
  * @return {void}
525
  */
526
  function closeInfoBoxWindow() {
530
  }
531
 
532
  /**
533
+ * Add the 'reload' and 'find location' icon to the map.
534
  *
535
+ * @since 2.0.0
536
+ * @param {object} settings Map settings
537
+ * @param {object} map The map object
538
+ * @param {object} infoWindow The info window object
539
  * @return {void}
540
  */
541
  function mapControlIcons( settings, map, infoWindow ) {
542
 
543
+ // Once the map has finished loading include the map control button(s).
544
  google.maps.event.addListenerOnce( map, "tilesloaded", function() {
545
 
546
+ // Add the html for the map controls to the map.
547
  $( ".gm-style" ).append( wpslSettings.mapControls );
548
 
549
  if ( $( ".wpsl-icon-reset, #wpsl-reset-map" ).length > 0 ) {
550
 
551
+ // Bind the reset map button.
552
  resetMapBtn( settings.startLatLng, infoWindow );
553
 
554
+ /*
555
+ * Hide it to prevent users from clicking it before
556
  * the store location are placed on the map.
557
  */
558
  $( ".wpsl-icon-reset" ).hide();
559
  }
560
 
561
+ // Bind the direction button to trigger a new geolocation request.
562
  $( ".wpsl-icon-direction" ).on( "click", function() {
563
  $( this ).addClass( "wpsl-user-activated" );
564
  checkGeolocation( settings.startLatLng, infoWindow );
567
  }
568
 
569
  /**
570
+ * Handle clicks on the "Reset" button.
571
  *
572
+ * @since 1.0.0
573
+ * @param {object} startLatLng The start coordinates
574
+ * @param {object} infoWindow The infoWindow object
575
  * @returns {void}
576
  */
577
  function resetMapBtn( startLatLng, infoWindow ) {
579
  var keepStartMarker = false,
580
  resetMap = true;
581
 
582
+ /*
583
+ * Check if a map reset is already in progress,
584
  * if so prevent another one from starting.
585
  */
586
  if ( $( this ).hasClass( "wpsl-in-progress" ) ) {
587
  return;
588
  }
589
 
590
+ /*
591
+ * When the start marker is dragged the autoload value is set to false.
592
+ * So we need to check the correct value when the reset button is
593
+ * pushed before reloading the stores.
594
  */
595
  if ( wpslSettings.autoLoad == 1 ) {
596
  autoLoad = 1;
597
  }
598
 
599
+ // Check if the latlng or zoom has changed since pageload, if so there is something to reset.
600
  if ( ( ( ( map.getCenter().lat() !== mapDefaults.centerLatlng.lat() ) || ( map.getCenter().lng() !== mapDefaults.centerLatlng.lng() ) || ( map.getZoom() !== mapDefaults.zoomLevel ) ) ) ) {
601
  deleteOverlays( keepStartMarker );
602
 
603
  $( "#wpsl-search-input" ).val( "" ).removeClass();
604
 
605
+ // We use this to prevent multiple reset request.
606
  $( ".wpsl-icon-reset" ).addClass( "wpsl-in-progress" );
607
 
608
+ // If marker clusters exist, remove them from the map.
609
  if ( markerClusterer ) {
610
  markerClusterer.clearMarkers();
611
  }
612
 
613
+ // Remove the start marker.
614
  deleteStartMarker();
615
 
616
+ // Reset the dropdown values.
617
  resetDropdowns();
618
 
619
  if ( wpslSettings.autoLocate == 1 ) {
623
  }
624
  }
625
 
626
+ // Make sure the stores are shown and the direction details are hidden.
627
  $( "#wpsl-stores" ).show();
628
  $( "#wpsl-direction-details" ).hide();
629
  });
630
  }
631
 
632
  /**
633
+ * Remove the start marker from the map.
634
  *
635
+ * @since 1.2.12
636
  * @returns {void}
637
  */
638
  function deleteStartMarker() {
646
  * Reset the dropdown values for the max results,
647
  * and search radius after the "reset" button is triggerd.
648
  *
649
+ * @since 1.1.0
650
  * @returns {void}
651
  */
652
  function resetDropdowns() {
688
  }
689
  }
690
 
691
+ // Handle the click on the back button when the route directions are displayed.
692
  $( "#wpsl-result-list" ).on( "click", ".wpsl-back", function() {
693
  var i, len;
694
 
695
+ // Remove the directions from the map.
696
  directionsDisplay.setMap( null );
697
 
698
+ // Restore the store markers on the map.
699
  for ( i = 0, len = markersArray.length; i < len; i++ ) {
700
  markersArray[i].setMap( map );
701
  }
702
 
703
+ // Restore the start marker on the map.
704
  if ( ( typeof( startMarkerData ) !== "undefined" ) && ( startMarkerData !== "" ) ) {
705
  startMarkerData.setMap( map );
706
  }
707
 
708
+ // If marker clusters are enabled, restore them.
709
  if ( markerClusterer ) {
710
  checkMarkerClusters();
711
  }
721
  });
722
 
723
  /**
724
+ * Show the driving directions.
725
  *
726
+ * @since 1.1.0
727
+ * @param {object} e The clicked elemennt
728
  * @returns {void}
729
  */
730
  function renderDirections( e ) {
731
  var i, start, end, len, storeId;
732
 
733
+ // Force the open InfoBox info window to close.
734
  closeInfoBoxWindow();
735
 
736
  /*
737
+ * The storeId is placed on the li in the results list,
738
+ * but in the marker it will be on the wrapper div. So we check which one we need to target.
739
+ */
740
  if ( e.parents( "li" ).length > 0 ) {
741
  storeId = e.parents( "li" ).data( "store-id" );
742
  } else {
743
  storeId = e.parents( ".wpsl-info-window" ).data( "store-id" );
744
  }
745
 
746
+ // Check if we need to get the start point from a dragged marker.
747
  if ( ( typeof( startMarkerData ) !== "undefined" ) && ( startMarkerData !== "" ) ) {
748
  start = startMarkerData.getPosition();
749
  }
750
 
751
+ // Used to restore the map back to the state it was in before the user clicked on 'directions'.
752
  directionMarkerPosition = {
753
  centerLatlng: map.getCenter(),
754
  zoomLevel: map.getZoom()
755
  };
756
 
757
+ // Find the latlng that belongs to the start and end point.
758
  for ( i = 0, len = markersArray.length; i < len; i++ ) {
759
 
760
+ // Only continue if the start data is still empty or undefined.
761
  if ( ( markersArray[i].storeId == 0 ) && ( ( typeof( start ) === "undefined" ) || ( start === "" ) ) ) {
762
  start = markersArray[i].getPosition();
763
  } else if ( markersArray[i].storeId == storeId ) {
802
  }
803
 
804
  /**
805
+ * Let a single marker bounce.
806
  *
807
+ * @since 1.0.0
808
+ * @param {number} storeId The storeId of the marker that we need to bounce on the map
809
+ * @param {string} status Indicates whether we should stop or start the bouncing
810
  * @returns {void}
811
  */
812
  function letsBounce( storeId, status ) {
813
  var i, len, marker;
814
 
815
+ // Find the correct marker to bounce based on the storeId.
816
  for ( i = 0, len = markersArray.length; i < len; i++ ) {
817
  if ( markersArray[i].storeId == storeId ) {
818
  marker = markersArray[i];
827
  }
828
 
829
  /**
830
+ * Calculate the route from the start to the end.
831
  *
832
+ * @since 1.0.0
833
+ * @param {object} start The latlng from the start point
834
+ * @param {object} end The latlng from the end point
835
  * @returns {void}
836
  */
837
  function calcRoute( start, end ) {
860
  if ( response.routes.length > 0 ) {
861
  direction = response.routes[0];
862
 
863
+ // Loop over the legs and steps of the directions.
864
  for ( i = 0; i < direction.legs.length; i++ ) {
865
  legs = direction.legs[i];
866
 
874
  $( "#wpsl-direction-details ul" ).append( directionStops ).before( "<div class='wpsl-direction-before'><a class='wpsl-back' id='wpsl-direction-start' href='#'>" + wpslLabels.back + "</a><div><span class='wpsl-total-distance'>" + direction.legs[0].distance.text + "</span> - <span class='wpsl-total-durations'>" + direction.legs[0].duration.text + "</span></div></div>" ).after( "<p class='wpsl-direction-after'>" + response.routes[0].copyrights + "</p>" );
875
  $( "#wpsl-direction-details" ).show();
876
 
877
+ // Remove all single markers from the map.
878
  for ( i = 0, len = markersArray.length; i < len; i++ ) {
879
  markersArray[i].setMap( null );
880
  }
881
 
882
+ // Remove the marker clusters from the map.
883
  if ( markerClusterer ) {
884
  markerClusterer.clearMarkers();
885
  }
886
 
887
+ // Remove the start marker from the map.
888
  if ( ( typeof( startMarkerData ) !== "undefined" ) && ( startMarkerData !== "" ) ) {
889
  startMarkerData.setMap( null );
890
  }
891
 
892
  $( "#wpsl-stores" ).hide();
893
 
894
+ // Make sure the start of the route directions are visible if the store listings are shown below the map.
895
  if ( wpslSettings.templateId == 1 ) {
896
  directionOffset = $( "#wpsl-gmap" ).offset();
897
  $( window ).scrollTop( directionOffset.top );
904
  }
905
 
906
  /**
907
+ * Geocode the user input.
908
  *
909
+ * @since 1.0.0
910
+ * @param {object} infoWindow The infoWindow object
911
  * @returns {void}
912
  */
913
  function codeAddress( infoWindow ) {
915
  autoLoad = false,
916
  keepStartMarker = false,
917
  address = $( "#wpsl-search-input" ).val();
918
+
919
  geocoder.geocode( { 'address': address}, function( response, status ) {
920
+ if ( status == google.maps.GeocoderStatus.OK ) {
921
  latLng = response[0].geometry.location;
922
+
923
+ // Remove any previous markers and add a new one.
924
  deleteOverlays( keepStartMarker );
925
+ addMarker( latLng, 0, '', true, infoWindow ); // This marker is the 'start location' marker.
926
 
927
+ // Try to find stores that match the radius, location criteria.
928
  findStoreLocations( latLng, resetMap, autoLoad, infoWindow );
929
  } else {
930
  geocodeErrors( status );
933
  }
934
 
935
  /**
936
+ * Geocode the user input and set the returned zipcode in the input field.
937
  *
938
+ * @since 1.0.0
939
+ * @param {object} latLng The coordinates of the location that should be reverse geocoded
940
  * @returns {void}
941
  */
942
  function reverseGeocode( latLng ) {
956
  }
957
 
958
  /**
959
+ * Filter out the zipcode from the response.
960
  *
961
+ * @since 1.0.0
962
+ * @param {object} response The complete Google API response
963
+ * @returns {string} zipcode The zipcode
964
  */
965
  function filterApiResponse( response ) {
966
  var zipcode, responseType, i,
967
  addressLength = response[0].address_components.length;
968
 
969
+ // Loop over the API response.
970
  for ( i = 0; i < addressLength; i++ ){
971
  responseType = response[0].address_components[i].types;
972
 
973
+ // filter out the postal code.
974
  if ( ( /^postal_code$/.test( responseType ) ) || ( /^postal_code_prefix,postal_code$/.test( responseType ) ) ) {
975
  zipcode = response[0].address_components[i].long_name;
976
  }
985
  * If we need to show the driving directions on maps.google.com itself,
986
  * we first need to geocode the start latlng into a formatted address.
987
  *
988
+ * @since 1.0.0
989
+ * @param {object} startLatLng The latlng used as the starting point
990
+ * @param {boolean} resetMap Whether we should reset the map or not
991
+ * @param {string} autoLoad Check if we need to autoload all the stores
992
+ * @param {object} infoWindow The infoWindow object
993
  * @returns {void}
994
  */
995
  function findStoreLocations( startLatLng, resetMap, autoLoad, infoWindow ) {
996
 
997
+ // Check if we need to open a new window and show the route on the Google Maps site itself.
998
  if ( wpslSettings.directionRedirect == 1 ) {
999
  findFormattedAddress( startLatLng, function() {
1000
  makeAjaxRequest( startLatLng, resetMap, autoLoad, infoWindow );
1005
  }
1006
 
1007
  /**
1008
+ * Convert the latlng into a formatted address.
1009
  *
1010
+ * @since 1.0.0
1011
+ * @param {object} latLng The latlng to geocode
1012
+ * @param {callback} callback
1013
  * @returns {void}
1014
  */
1015
  function findFormattedAddress( latLng, callback ) {
1024
  }
1025
 
1026
  /**
1027
+ * Make the Ajax request to load the store data.
1028
  *
1029
+ * @since 1.2.0
1030
+ * @param {object} startLatLng The latlng used as the starting point
1031
+ * @param {boolean} resetMap Whether we should reset the map or not
1032
+ * @param {string} autoLoad Check if we need to autoload all the stores
1033
+ * @param {object} infoWindow The infoWindow object
1034
  * @returns {void}
1035
  */
1036
  function makeAjaxRequest( startLatLng, resetMap, autoLoad, infoWindow ) {
1048
  lng: startLatLng.lng()
1049
  };
1050
 
1051
+ /*
1052
+ * If we reset the map we use the default dropdown values instead of the selected values.
1053
  * Otherwise we first make sure the filter val is valid before including the radius / max_results param
1054
  */
1055
  if ( resetMap ) {
1064
  radius = parseInt( $( "#wpsl-radius .wpsl-selected-item" ).attr( "data-value" ) );
1065
  }
1066
 
1067
+ // If the max resuls or radius filter values are NaN, then we use the default value.
1068
  if ( isNaN( maxResult ) ) {
1069
  ajaxData.max_results = wpslSettings.maxResults;
1070
  } else {
1077
  ajaxData.radius = radius;
1078
  }
1079
 
1080
+ // If the category dropdown exist get the id.
1081
  if ( $( "#wpsl-category" ).length > 0 ) {
1082
  if ( isMobile ) {
1083
  categoryId = parseInt( $( "#wpsl-category .wpsl-dropdown" ).val() );
1116
  }
1117
  }
1118
 
1119
+ // Add the preloader.
1120
  $storeList.empty().append( "<li class='wpsl-preloader'><img src='" + preloader + "'/>" + wpslLabels.preloader + "</li>" );
1121
 
1122
  $.get( wpslSettings.ajaxurl, ajaxData, function( response ) {
1123
 
1124
+ // Remove the preloaders and no results msg.
1125
  $( ".wpsl-preloader, .no-results" ).remove();
1126
+
1127
  if ( response.length > 0 ) {
1128
 
1129
+ // Loop over the returned locations.
1130
  $.each( response, function( index ) {
1131
  _.extend( response[index], templateHelpers );
1132
 
1133
+ // Add the location maker to the map.
1134
  latLng = new google.maps.LatLng( response[index].lat, response[index].lng );
1135
  addMarker( latLng, response[index].id, response[index], draggable, infoWindow );
1136
 
1137
+ // Create the html output with help from underscore js.
1138
  storeData = storeData + _.template( template, response[index] );
1139
  });
1140
 
1141
  $( "#wpsl-result-list" ).off( "click", ".wpsl-directions" );
1142
 
1143
+ // Add the html for the store listing to the <ul>.
1144
  $storeList.append( storeData );
1145
 
1146
  $( "#wpsl-result-list" ).on( "click", ".wpsl-directions", function() {
1147
 
1148
+ // Check if we need to render the direction on the map.
1149
  if ( wpslSettings.directionRedirect != 1 ) {
1150
  renderDirections( $( this ) );
1151
 
1153
  }
1154
  });
1155
 
1156
+ // Do we need to create a marker cluster?
1157
  checkMarkerClusters();
1158
 
1159
+ // Make sure everything fits on the screen.
1160
  fitBounds();
1161
 
1162
  $( "#wpsl-result-list p:empty" ).remove();
1164
  $storeList.html( "<li class='no-results'>" + wpslLabels.noResults + "</li>" );
1165
  }
1166
 
1167
+ /*
1168
+ * Store the default zoom and latlng values the first time
1169
  * all the stores are added to the map.
1170
  *
1171
  * This way when a user clicks the reset button we can check if the
1180
  zoomLevel: map.getZoom()
1181
  };
1182
 
1183
+ /*
1184
+ * Because the reset icon exists, we need to adjust
1185
  * the styling of the direction icon.
1186
  */
1187
  $( "#wpsl-map-controls" ).addClass( "wpsl-reset-exists" );
1188
 
1189
+ /*
1190
+ * The reset initialy is set to hidden to prevent
1191
  * users from clicking it before the map is loaded.
1192
  */
1193
  $( ".wpsl-icon-reset, #wpsl-reset-map" ).show();
1198
  }
1199
  });
1200
 
1201
+ // Move the mousecursor to the store search field if the focus option is enabled.
1202
  if ( wpslSettings.mouseFocus == 1 && !checkMobileUserAgent() ) {
1203
  $( "#wpsl-search-input" ).focus();
1204
  }
1233
  }
1234
 
1235
  /**
1236
+ * Add a new marker to the map based on the provided location (latlng).
1237
  *
1238
+ * @since 1.0.0
1239
+ * @param {object} latLng The coordinates
1240
+ * @param {number} storeId The store id
1241
+ * @param {object} infoWindowData The data we need to show in the info window
1242
+ * @param {boolean} draggable Should the marker be draggable
1243
+ * @param {object} infoWindow The infoWindow object
1244
  * @return {void}
1245
  */
1246
  function addMarker( latLng, storeId, infoWindowData, draggable, infoWindow ) {
1247
+ var markerPath, mapIcon, marker,
1248
  keepStartMarker = true;
1249
 
1250
  if ( storeId === 0 ) {
1251
+ infoWindowData = {
1252
+ store: wpslLabels.startPoint
1253
+ };
1254
+
1255
  markerPath = wpslSettings.path + "img/markers/" + wpslSettings.startMarker;
1256
  } else {
1257
  markerPath = wpslSettings.path + "img/markers/" + wpslSettings.storeMarker;
1260
  mapIcon = {
1261
  url: markerPath,
1262
  scaledSize: new google.maps.Size( 24,35 ), //retina format
1263
+ origin: new google.maps.Point( 0,0 ),
1264
  anchor: new google.maps.Point( 12,35 )
1265
  };
1266
 
1268
  position: latLng,
1269
  map: map,
1270
  optimized: false, //fixes markers flashing while bouncing
1271
+ title: decodeHtmlEntity( infoWindowData.store ),
1272
  draggable: draggable,
1273
  storeId: storeId,
1274
  icon: mapIcon
1275
  });
1276
 
1277
+ // Store the marker for later use.
1278
  markersArray.push( marker );
1279
 
1280
  google.maps.event.addListener( marker, "click",( function( currentMap ) {
1281
  return function() {
1282
 
1283
+ // The start marker will have a store id of 0, all others won't.
1284
  if ( storeId != 0 ) {
1285
 
1286
+ // Check if streetview is available at the clicked location.
1287
  if ( typeof wpslSettings.markerStreetView !== "undefined" && wpslSettings.markerStreetView == 1 ) {
1288
  checkStreetViewStatus( latLng, function() {
1289
  setInfoWindowContent( marker, createInfoWindowHtml( infoWindowData ), infoWindow, currentMap );
1304
  };
1305
  }( map ) ) );
1306
 
1307
+ // Only the start marker will be draggable.
1308
  if ( draggable ) {
1309
  google.maps.event.addListener( marker, "dragend", function( event ) {
1310
  deleteOverlays( keepStartMarker );
1315
  }
1316
  }
1317
 
1318
+ /**
1319
+ * Decode HTML entities.
1320
+ *
1321
+ * @link https://gist.github.com/CatTail/4174511
1322
+ * @since 2.0.4
1323
+ * @param {string} str The string to decode.
1324
+ * @returns {string} The string with the decoded HTML entities.
1325
+ */
1326
+ function decodeHtmlEntity( str ) {
1327
+ if ( str ) {
1328
+ return str.replace( /&#(\d+);/g, function( match, dec) {
1329
+ return String.fromCharCode( dec );
1330
+ });
1331
+ }
1332
+ };
1333
+
1334
+ // Check if we are using both the infobox for the info windows and have marker clusters.
1335
  if ( typeof wpslSettings.infoWindowStyle !== "undefined" && wpslSettings.infoWindowStyle == "infobox" && wpslSettings.markerClusters == 1 ) {
1336
  var clusters, clusterLen, markerLen, i, j;
1337
 
1338
+ /*
1339
+ * We need to listen to both zoom_changed and idle.
1340
  *
1341
+ * If the zoom level changes, then the marker clusters either merges nearby
1342
  * markers, or changes into individual markers. Which is the moment we
1343
  * either show or hide the opened info window.
1344
  *
1355
  for ( i = 0, clusterLen = clusters.length; i < clusterLen; i++ ) {
1356
  for ( j = 0, markerLen = clusters[i].markers_.length; j < markerLen; j++ ) {
1357
 
1358
+ /*
1359
+ * Match the storeId from the cluster marker with the
1360
+ * marker id that was set when the info window was opened
1361
+ */
1362
  if ( clusters[i].markers_[j].storeId == activeWindowMarkerId ) {
1363
 
1364
+ /*
1365
+ * If there is a visible info window, but the markers_[j].map is null ( hidden )
1366
  * it means the info window belongs to a marker that is part of a marker cluster.
1367
  *
1368
  * If that is the case then we hide the info window ( the individual marker isn't visible ).
1387
  }
1388
 
1389
  /**
1390
+ * Set the correct info window content for the marker.
1391
  *
1392
+ * @since 1.2.20
1393
+ * @param {object} marker Marker data
1394
+ * @param {string} infoWindowContent The infoWindow content
1395
+ * @param {object} infoWindow The infoWindow object
1396
+ * @param {object} currentMap The map object
1397
  * @returns {void}
1398
  */
1399
  function setInfoWindowContent( marker, infoWindowContent, infoWindow, currentMap ) {
1404
 
1405
  openInfoWindow.push( infoWindow );
1406
 
1407
+ /*
1408
+ * Store the marker id if both the marker clusters and the infobox are enabled.
1409
  *
1410
+ * With the normal info window script the info window is automatically closed
1411
+ * once a user zooms out, and the marker clusters are enabled,
1412
+ * but this doesn't happen with the infobox library.
1413
  *
1414
+ * So we need to show/hide it manually when the user zooms out,
1415
+ * and for this to work we need to know which marker to target.
1416
  */
1417
  if ( typeof wpslSettings.infoWindowStyle !== "undefined" && wpslSettings.infoWindowStyle == "infobox" && wpslSettings.markerClusters == 1 ) {
1418
  activeWindowMarkerId = marker.storeId;
1424
  * Handle clicks for the different info window actions like,
1425
  * direction, streetview and zoom here.
1426
  *
1427
+ * @since 1.2.20
1428
+ * @param {object} marker Holds the marker data
1429
+ * @param {object} currentMap The map object
1430
  * @returns {void}
1431
  */
1432
  function infoWindowClickActions( marker, currentMap ) {
1437
 
1438
  if ( $( this ).hasClass( "wpsl-directions" ) ) {
1439
 
1440
+ /*
1441
+ * Check if we need to show the direction on the map
1442
  * or send the users to maps.google.com
1443
  */
1444
  if ( wpslSettings.directionRedirect == 1 ) {
1463
  * If so we hide the 'Zoom here' text in the info window,
1464
  * otherwise we show it.
1465
  *
1466
+ * @since 2.0.0
1467
  * @returns {void}
1468
  */
1469
  function checkMaxZoomLevel() {
1477
  }
1478
 
1479
  /**
1480
+ * Activate streetview for the clicked location.
1481
  *
1482
+ * @since 1.2.20
1483
+ * @param {object} marker The current marker
1484
+ * @param {object} currentMap The map object
1485
  * @returns {void}
1486
  */
1487
  function activateStreetView( marker, currentMap ) {
1495
  }
1496
 
1497
  /**
1498
+ * Listen for changes in the streetview visibility.
1499
  *
1500
  * Sometimes the infowindow offset is incorrect after switching back from streetview.
1501
  * We fix this by zooming in and out. If someone has a better fix, then let me know at
1502
  * info at tijmensmit.com
1503
  *
1504
+ * @since 1.2.20
1505
+ * @param {object} panorama The streetview object
1506
+ * @param {object} currentMap The map object
1507
  * @returns {void}
1508
  */
1509
  function StreetViewListener( panorama, currentMap ) {
1520
  }
1521
 
1522
  /**
1523
+ * Check the streetview status.
1524
  *
1525
+ * Make sure that a streetview exists for
1526
+ * the latlng for the open info window.
1527
  *
1528
+ * @since 1.2.20
1529
+ * @param {object} latLng The latlng coordinates
1530
+ * @param {callback} callback
1531
  * @returns {void}
1532
  */
1533
  function checkStreetViewStatus( latLng, callback ) {
1540
  }
1541
 
1542
  /**
1543
+ * Helper methods for the underscore templates.
1544
  *
1545
+ * @link http://underscorejs.org/#template
1546
+ * @requires underscore.js
1547
+ * @since 2.0.0
1548
  */
1549
  var templateHelpers = {
1550
  /**
1551
+ * Make the phone number clickable if we are dealing with a mobile useragent.
1552
  *
1553
+ * @since 1.2.20
1554
+ * @param {string} phoneNumber The phone number
1555
  * @returns {string} phoneNumber Either just the plain number, or with a link wrapped around it with tel:
1556
  */
1557
  formatPhoneNumber: function( phoneNumber ) {
1565
  * Replace spaces - . and () from phone numbers.
1566
  * Also if the number starts with a + we check for a (0) and remove it.
1567
  *
1568
+ * @since 1.2.20
1569
+ * @param {string} phoneNumber The phone number
1570
  * @returns {string} phoneNumber The 'cleaned' number
1571
  */
1572
  formatClickablePhoneNumber: function( phoneNumber ) {
1577
  return phoneNumber.replace( /(-| |\(|\)|\.|)/g, "" );
1578
  },
1579
  /**
1580
+ * Create the html for the info window action.
1581
  *
1582
+ * @since 2.0.0
1583
+ * @param {string} id The store id
1584
  * @returns {string} output The html for the info window actions
1585
  */
1586
  createInfoWindowActions: function( id ) {
1606
  * Create the url that takes the user to the maps.google.com page
1607
  * and shows the correct driving directions.
1608
  *
1609
+ * @since 1.0.0
1610
+ * @param {string} id The store id
1611
  * @returns {string} directionUrl The full maps.google.com url with the encoded start + end address
1612
  */
1613
  createDirectionUrl: function( id ) {
1616
 
1617
  if ( wpslSettings.directionRedirect == 1 ) {
1618
 
1619
+ // If we somehow failed to determine the start address, just set it to empty.
1620
  if ( typeof startAddress === "undefined" ) {
1621
  startAddress = "";
1622
  }
1623
 
1624
  url.target = "target='_blank'";
1625
 
1626
+ // If the id exists the user clicked on a marker we get the direction url from the search results.
1627
  if ( typeof id !== "undefined" ) {
1628
  url.src = $( "[data-store-id=" + id + "] .wpsl-directions" ).attr( "href" );
1629
  } else {
1630
 
1631
+ // Only add a , after the zip if the zip value exists.
1632
  if ( this.zip ) {
1633
  zip = this.zip + ", ";
1634
  } else {
1651
  return directionUrl;
1652
  },
1653
  /**
1654
+ * Make the URI encoding compatible with RFC 3986.
1655
  *
1656
+ * !, ', (, ), and * will be escaped, otherwise they break the string.
1657
  *
1658
+ * @since 1.2.20
1659
+ * @param {string} str The string to encode
1660
  * @returns {string} The encoded string
1661
  */
1662
  rfc3986EncodeURIComponent: function( str ) {
1665
  };
1666
 
1667
  /**
1668
+ * Create the HTML template used in the info windows on the map.
1669
  *
1670
+ * @since 1.0.0
1671
+ * @param {object} infoWindowData The data that is shown in the info window (address, url, phone etc)
1672
+ * @returns {string} windowContent The HTML content that is placed in the info window
1673
  */
1674
  function createInfoWindowHtml( infoWindowData ) {
1675
  var windowContent, template;
1686
  }
1687
 
1688
  /**
1689
+ * Zoom the map so that all markers fit in the window.
1690
  *
1691
+ * @since 1.0.0
1692
  * @returns {void}
1693
  */
1694
  function fitBounds() {
1696
  maxZoom = Number( wpslSettings.autoZoomLevel ),
1697
  bounds = new google.maps.LatLngBounds();
1698
 
1699
+ // Make sure we don't zoom to far.
1700
  google.maps.event.addListenerOnce( map, "bounds_changed", function( event ) {
1701
  if ( this.getZoom() > maxZoom ) {
1702
  this.setZoom( maxZoom );
1711
  }
1712
 
1713
  /**
1714
+ * Remove all existing markers from the map.
1715
  *
1716
+ * @since 1.0.0
1717
+ * @param {boolean} keepStartMarker Whether or not to keep the start marker while removing all the other markers from the map
1718
  * @returns {void}
1719
  */
1720
  function deleteOverlays( keepStartMarker ) {
1722
 
1723
  directionsDisplay.setMap( null );
1724
 
1725
+ // Remove all the markers from the map, and empty the array.
1726
  if ( markersArray ) {
1727
+ for ( i = 0, markerLen = markersArray.length; i < markerLen; i++ ) {
1728
+
1729
+ // Check if we need to keep the start marker, or remove everything.
1730
  if ( keepStartMarker ) {
1731
  if ( markersArray[i].draggable != true ) {
1732
  markersArray[i].setMap( null );
1741
  markersArray.length = 0;
1742
  }
1743
 
1744
+ // If marker clusters exist, remove them from the map.
1745
  if ( markerClusterer ) {
1746
  markerClusterer.clearMarkers();
1747
  }
1750
  /**
1751
  * Handle the geocode errors.
1752
  *
1753
+ * @since 1.0.0
1754
+ * @param {string} status Contains the error code
1755
+ * @returns {void}
1756
  */
1757
  function geocodeErrors( status ) {
1758
  var msg;
1775
  /**
1776
  * Handle the driving direction errors.
1777
  *
1778
+ * @since 1.2.20
1779
+ * @param {string} status Contains the error code
1780
+ * @returns {void}
1781
  */
1782
  function directionErrors( status ) {
1783
  var msg;
1798
  alert( msg );
1799
  }
1800
 
1801
+ // Trigger the search when the user presses "enter" on the keyboard.
1802
  $( "#wpsl-search-input" ).keydown( function ( event ) {
1803
  var keypressed = event.keyCode || event.which;
1804
 
1812
  $parentLi = $( this ).parents( "li" ),
1813
  storeId = $parentLi.data( "store-id" );
1814
 
1815
+ // Check if we should show the 'more info' details.
1816
  if ( wpslSettings.moreInfoLocation == "info window" ) {
1817
  for ( i = 0, len = markersArray.length; i < len; i++ ) {
1818
  if ( markersArray[i].storeId == storeId ) {
1821
  }
1822
  } else {
1823
 
1824
+ // Check if we should set the 'more info' item to active or not.
1825
  if ( $parentLi.find( ".wpsl-more-info-listings" ).is( ":visible" ) ) {
1826
  $( this ).removeClass( "wpsl-active-details" );
1827
  } else {
1833
  $parentLi.find( ".wpsl-more-info-listings" ).toggle();
1834
  }
1835
 
1836
+ /*
1837
+ * If we show the store listings under the map, we do want to jump to the
1838
  * top of the map to focus on the opened infowindow
1839
  */
1840
  if ( wpslSettings.templateId != "default" || wpslSettings.moreInfoLocation == "store listings" ) {
1843
  });
1844
 
1845
  /**
1846
+ * Create the dropdown filters.
1847
  *
1848
  * Inspired by https://github.com/patrickkunka/easydropdown
1849
  *
1850
+ * @since 1.2.24
1851
+ * @returns {void}
1852
  */
1853
  function createDropdowns() {
1854
 
1861
  $this.$dropdown = $this.$dropdownElem.find( "ul" );
1862
  $this.$options = $this.$dropdownWrap.find( "option" );
1863
 
1864
+ // Hide the original <select> and remove the css class.
1865
  $this.hide().removeClass( "wpsl-dropdown" );
1866
 
1867
+ // Loop over the options from the <select> and move them to a <li> instead.
1868
  $.each( $this.$options, function() {
1869
  if ( $( this ).val() == $this.$selectedVal ) {
1870
  active = 'class="wpsl-selected-dropdown"';
1879
  $this.$dropdownElem.before( "<span data-value=" + $this.find( ":selected" ).val() + " class='wpsl-selected-item'>" + $this.find( ":selected" ).text() + "</span>" );
1880
  $this.$dropdownItem = $this.$dropdownElem.find( "li" );
1881
 
1882
+ // Listen for clicks on the 'wpsl-dropdown' div.
1883
  $this.$dropdownWrap.on( "click", function( e ) {
1884
  closeDropdowns();
1885
 
1886
  $( this ).toggleClass( "wpsl-active" );
1887
  maxHeight = 0;
1888
 
1889
+ // Either calculate the correct height for the <ul>, or set it to 0 to hide it.
1890
  if ( $( this ).hasClass( "wpsl-active" ) ) {
1891
  $this.$dropdownItem.each( function( index ) {
1892
  maxHeight += $( this ).outerHeight();
1900
  e.stopPropagation();
1901
  });
1902
 
1903
+ // Listen for clicks on the individual dropdown items.
1904
  $this.$dropdownItem.on( "click", function( e ) {
1905
 
1906
+ // Set the correct value as the selected item.
1907
  $this.$dropdownWrap.find( $( ".wpsl-selected-item" ) ).html( $( this ).text() ).attr( "data-value", $( this ).attr( "data-value" ) );
1908
 
1909
+ // Apply the class to the correct item to make it bold.
1910
  $this.$dropdownItem.removeClass( "wpsl-selected-dropdown" );
1911
  $( this ).addClass( "wpsl-selected-dropdown" );
1912
 
1922
  }
1923
 
1924
  /**
1925
+ * Close all the dropdowns.
1926
  *
1927
+ * @since 1.2.24
1928
  * @returns void
1929
  */
1930
  function closeDropdowns() {
1947
  * is to simply disable the "Attempt to auto-locate the user" option if
1948
  * you use the store locator in a tab.
1949
  *
1950
+ * @link http://stackoverflow.com/questions/9458215/google-maps-not-working-in-jquery-tabs
1951
+ * @since 2.0.0
1952
  */
1953
  if ( $( "a[href='#" + wpslSettings.mapTabAnchor + "']" ).length ) {
1954
  var mapZoom, mapCenter,
js/wpsl-gmap.min.js CHANGED
@@ -1 +1 @@
1
- jQuery(document).ready(function(e){function t(t,n){var a,c,w,u,m,h,v,S=Number(wpslSettings.autoZoomLevel);c=o(n),w=i(),G=new google.maps.Geocoder,K=new google.maps.DirectionsRenderer,F=new google.maps.DirectionsService,a={zoom:Number(c.zoomLevel),center:c.startLatLng,mapTypeId:google.maps.MapTypeId[c.mapType.toUpperCase()],mapTypeControl:Number(c.mapTypeControl)?!0:!1,scrollwheel:Number(c.scrollWheel)?!0:!1,streetViewControl:Number(c.streetView)?!0:!1,zoomControlOptions:{position:google.maps.ControlPosition[c.controlPosition.toUpperCase()+"_TOP"]}},j=new google.maps.Map(document.getElementById(t),a),l(c.mapStyle),"undefined"!=typeof window["wpslMap_"+n]&&"undefined"!=typeof window["wpslMap_"+n].locations&&(m=new google.maps.LatLngBounds,h=window["wpslMap_"+n].locations,v=h.length,e.each(h,function(e){u=new google.maps.LatLng(h[e].lat,h[e].lng),N(u,h[e].id,h[e],!1,w),m.extend(u)}),j.fitBounds(m),google.maps.event.addListenerOnce(j,"bounds_changed",function(e){return function(){e.getZoom()>S&&e.setZoom(S)}}(j))),e("#wpsl-gmap").length&&(!p()&&e(".wpsl-dropdown").length?A():(e("#wpsl-search-wrap select").show(),e("#wpsl-wrap").addClass("wpsl-mobile")),1==wpslSettings.autoLocate?d(c.startLatLng,w):1==wpslSettings.autoLoad&&r(c.startLatLng,w),1!=wpslSettings.mouseFocus||p()||e("#wpsl-search-input").focus(),g(w),f(c,j,w)),s()}function s(){"undefined"!=typeof wpslSettings.markerZoomTo&&1==wpslSettings.markerZoomTo&&google.maps.event.addListener(j,"zoom_changed",function(){O()})}function o(e){var t,s,o,i=["zoomLevel","mapType","mapTypeControl","mapStyle","streetView","scrollWheel","controlPosition"],l={zoomLevel:wpslSettings.zoomLevel,mapType:wpslSettings.mapType,mapTypeControl:wpslSettings.mapTypeControl,mapStyle:wpslSettings.mapStyle,streetView:wpslSettings.streetView,scrollWheel:wpslSettings.scrollWheel,controlPosition:wpslSettings.controlPosition};if("undefined"!=typeof window["wpslMap_"+e]&&"undefined"!=typeof window["wpslMap_"+e].shortCode)for(t=0,s=i.length;s>t;t++)o=window["wpslMap_"+e].shortCode[i[t]],"undefined"!=typeof o&&(l[i[t]]=o);return l.startLatLng=n(e),l}function n(e){var t,s,o="";return"undefined"!=typeof window["wpslMap_"+e]&&"undefined"!=typeof window["wpslMap_"+e].locations&&(o=window["wpslMap_"+e].locations[0]),"undefined"!=typeof o&&"undefined"!=typeof o.lat&&"undefined"!=typeof o.lng?t=new google.maps.LatLng(o.lat,o.lng):""!==wpslSettings.zoomLatlng?(s=wpslSettings.zoomLatlng.split(","),t=new google.maps.LatLng(s[0],s[1])):t=new google.maps.LatLng(0,0),t}function i(){var e,t,s={};return"undefined"!=typeof wpslSettings.infoWindowStyle&&"infobox"==wpslSettings.infoWindowStyle?(e=wpslSettings.infoBoxClearance.split(","),t=wpslSettings.infoBoxPixelOffset.split(","),s={alignBottom:!0,boxClass:wpslSettings.infoBoxClass,closeBoxMargin:wpslSettings.infoBoxCloseMargin,closeBoxURL:wpslSettings.infoBoxCloseUrl,content:"",disableAutoPan:Number(wpslSettings.infoBoxDisableAutoPan)?!0:!1,enableEventPropagation:Number(wpslSettings.infoBoxEnableEventPropagation)?!0:!1,infoBoxClearance:new google.maps.Size(Number(e[0]),Number(e[1])),pixelOffset:new google.maps.Size(Number(t[0]),Number(t[1])),zIndex:Number(wpslSettings.infoBoxZindex)},q=new InfoBox(s)):q=new google.maps.InfoWindow,q}function l(e){e=a(e),e&&j.setOptions({styles:e})}function a(e){try{var t=JSON.parse(e);if(t&&"object"==typeof t&&null!==t)return t}catch(s){}return!1}function r(e,t){var s={store:wpslLabels.startPoint};N(e,0,s,!0,t),I(e,ne,le,t)}function p(){return/Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent)}function d(t,s){if(navigator.geolocation){var o,n,i=!1,l=Number(wpslSettings.geoLocationTimout);o=setInterval(function(){e(".wpsl-icon-direction").toggleClass("wpsl-active-icon")},600),n=setTimeout(function(){c(o),r(t,s)},l),navigator.geolocation.getCurrentPosition(function(e){c(o),clearTimeout(n),$(i),w(t,e,ne,s)},function(o){if(e(".wpsl-icon-direction").hasClass("wpsl-user-activated")){switch(o.code){case o.PERMISSION_DENIED:alert(wpslGeolocationErrors.denied);break;case o.POSITION_UNAVAILABLE:alert(wpslGeolocationErrors.unavailable);break;case o.TIMEOUT:alert(wpslGeolocationErrors.timeout);break;default:alert(wpslGeolocationErrors.generalError)}e(".wpsl-icon-direction").removeClass("wpsl-active-icon")}else clearTimeout(n),r(t,s)},{maximumAge:6e4,timeout:l,enableHighAccuracy:!0})}else alert(wpslGeolocationErrors.unavailable),r(t,s)}function c(t){clearInterval(t),e(".wpsl-icon-direction").removeClass("wpsl-active-icon")}function w(e,t,s,o){if("undefined"==typeof t)r(e,o);else{var n=new google.maps.LatLng(t.coords.latitude,t.coords.longitude);H=t,C(n),j.setCenter(n),N(n,0,"",!0),I(n,s,le,o)}}function g(t){e("#wpsl-search-btn").on("click",function(){var s=!1;e("#wpsl-search-input").removeClass(),e("#wpsl-search-input").val()?(e("#wpsl-result-list ul").empty(),e("#wpsl-stores").show(),e(".wpsl-direction-before, .wpsl-direction-after").remove(),e("#wpsl-direction-details").hide(),ne=!1,u(),$(s),h(),y(t)):e("#wpsl-search-input").addClass("wpsl-error").focus()})}function u(){"undefined"!=typeof wpslSettings.infoWindowStyle&&"infobox"==wpslSettings.infoWindowStyle&&"undefined"!=typeof ee[0]&&ee[0].close()}function f(t,s,o){google.maps.event.addListenerOnce(s,"tilesloaded",function(){e(".gm-style").append(wpslSettings.mapControls),e(".wpsl-icon-reset, #wpsl-reset-map").length>0&&(m(t.startLatLng,o),e(".wpsl-icon-reset").hide()),e(".wpsl-icon-direction").on("click",function(){e(this).addClass("wpsl-user-activated"),d(t.startLatLng,o)})})}function m(t,s){e(".wpsl-icon-reset, #wpsl-reset-map").on("click",function(){var o=!1,n=!0;e(this).hasClass("wpsl-in-progress")||(1==wpslSettings.autoLoad&&(le=1),(j.getCenter().lat()!==oe.centerLatlng.lat()||j.getCenter().lng()!==oe.centerLatlng.lng()||j.getZoom()!==oe.zoomLevel)&&($(o),e("#wpsl-search-input").val("").removeClass(),e(".wpsl-icon-reset").addClass("wpsl-in-progress"),Y&&Y.clearMarkers(),h(),v(),1==wpslSettings.autoLocate?w(t,H,n,s):r(t,s)),e("#wpsl-stores").show(),e("#wpsl-direction-details").hide())})}function h(){"undefined"!=typeof J&&""!==J&&(J.setMap(null),J="")}function v(){var t,s,o,n,i=[wpslSettings.searchRadius+" "+wpslSettings.distanceUnit,wpslSettings.maxResults],l=["wpsl-radius","wpsl-results"];for(t=0,s=l.length;s>t;t++)e("#"+l[t]+" select").val(parseInt(i[t])),e("#"+l[t]+" li").removeClass(),"wpsl-radius"==l[t]?o=wpslSettings.searchRadius:"wpsl-results"==l[t]&&(o=wpslSettings.maxResults),e("#"+l[t]+" li").each(function(){e(this).text()===i[t]&&(e(this).addClass("wpsl-selected-dropdown"),e("#"+l[t]+" .wpsl-selected-item").html(i[t]).attr("data-value",o))});e("#wpsl-category").length&&(e("#wpsl-category select").val(0),e("#wpsl-category li").removeClass(),e("#wpsl-category li:first-child").addClass("wpsl-selected-dropdown"),n=e("#wpsl-category li:first-child").text(),e("#wpsl-category .wpsl-selected-item").html(n).attr("data-value",0))}function S(t){var s,o,n,i,l;for(u(),l=t.parents("li").length>0?t.parents("li").data("store-id"):t.parents(".wpsl-info-window").data("store-id"),"undefined"!=typeof J&&""!==J&&(o=J.getPosition()),se={centerLatlng:j.getCenter(),zoomLevel:j.getZoom()},s=0,i=te.length;i>s;s++)0!=te[s].storeId||"undefined"!=typeof o&&""!==o?te[s].storeId==l&&(n=te[s].getPosition()):o=te[s].getPosition();o&&n?(e("#wpsl-direction-details ul").empty(),e(".wpsl-direction-before, .wpsl-direction-after").remove(),b(o,n)):alert(wpslLabels.generalError)}function L(e,t){var s,o,n;for(s=0,o=te.length;o>s;s++)te[s].storeId==e&&(n=te[s],"start"==t?n.setAnimation(google.maps.Animation.BOUNCE):n.setAnimation(null))}function b(t,s){var o,n,i,l,a,r,p,d,c,w="",g={};d="km"==wpslSettings.distanceUnit?"METRIC":"IMPERIAL",g={origin:t,destination:s,travelMode:google.maps.DirectionsTravelMode.DRIVING,unitSystem:google.maps.UnitSystem[d]},F.route(g,function(t,s){if(s==google.maps.DirectionsStatus.OK){if(K.setMap(j),K.setDirections(t),t.routes.length>0){for(a=t.routes[0],r=0;r<a.legs.length;r++)for(o=a.legs[r],p=0,n=o.steps.length;n>p;p++)i=o.steps[p],l=p+1,w=w+"<li><div class='wpsl-direction-index'>"+l+"</div><div class='wpsl-direction-txt'>"+i.instructions+"</div><div class='wpsl-direction-distance'>"+i.distance.text+"</div></li>";for(e("#wpsl-direction-details ul").append(w).before("<div class='wpsl-direction-before'><a class='wpsl-back' id='wpsl-direction-start' href='#'>"+wpslLabels.back+"</a><div><span class='wpsl-total-distance'>"+a.legs[0].distance.text+"</span> - <span class='wpsl-total-durations'>"+a.legs[0].duration.text+"</span></div></div>").after("<p class='wpsl-direction-after'>"+t.routes[0].copyrights+"</p>"),e("#wpsl-direction-details").show(),r=0,n=te.length;n>r;r++)te[r].setMap(null);Y&&Y.clearMarkers(),"undefined"!=typeof J&&""!==J&&J.setMap(null),e("#wpsl-stores").hide(),1==wpslSettings.templateId&&(c=e("#wpsl-gmap").offset(),e(window).scrollTop(c.top))}}else W(s)})}function y(t){var s,o=!1,n=!1,i=e("#wpsl-search-input").val();G.geocode({address:i},function(e,i){i==google.maps.GeocoderStatus.OK?(s=e[0].geometry.location,$(n),N(s,0,"",!0,t),I(s,ne,o,t)):U(i)})}function C(t){var s;G.geocode({latLng:t},function(t,o){o==google.maps.GeocoderStatus.OK?(s=k(t),""!==s&&e("#wpsl-search-input").val(s)):U(o)})}function k(e){var t,s,o,n=e[0].address_components.length;for(o=0;n>o;o++)s=e[0].address_components[o].types,(/^postal_code$/.test(s)||/^postal_code_prefix,postal_code$/.test(s))&&(t=e[0].address_components[o].long_name);return t}function I(e,t,s,o){1==wpslSettings.directionRedirect?x(e,function(){E(e,t,s,o)}):E(e,t,s,o)}function x(e,t){G.geocode({latLng:e},function(e,s){s==google.maps.GeocoderStatus.OK?(X=e[0].formatted_address,t()):U(s)})}function E(t,s,o,n){var i,l,a,r="",d="",c=!1,w=e("#wpsl-wrap").hasClass("wpsl-mobile"),g=e("#wpsl-listing-template").html(),u=e("#wpsl-stores ul"),f=wpslSettings.path+"img/ajax-loader.gif",m={action:"store_search",lat:t.lat(),lng:t.lng()};s?(m.max_results=wpslSettings.maxResults,m.radius=wpslSettings.searchRadius):(w?(l=parseInt(e("#wpsl-results .wpsl-dropdown").val()),a=parseInt(e("#wpsl-radius .wpsl-dropdown").val())):(l=parseInt(e("#wpsl-results .wpsl-selected-item").attr("data-value")),a=parseInt(e("#wpsl-radius .wpsl-selected-item").attr("data-value"))),isNaN(l)?m.max_results=wpslSettings.maxResults:m.max_results=l,isNaN(a)?m.radius=wpslSettings.searchRadius:m.radius=a,e("#wpsl-category").length>0&&(d=w?parseInt(e("#wpsl-category .wpsl-dropdown").val()):parseInt(e("#wpsl-category .wpsl-selected-item").attr("data-value")),isNaN(d)||0===d||(m.filter=d))),1==o&&("undefined"!=typeof H?m.skip_cache=1:m.autoload=1),u.empty().append("<li class='wpsl-preloader'><img src='"+f+"'/>"+wpslLabels.preloader+"</li>"),e.get(wpslSettings.ajaxurl,m,function(t){e(".wpsl-preloader, .no-results").remove(),t.length>0?(e.each(t,function(e){_.extend(t[e],we),i=new google.maps.LatLng(t[e].lat,t[e].lng),N(i,t[e].id,t[e],c,n),r+=_.template(g,t[e])}),e("#wpsl-result-list").off("click",".wpsl-directions"),u.append(r),e("#wpsl-result-list").on("click",".wpsl-directions",function(){return 1!=wpslSettings.directionRedirect?(S(e(this)),!1):void 0}),M(),B(),e("#wpsl-result-list p:empty").remove()):u.html("<li class='no-results'>"+wpslLabels.noResults+"</li>"),1==wpslSettings.resetMap&&(e.isEmptyObject(oe)&&google.maps.event.addListenerOnce(j,"tilesloaded",function(){oe={centerLatlng:j.getCenter(),zoomLevel:j.getZoom()},e("#wpsl-map-controls").addClass("wpsl-reset-exists"),e(".wpsl-icon-reset, #wpsl-reset-map").show()}),e(".wpsl-icon-reset").removeClass("wpsl-in-progress"))}),1!=wpslSettings.mouseFocus||p()||e("#wpsl-search-input").focus()}function M(){if(1==wpslSettings.markerClusters){var e=Number(wpslSettings.clusterZoom),t=Number(wpslSettings.clusterSize);isNaN(e)&&(e=""),isNaN(t)&&(t=""),Y=new MarkerClusterer(j,te,{gridSize:t,maxZoom:e})}}function N(e,t,s,o,n){var i,l,a,r=!0;i=0===t?wpslSettings.path+"img/markers/"+wpslSettings.startMarker:wpslSettings.path+"img/markers/"+wpslSettings.storeMarker,l={url:i,scaledSize:new google.maps.Size(24,35),origin:new google.maps.Point(0,0),anchor:new google.maps.Point(12,35)},a=new google.maps.Marker({position:e,map:j,optimized:!1,title:s.store,draggable:o,storeId:t,icon:l}),te.push(a),google.maps.event.addListener(a,"click",function(o){return function(){0!=t?"undefined"!=typeof wpslSettings.markerStreetView&&1==wpslSettings.markerStreetView?Z(e,function(){P(a,V(s),n,o)}):P(a,V(s),n,o):P(a,wpslLabels.startPoint,n,o),google.maps.event.clearListeners(n,"domready"),google.maps.event.addListener(n,"domready",function(){T(a,o),O()})}}(j)),o&&google.maps.event.addListener(a,"dragend",function(e){$(r),j.setCenter(e.latLng),C(e.latLng),I(e.latLng,ne,le=!1,n)})}function P(e,t,s,o){ee.length=0,s.setContent(t),s.open(o,e),ee.push(s),"undefined"!=typeof wpslSettings.infoWindowStyle&&"infobox"==wpslSettings.infoWindowStyle&&1==wpslSettings.markerClusters&&(Q=e.storeId,s.setVisible(!0))}function T(t,s){e(".wpsl-info-actions a").on("click",function(o){var n=Number(wpslSettings.autoZoomLevel);if(o.stopImmediatePropagation(),e(this).hasClass("wpsl-directions")){if(1==wpslSettings.directionRedirect)return!0;S(e(this))}else e(this).hasClass("wpsl-streetview")?R(t,s):e(this).hasClass("wpsl-zoom-here")&&(s.setCenter(t.getPosition()),s.setZoom(n));return!1})}function O(){var t=j.getZoom();t>=wpslSettings.autoZoomLevel?e(".wpsl-zoom-here").hide():e(".wpsl-zoom-here").show()}function R(t,s){var o=s.getStreetView();o.setPosition(t.getPosition()),o.setVisible(!0),e("#wpsl-map-controls").hide(),z(o,s)}function z(t,s){google.maps.event.addListener(t,"visible_changed",function(){if(!t.getVisible()){var o=s.getZoom();e("#wpsl-map-controls").show(),s.setZoom(o-1),s.setZoom(o)}})}function Z(e,t){var s=new google.maps.StreetViewService;s.getPanoramaByLocation(e,50,function(e,s){ie=s==google.maps.StreetViewStatus.OK?!0:!1,t()})}function V(t){var s,o;return o=e("#wpsl-base-gmap_0").length?e("#wpsl-cpt-info-window-template").html():e("#wpsl-info-window-template").html(),s=_.template(o,t)}function B(){var e,t,s=Number(wpslSettings.autoZoomLevel),o=new google.maps.LatLngBounds;for(google.maps.event.addListenerOnce(j,"bounds_changed",function(e){this.getZoom()>s&&this.setZoom(s)}),e=0,t=te.length;t>e;e++)o.extend(te[e].position);j.fitBounds(o)}function $(e){var t,s;if(K.setMap(null),te){for(s=0,t=te.length;t>s;s++)e?1!=te[s].draggable?te[s].setMap(null):J=te[s]:te[s].setMap(null);te.length=0}Y&&Y.clearMarkers()}function U(e){var t;switch(e){case"ZERO_RESULTS":t=wpslLabels.noResults;break;case"OVER_QUERY_LIMIT":t=wpslLabels.queryLimit;break;default:t=wpslLabels.generalError}alert(t)}function W(e){var t;switch(e){case"NOT_FOUND":case"ZERO_RESULTS":t=wpslLabels.noDirectionsFound;break;case"OVER_QUERY_LIMIT":t=wpslLabels.queryLimit;break;default:t=wpslLabels.generalError}alert(t)}function A(){e(".wpsl-dropdown").each(function(t){var s,o,n=e(this);n.$dropdownWrap=n.wrap("<div class='wpsl-dropdown'></div>").parent(),n.$selectedVal=n.val(),n.$dropdownElem=e("<div><ul/></div>").appendTo(n.$dropdownWrap),n.$dropdown=n.$dropdownElem.find("ul"),n.$options=n.$dropdownWrap.find("option"),n.hide().removeClass("wpsl-dropdown"),e.each(n.$options,function(){s=e(this).val()==n.$selectedVal?'class="wpsl-selected-dropdown"':"",n.$dropdown.append("<li data-value="+e(this).val()+" "+s+">"+e(this).text()+"</li>")}),n.$dropdownElem.before("<span data-value="+n.find(":selected").val()+" class='wpsl-selected-item'>"+n.find(":selected").text()+"</span>"),n.$dropdownItem=n.$dropdownElem.find("li"),n.$dropdownWrap.on("click",function(t){D(),e(this).toggleClass("wpsl-active"),o=0,e(this).hasClass("wpsl-active")?(n.$dropdownItem.each(function(t){o+=e(this).outerHeight()}),n.$dropdownElem.css("height",o+2+"px")):n.$dropdownElem.css("height",0),t.stopPropagation()}),n.$dropdownItem.on("click",function(t){n.$dropdownWrap.find(e(".wpsl-selected-item")).html(e(this).text()).attr("data-value",e(this).attr("data-value")),n.$dropdownItem.removeClass("wpsl-selected-dropdown"),e(this).addClass("wpsl-selected-dropdown"),D(),t.stopPropagation()})}),e(document).click(function(){D()})}function D(){e(".wpsl-dropdown").removeClass("wpsl-active"),e(".wpsl-dropdown div").css("height",0)}var G,j,K,F,H,Q,q,Y,J,X,ee=[],te=[],se={},oe={},ne=!1,ie=!1,le="undefined"!=typeof wpslSettings?wpslSettings.autoLoad:"";if(_.templateSettings={evaluate:/\<\%(.+?)\%\>/g,interpolate:/\<\%=(.+?)\%\>/g,escape:/\<\%-(.+?)\%\>/g},e(".wpsl-gmap-canvas").length&&(e("<img />").attr("src",wpslSettings.path+"img/ajax-loader.gif"),e(".wpsl-gmap-canvas").each(function(s){var o=e(this).attr("id");t(o,s)})),e("#wpsl-result-list").on("click",".wpsl-back",function(){var t,s;for(K.setMap(null),t=0,s=te.length;s>t;t++)te[t].setMap(j);return"undefined"!=typeof J&&""!==J&&J.setMap(j),Y&&M(),j.setCenter(se.centerLatlng),j.setZoom(se.zoomLevel),e(".wpsl-direction-before, .wpsl-direction-after").remove(),e("#wpsl-stores").show(),e("#wpsl-direction-details").hide(),!1}),e("#wpsl-gmap").length&&("bounce"==wpslSettings.markerEffect?(e("#wpsl-stores").on("mouseenter","li",function(){L(e(this).data("store-id"),"start")}),e("#wpsl-stores").on("mouseleave","li",function(){L(e(this).data("store-id"),"stop")})):"info_window"==wpslSettings.markerEffect&&e("#wpsl-stores").on("mouseenter","li",function(){var t,s;for(t=0,s=te.length;s>t;t++)te[t].storeId==e(this).data("store-id")&&(google.maps.event.trigger(te[t],"click"),j.setCenter(te[t].position))})),"undefined"!=typeof wpslSettings.infoWindowStyle&&"infobox"==wpslSettings.infoWindowStyle&&1==wpslSettings.markerClusters){var ae,re,pe,de,ce;google.maps.event.addListener(j,"zoom_changed",function(){google.maps.event.addListenerOnce(j,"idle",function(){if("undefined"!=typeof Y&&(ae=Y.clusters_,ae.length))for(de=0,re=ae.length;re>de;de++)for(ce=0,pe=ae[de].markers_.length;pe>ce;ce++)if(ae[de].markers_[ce].storeId==Q){q.getVisible()&&null===ae[de].markers_[ce].map?q.setVisible(!1):q.getVisible()||null===ae[de].markers_[ce].map||q.setVisible(!0);break}})})}var we={formatPhoneNumber:function(e){return 1==wpslSettings.phoneUrl&&p()&&(e="<a href='tel:"+we.formatClickablePhoneNumber(e)+"'>"+e+"</a>"),e},formatClickablePhoneNumber:function(e){return-1!=e.indexOf("+")&&-1!=e.indexOf("(0)")&&(e=e.replace("(0)","")),e.replace(/(-| |\(|\)|\.|)/g,"")},createInfoWindowActions:function(t){var s,o="",n="";return e("#wpsl-gmap").length&&(ie&&(o="<a class='wpsl-streetview' href='#'>"+wpslLabels.streetView+"</a>"),1==wpslSettings.markerZoomTo&&(n="<a class='wpsl-zoom-here' href='#'>"+wpslLabels.zoomHere+"</a>"),s="<div class='wpsl-info-actions'>"+we.createDirectionUrl(t)+o+n+"</div>"),s},createDirectionUrl:function(t){var s,o,n,i={};return 1==wpslSettings.directionRedirect?("undefined"==typeof X&&(X=""),i.target="target='_blank'","undefined"!=typeof t?i.src=e("[data-store-id="+t+"] .wpsl-directions").attr("href"):(n=this.zip?this.zip+", ":"",o=this.address+", "+this.city+", "+n+this.country,i.src="https://maps.google.com/maps?saddr="+we.rfc3986EncodeURIComponent(X)+"&daddr="+we.rfc3986EncodeURIComponent(o))):i={src:"#",target:""},s="<a class='wpsl-directions' "+i.target+" href='"+i.src+"'>"+wpslLabels.directions+"</a>"},rfc3986EncodeURIComponent:function(e){return encodeURIComponent(e).replace(/[!'()*]/g,escape)}};if(e("#wpsl-search-input").keydown(function(t){var s=t.keyCode||t.which;13==s&&e("#wpsl-search-btn").trigger("click")}),e("#wpsl-stores").on("click",".wpsl-store-details",function(){var t,s,o=e(this).parents("li"),n=o.data("store-id");if("info window"==wpslSettings.moreInfoLocation)for(t=0,s=te.length;s>t;t++)te[t].storeId==n&&google.maps.event.trigger(te[t],"click");else o.find(".wpsl-more-info-listings").is(":visible")?e(this).removeClass("wpsl-active-details"):e(this).addClass("wpsl-active-details"),o.siblings().find(".wpsl-store-details").removeClass("wpsl-active-details"),o.siblings().find(".wpsl-more-info-listings").hide(),o.find(".wpsl-more-info-listings").toggle();return"default"!=wpslSettings.templateId||"store listings"==wpslSettings.moreInfoLocation?!1:void 0}),e("a[href='#"+wpslSettings.mapTabAnchor+"']").length){var ge,ue,fe=e("a[href='#"+wpslSettings.mapTabAnchor+"']");fe.on("click",function(){return setTimeout(function(){ge=j.getZoom(),ue=j.getCenter(),google.maps.event.trigger(j,"resize"),j.setZoom(ge),j.setCenter(ue),B()},50),!1})}});
1
+ jQuery(document).ready(function(e){function t(t,n){var a,c,w,u,m,h,v,S=Number(wpslSettings.autoZoomLevel);c=o(n),w=i(),j=new google.maps.Geocoder,F=new google.maps.DirectionsRenderer,H=new google.maps.DirectionsService,a={zoom:Number(c.zoomLevel),center:c.startLatLng,mapTypeId:google.maps.MapTypeId[c.mapType.toUpperCase()],mapTypeControl:Number(c.mapTypeControl)?!0:!1,scrollwheel:Number(c.scrollWheel)?!0:!1,streetViewControl:Number(c.streetView)?!0:!1,zoomControlOptions:{position:google.maps.ControlPosition[c.controlPosition.toUpperCase()+"_TOP"]}},K=new google.maps.Map(document.getElementById(t),a),l(c.mapStyle),"undefined"!=typeof window["wpslMap_"+n]&&"undefined"!=typeof window["wpslMap_"+n].locations&&(m=new google.maps.LatLngBounds,h=window["wpslMap_"+n].locations,v=h.length,e.each(h,function(e){u=new google.maps.LatLng(h[e].lat,h[e].lng),N(u,h[e].id,h[e],!1,w),m.extend(u)}),K.fitBounds(m),google.maps.event.addListenerOnce(K,"bounds_changed",function(e){return function(){e.getZoom()>S&&e.setZoom(S)}}(K))),e("#wpsl-gmap").length&&(!p()&&e(".wpsl-dropdown").length?D():(e("#wpsl-search-wrap select").show(),e("#wpsl-wrap").addClass("wpsl-mobile")),1==wpslSettings.autoLocate?d(c.startLatLng,w):1==wpslSettings.autoLoad&&r(c.startLatLng,w),1!=wpslSettings.mouseFocus||p()||e("#wpsl-search-input").focus(),g(w),f(c,K,w)),s()}function s(){"undefined"!=typeof wpslSettings.markerZoomTo&&1==wpslSettings.markerZoomTo&&google.maps.event.addListener(K,"zoom_changed",function(){R()})}function o(e){var t,s,o,i=["zoomLevel","mapType","mapTypeControl","mapStyle","streetView","scrollWheel","controlPosition"],l={zoomLevel:wpslSettings.zoomLevel,mapType:wpslSettings.mapType,mapTypeControl:wpslSettings.mapTypeControl,mapStyle:wpslSettings.mapStyle,streetView:wpslSettings.streetView,scrollWheel:wpslSettings.scrollWheel,controlPosition:wpslSettings.controlPosition};if("undefined"!=typeof window["wpslMap_"+e]&&"undefined"!=typeof window["wpslMap_"+e].shortCode)for(t=0,s=i.length;s>t;t++)o=window["wpslMap_"+e].shortCode[i[t]],"undefined"!=typeof o&&(l[i[t]]=o);return l.startLatLng=n(e),l}function n(e){var t,s,o="";return"undefined"!=typeof window["wpslMap_"+e]&&"undefined"!=typeof window["wpslMap_"+e].locations&&(o=window["wpslMap_"+e].locations[0]),"undefined"!=typeof o&&"undefined"!=typeof o.lat&&"undefined"!=typeof o.lng?t=new google.maps.LatLng(o.lat,o.lng):""!==wpslSettings.zoomLatlng?(s=wpslSettings.zoomLatlng.split(","),t=new google.maps.LatLng(s[0],s[1])):t=new google.maps.LatLng(0,0),t}function i(){var e,t,s={};return"undefined"!=typeof wpslSettings.infoWindowStyle&&"infobox"==wpslSettings.infoWindowStyle?(e=wpslSettings.infoBoxClearance.split(","),t=wpslSettings.infoBoxPixelOffset.split(","),s={alignBottom:!0,boxClass:wpslSettings.infoBoxClass,closeBoxMargin:wpslSettings.infoBoxCloseMargin,closeBoxURL:wpslSettings.infoBoxCloseUrl,content:"",disableAutoPan:Number(wpslSettings.infoBoxDisableAutoPan)?!0:!1,enableEventPropagation:Number(wpslSettings.infoBoxEnableEventPropagation)?!0:!1,infoBoxClearance:new google.maps.Size(Number(e[0]),Number(e[1])),pixelOffset:new google.maps.Size(Number(t[0]),Number(t[1])),zIndex:Number(wpslSettings.infoBoxZindex)},Y=new InfoBox(s)):Y=new google.maps.InfoWindow,Y}function l(e){e=a(e),e&&K.setOptions({styles:e})}function a(e){try{var t=JSON.parse(e);if(t&&"object"==typeof t&&null!==t)return t}catch(s){}return!1}function r(e,t){N(e,0,"",!0,t),I(e,ie,ae,t)}function p(){return/Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent)}function d(t,s){if(navigator.geolocation){var o,n,i=!1,l=Number(wpslSettings.geoLocationTimout);o=setInterval(function(){e(".wpsl-icon-direction").toggleClass("wpsl-active-icon")},600),n=setTimeout(function(){c(o),r(t,s)},l),navigator.geolocation.getCurrentPosition(function(e){c(o),clearTimeout(n),U(i),w(t,e,ie,s)},function(o){if(e(".wpsl-icon-direction").hasClass("wpsl-user-activated")){switch(o.code){case o.PERMISSION_DENIED:alert(wpslGeolocationErrors.denied);break;case o.POSITION_UNAVAILABLE:alert(wpslGeolocationErrors.unavailable);break;case o.TIMEOUT:alert(wpslGeolocationErrors.timeout);break;default:alert(wpslGeolocationErrors.generalError)}e(".wpsl-icon-direction").removeClass("wpsl-active-icon")}else clearTimeout(n),r(t,s)},{maximumAge:6e4,timeout:l,enableHighAccuracy:!0})}else alert(wpslGeolocationErrors.unavailable),r(t,s)}function c(t){clearInterval(t),e(".wpsl-icon-direction").removeClass("wpsl-active-icon")}function w(e,t,s,o){if("undefined"==typeof t)r(e,o);else{var n=new google.maps.LatLng(t.coords.latitude,t.coords.longitude);Q=t,C(n),K.setCenter(n),N(n,0,"",!0,o),I(n,s,ae,o)}}function g(t){e("#wpsl-search-btn").on("click",function(){var s=!1;e("#wpsl-search-input").removeClass(),e("#wpsl-search-input").val()?(e("#wpsl-result-list ul").empty(),e("#wpsl-stores").show(),e(".wpsl-direction-before, .wpsl-direction-after").remove(),e("#wpsl-direction-details").hide(),ie=!1,u(),U(s),h(),y(t)):e("#wpsl-search-input").addClass("wpsl-error").focus()})}function u(){"undefined"!=typeof wpslSettings.infoWindowStyle&&"infobox"==wpslSettings.infoWindowStyle&&"undefined"!=typeof te[0]&&te[0].close()}function f(t,s,o){google.maps.event.addListenerOnce(s,"tilesloaded",function(){e(".gm-style").append(wpslSettings.mapControls),e(".wpsl-icon-reset, #wpsl-reset-map").length>0&&(m(t.startLatLng,o),e(".wpsl-icon-reset").hide()),e(".wpsl-icon-direction").on("click",function(){e(this).addClass("wpsl-user-activated"),d(t.startLatLng,o)})})}function m(t,s){e(".wpsl-icon-reset, #wpsl-reset-map").on("click",function(){var o=!1,n=!0;e(this).hasClass("wpsl-in-progress")||(1==wpslSettings.autoLoad&&(ae=1),(K.getCenter().lat()!==ne.centerLatlng.lat()||K.getCenter().lng()!==ne.centerLatlng.lng()||K.getZoom()!==ne.zoomLevel)&&(U(o),e("#wpsl-search-input").val("").removeClass(),e(".wpsl-icon-reset").addClass("wpsl-in-progress"),J&&J.clearMarkers(),h(),v(),1==wpslSettings.autoLocate?w(t,Q,n,s):r(t,s)),e("#wpsl-stores").show(),e("#wpsl-direction-details").hide())})}function h(){"undefined"!=typeof X&&""!==X&&(X.setMap(null),X="")}function v(){var t,s,o,n,i=[wpslSettings.searchRadius+" "+wpslSettings.distanceUnit,wpslSettings.maxResults],l=["wpsl-radius","wpsl-results"];for(t=0,s=l.length;s>t;t++)e("#"+l[t]+" select").val(parseInt(i[t])),e("#"+l[t]+" li").removeClass(),"wpsl-radius"==l[t]?o=wpslSettings.searchRadius:"wpsl-results"==l[t]&&(o=wpslSettings.maxResults),e("#"+l[t]+" li").each(function(){e(this).text()===i[t]&&(e(this).addClass("wpsl-selected-dropdown"),e("#"+l[t]+" .wpsl-selected-item").html(i[t]).attr("data-value",o))});e("#wpsl-category").length&&(e("#wpsl-category select").val(0),e("#wpsl-category li").removeClass(),e("#wpsl-category li:first-child").addClass("wpsl-selected-dropdown"),n=e("#wpsl-category li:first-child").text(),e("#wpsl-category .wpsl-selected-item").html(n).attr("data-value",0))}function S(t){var s,o,n,i,l;for(u(),l=t.parents("li").length>0?t.parents("li").data("store-id"):t.parents(".wpsl-info-window").data("store-id"),"undefined"!=typeof X&&""!==X&&(o=X.getPosition()),oe={centerLatlng:K.getCenter(),zoomLevel:K.getZoom()},s=0,i=se.length;i>s;s++)0!=se[s].storeId||"undefined"!=typeof o&&""!==o?se[s].storeId==l&&(n=se[s].getPosition()):o=se[s].getPosition();o&&n?(e("#wpsl-direction-details ul").empty(),e(".wpsl-direction-before, .wpsl-direction-after").remove(),b(o,n)):alert(wpslLabels.generalError)}function L(e,t){var s,o,n;for(s=0,o=se.length;o>s;s++)se[s].storeId==e&&(n=se[s],"start"==t?n.setAnimation(google.maps.Animation.BOUNCE):n.setAnimation(null))}function b(t,s){var o,n,i,l,a,r,p,d,c,w="",g={};d="km"==wpslSettings.distanceUnit?"METRIC":"IMPERIAL",g={origin:t,destination:s,travelMode:google.maps.DirectionsTravelMode.DRIVING,unitSystem:google.maps.UnitSystem[d]},H.route(g,function(t,s){if(s==google.maps.DirectionsStatus.OK){if(F.setMap(K),F.setDirections(t),t.routes.length>0){for(a=t.routes[0],r=0;r<a.legs.length;r++)for(o=a.legs[r],p=0,n=o.steps.length;n>p;p++)i=o.steps[p],l=p+1,w=w+"<li><div class='wpsl-direction-index'>"+l+"</div><div class='wpsl-direction-txt'>"+i.instructions+"</div><div class='wpsl-direction-distance'>"+i.distance.text+"</div></li>";for(e("#wpsl-direction-details ul").append(w).before("<div class='wpsl-direction-before'><a class='wpsl-back' id='wpsl-direction-start' href='#'>"+wpslLabels.back+"</a><div><span class='wpsl-total-distance'>"+a.legs[0].distance.text+"</span> - <span class='wpsl-total-durations'>"+a.legs[0].duration.text+"</span></div></div>").after("<p class='wpsl-direction-after'>"+t.routes[0].copyrights+"</p>"),e("#wpsl-direction-details").show(),r=0,n=se.length;n>r;r++)se[r].setMap(null);J&&J.clearMarkers(),"undefined"!=typeof X&&""!==X&&X.setMap(null),e("#wpsl-stores").hide(),1==wpslSettings.templateId&&(c=e("#wpsl-gmap").offset(),e(window).scrollTop(c.top))}}else A(s)})}function y(t){var s,o=!1,n=!1,i=e("#wpsl-search-input").val();j.geocode({address:i},function(e,i){i==google.maps.GeocoderStatus.OK?(s=e[0].geometry.location,U(n),N(s,0,"",!0,t),I(s,ie,o,t)):W(i)})}function C(t){var s;j.geocode({latLng:t},function(t,o){o==google.maps.GeocoderStatus.OK?(s=k(t),""!==s&&e("#wpsl-search-input").val(s)):W(o)})}function k(e){var t,s,o,n=e[0].address_components.length;for(o=0;n>o;o++)s=e[0].address_components[o].types,(/^postal_code$/.test(s)||/^postal_code_prefix,postal_code$/.test(s))&&(t=e[0].address_components[o].long_name);return t}function I(e,t,s,o){1==wpslSettings.directionRedirect?x(e,function(){E(e,t,s,o)}):E(e,t,s,o)}function x(e,t){j.geocode({latLng:e},function(e,s){s==google.maps.GeocoderStatus.OK?(ee=e[0].formatted_address,t()):W(s)})}function E(t,s,o,n){var i,l,a,r="",d="",c=!1,w=e("#wpsl-wrap").hasClass("wpsl-mobile"),g=e("#wpsl-listing-template").html(),u=e("#wpsl-stores ul"),f=wpslSettings.path+"img/ajax-loader.gif",m={action:"store_search",lat:t.lat(),lng:t.lng()};s?(m.max_results=wpslSettings.maxResults,m.radius=wpslSettings.searchRadius):(w?(l=parseInt(e("#wpsl-results .wpsl-dropdown").val()),a=parseInt(e("#wpsl-radius .wpsl-dropdown").val())):(l=parseInt(e("#wpsl-results .wpsl-selected-item").attr("data-value")),a=parseInt(e("#wpsl-radius .wpsl-selected-item").attr("data-value"))),isNaN(l)?m.max_results=wpslSettings.maxResults:m.max_results=l,isNaN(a)?m.radius=wpslSettings.searchRadius:m.radius=a,e("#wpsl-category").length>0&&(d=w?parseInt(e("#wpsl-category .wpsl-dropdown").val()):parseInt(e("#wpsl-category .wpsl-selected-item").attr("data-value")),isNaN(d)||0===d||(m.filter=d))),1==o&&("undefined"!=typeof Q?m.skip_cache=1:m.autoload=1),u.empty().append("<li class='wpsl-preloader'><img src='"+f+"'/>"+wpslLabels.preloader+"</li>"),e.get(wpslSettings.ajaxurl,m,function(t){e(".wpsl-preloader, .no-results").remove(),t.length>0?(e.each(t,function(e){_.extend(t[e],ge),i=new google.maps.LatLng(t[e].lat,t[e].lng),N(i,t[e].id,t[e],c,n),r+=_.template(g,t[e])}),e("#wpsl-result-list").off("click",".wpsl-directions"),u.append(r),e("#wpsl-result-list").on("click",".wpsl-directions",function(){return 1!=wpslSettings.directionRedirect?(S(e(this)),!1):void 0}),M(),$(),e("#wpsl-result-list p:empty").remove()):u.html("<li class='no-results'>"+wpslLabels.noResults+"</li>"),1==wpslSettings.resetMap&&(e.isEmptyObject(ne)&&google.maps.event.addListenerOnce(K,"tilesloaded",function(){ne={centerLatlng:K.getCenter(),zoomLevel:K.getZoom()},e("#wpsl-map-controls").addClass("wpsl-reset-exists"),e(".wpsl-icon-reset, #wpsl-reset-map").show()}),e(".wpsl-icon-reset").removeClass("wpsl-in-progress"))}),1!=wpslSettings.mouseFocus||p()||e("#wpsl-search-input").focus()}function M(){if(1==wpslSettings.markerClusters){var e=Number(wpslSettings.clusterZoom),t=Number(wpslSettings.clusterSize);isNaN(e)&&(e=""),isNaN(t)&&(t=""),J=new MarkerClusterer(K,se,{gridSize:t,maxZoom:e})}}function N(e,t,s,o,n){var i,l,a,r=!0;0===t?(s={store:wpslLabels.startPoint},i=wpslSettings.path+"img/markers/"+wpslSettings.startMarker):i=wpslSettings.path+"img/markers/"+wpslSettings.storeMarker,l={url:i,scaledSize:new google.maps.Size(24,35),origin:new google.maps.Point(0,0),anchor:new google.maps.Point(12,35)},a=new google.maps.Marker({position:e,map:K,optimized:!1,title:P(s.store),draggable:o,storeId:t,icon:l}),se.push(a),google.maps.event.addListener(a,"click",function(o){return function(){0!=t?"undefined"!=typeof wpslSettings.markerStreetView&&1==wpslSettings.markerStreetView?V(e,function(){T(a,B(s),n,o)}):T(a,B(s),n,o):T(a,wpslLabels.startPoint,n,o),google.maps.event.clearListeners(n,"domready"),google.maps.event.addListener(n,"domready",function(){O(a,o),R()})}}(K)),o&&google.maps.event.addListener(a,"dragend",function(e){U(r),K.setCenter(e.latLng),C(e.latLng),I(e.latLng,ie,ae=!1,n)})}function P(e){return e?e.replace(/&#(\d+);/g,function(e,t){return String.fromCharCode(t)}):void 0}function T(e,t,s,o){te.length=0,s.setContent(t),s.open(o,e),te.push(s),"undefined"!=typeof wpslSettings.infoWindowStyle&&"infobox"==wpslSettings.infoWindowStyle&&1==wpslSettings.markerClusters&&(q=e.storeId,s.setVisible(!0))}function O(t,s){e(".wpsl-info-actions a").on("click",function(o){var n=Number(wpslSettings.autoZoomLevel);if(o.stopImmediatePropagation(),e(this).hasClass("wpsl-directions")){if(1==wpslSettings.directionRedirect)return!0;S(e(this))}else e(this).hasClass("wpsl-streetview")?z(t,s):e(this).hasClass("wpsl-zoom-here")&&(s.setCenter(t.getPosition()),s.setZoom(n));return!1})}function R(){var t=K.getZoom();t>=wpslSettings.autoZoomLevel?e(".wpsl-zoom-here").hide():e(".wpsl-zoom-here").show()}function z(t,s){var o=s.getStreetView();o.setPosition(t.getPosition()),o.setVisible(!0),e("#wpsl-map-controls").hide(),Z(o,s)}function Z(t,s){google.maps.event.addListener(t,"visible_changed",function(){if(!t.getVisible()){var o=s.getZoom();e("#wpsl-map-controls").show(),s.setZoom(o-1),s.setZoom(o)}})}function V(e,t){var s=new google.maps.StreetViewService;s.getPanoramaByLocation(e,50,function(e,s){le=s==google.maps.StreetViewStatus.OK?!0:!1,t()})}function B(t){var s,o;return o=e("#wpsl-base-gmap_0").length?e("#wpsl-cpt-info-window-template").html():e("#wpsl-info-window-template").html(),s=_.template(o,t)}function $(){var e,t,s=Number(wpslSettings.autoZoomLevel),o=new google.maps.LatLngBounds;for(google.maps.event.addListenerOnce(K,"bounds_changed",function(e){this.getZoom()>s&&this.setZoom(s)}),e=0,t=se.length;t>e;e++)o.extend(se[e].position);K.fitBounds(o)}function U(e){var t,s;if(F.setMap(null),se){for(s=0,t=se.length;t>s;s++)e?1!=se[s].draggable?se[s].setMap(null):X=se[s]:se[s].setMap(null);se.length=0}J&&J.clearMarkers()}function W(e){var t;switch(e){case"ZERO_RESULTS":t=wpslLabels.noResults;break;case"OVER_QUERY_LIMIT":t=wpslLabels.queryLimit;break;default:t=wpslLabels.generalError}alert(t)}function A(e){var t;switch(e){case"NOT_FOUND":case"ZERO_RESULTS":t=wpslLabels.noDirectionsFound;break;case"OVER_QUERY_LIMIT":t=wpslLabels.queryLimit;break;default:t=wpslLabels.generalError}alert(t)}function D(){e(".wpsl-dropdown").each(function(t){var s,o,n=e(this);n.$dropdownWrap=n.wrap("<div class='wpsl-dropdown'></div>").parent(),n.$selectedVal=n.val(),n.$dropdownElem=e("<div><ul/></div>").appendTo(n.$dropdownWrap),n.$dropdown=n.$dropdownElem.find("ul"),n.$options=n.$dropdownWrap.find("option"),n.hide().removeClass("wpsl-dropdown"),e.each(n.$options,function(){s=e(this).val()==n.$selectedVal?'class="wpsl-selected-dropdown"':"",n.$dropdown.append("<li data-value="+e(this).val()+" "+s+">"+e(this).text()+"</li>")}),n.$dropdownElem.before("<span data-value="+n.find(":selected").val()+" class='wpsl-selected-item'>"+n.find(":selected").text()+"</span>"),n.$dropdownItem=n.$dropdownElem.find("li"),n.$dropdownWrap.on("click",function(t){G(),e(this).toggleClass("wpsl-active"),o=0,e(this).hasClass("wpsl-active")?(n.$dropdownItem.each(function(t){o+=e(this).outerHeight()}),n.$dropdownElem.css("height",o+2+"px")):n.$dropdownElem.css("height",0),t.stopPropagation()}),n.$dropdownItem.on("click",function(t){n.$dropdownWrap.find(e(".wpsl-selected-item")).html(e(this).text()).attr("data-value",e(this).attr("data-value")),n.$dropdownItem.removeClass("wpsl-selected-dropdown"),e(this).addClass("wpsl-selected-dropdown"),G(),t.stopPropagation()})}),e(document).click(function(){G()})}function G(){e(".wpsl-dropdown").removeClass("wpsl-active"),e(".wpsl-dropdown div").css("height",0)}var j,K,F,H,Q,q,Y,J,X,ee,te=[],se=[],oe={},ne={},ie=!1,le=!1,ae="undefined"!=typeof wpslSettings?wpslSettings.autoLoad:"";if(_.templateSettings={evaluate:/\<\%(.+?)\%\>/g,interpolate:/\<\%=(.+?)\%\>/g,escape:/\<\%-(.+?)\%\>/g},e(".wpsl-gmap-canvas").length&&(e("<img />").attr("src",wpslSettings.path+"img/ajax-loader.gif"),e(".wpsl-gmap-canvas").each(function(s){var o=e(this).attr("id");t(o,s)})),e("#wpsl-result-list").on("click",".wpsl-back",function(){var t,s;for(F.setMap(null),t=0,s=se.length;s>t;t++)se[t].setMap(K);return"undefined"!=typeof X&&""!==X&&X.setMap(K),J&&M(),K.setCenter(oe.centerLatlng),K.setZoom(oe.zoomLevel),e(".wpsl-direction-before, .wpsl-direction-after").remove(),e("#wpsl-stores").show(),e("#wpsl-direction-details").hide(),!1}),e("#wpsl-gmap").length&&("bounce"==wpslSettings.markerEffect?(e("#wpsl-stores").on("mouseenter","li",function(){L(e(this).data("store-id"),"start")}),e("#wpsl-stores").on("mouseleave","li",function(){L(e(this).data("store-id"),"stop")})):"info_window"==wpslSettings.markerEffect&&e("#wpsl-stores").on("mouseenter","li",function(){var t,s;for(t=0,s=se.length;s>t;t++)se[t].storeId==e(this).data("store-id")&&(google.maps.event.trigger(se[t],"click"),K.setCenter(se[t].position))})),"undefined"!=typeof wpslSettings.infoWindowStyle&&"infobox"==wpslSettings.infoWindowStyle&&1==wpslSettings.markerClusters){var re,pe,de,ce,we;google.maps.event.addListener(K,"zoom_changed",function(){google.maps.event.addListenerOnce(K,"idle",function(){if("undefined"!=typeof J&&(re=J.clusters_,re.length))for(ce=0,pe=re.length;pe>ce;ce++)for(we=0,de=re[ce].markers_.length;de>we;we++)if(re[ce].markers_[we].storeId==q){Y.getVisible()&&null===re[ce].markers_[we].map?Y.setVisible(!1):Y.getVisible()||null===re[ce].markers_[we].map||Y.setVisible(!0);break}})})}var ge={formatPhoneNumber:function(e){return 1==wpslSettings.phoneUrl&&p()&&(e="<a href='tel:"+ge.formatClickablePhoneNumber(e)+"'>"+e+"</a>"),e},formatClickablePhoneNumber:function(e){return-1!=e.indexOf("+")&&-1!=e.indexOf("(0)")&&(e=e.replace("(0)","")),e.replace(/(-| |\(|\)|\.|)/g,"")},createInfoWindowActions:function(t){var s,o="",n="";return e("#wpsl-gmap").length&&(le&&(o="<a class='wpsl-streetview' href='#'>"+wpslLabels.streetView+"</a>"),1==wpslSettings.markerZoomTo&&(n="<a class='wpsl-zoom-here' href='#'>"+wpslLabels.zoomHere+"</a>"),s="<div class='wpsl-info-actions'>"+ge.createDirectionUrl(t)+o+n+"</div>"),s},createDirectionUrl:function(t){var s,o,n,i={};return 1==wpslSettings.directionRedirect?("undefined"==typeof ee&&(ee=""),i.target="target='_blank'","undefined"!=typeof t?i.src=e("[data-store-id="+t+"] .wpsl-directions").attr("href"):(n=this.zip?this.zip+", ":"",o=this.address+", "+this.city+", "+n+this.country,i.src="https://maps.google.com/maps?saddr="+ge.rfc3986EncodeURIComponent(ee)+"&daddr="+ge.rfc3986EncodeURIComponent(o))):i={src:"#",target:""},s="<a class='wpsl-directions' "+i.target+" href='"+i.src+"'>"+wpslLabels.directions+"</a>"},rfc3986EncodeURIComponent:function(e){return encodeURIComponent(e).replace(/[!'()*]/g,escape)}};if(e("#wpsl-search-input").keydown(function(t){var s=t.keyCode||t.which;13==s&&e("#wpsl-search-btn").trigger("click")}),e("#wpsl-stores").on("click",".wpsl-store-details",function(){var t,s,o=e(this).parents("li"),n=o.data("store-id");if("info window"==wpslSettings.moreInfoLocation)for(t=0,s=se.length;s>t;t++)se[t].storeId==n&&google.maps.event.trigger(se[t],"click");else o.find(".wpsl-more-info-listings").is(":visible")?e(this).removeClass("wpsl-active-details"):e(this).addClass("wpsl-active-details"),o.siblings().find(".wpsl-store-details").removeClass("wpsl-active-details"),o.siblings().find(".wpsl-more-info-listings").hide(),o.find(".wpsl-more-info-listings").toggle();return"default"!=wpslSettings.templateId||"store listings"==wpslSettings.moreInfoLocation?!1:void 0}),e("a[href='#"+wpslSettings.mapTabAnchor+"']").length){var ue,fe,me=e("a[href='#"+wpslSettings.mapTabAnchor+"']");me.on("click",function(){return setTimeout(function(){ue=K.getZoom(),fe=K.getCenter(),google.maps.event.trigger(K,"resize"),K.setZoom(ue),K.setCenter(fe),$()},50),!1})}});
languages/wpsl-nl_NL.mo CHANGED
Binary file
languages/wpsl-nl_NL.po CHANGED
@@ -2,8 +2,8 @@ msgid ""
2
  msgstr ""
3
  "Project-Id-Version: WP Store Locator 2.0\n"
4
  "Report-Msgid-Bugs-To: \n"
5
- "POT-Creation-Date: 2015-09-01 13:50+0100\n"
6
- "PO-Revision-Date: 2015-09-01 19:01+0100\n"
7
  "Last-Translator: \n"
8
  "Language-Team: \n"
9
  "Language: nl_NL\n"
@@ -11,11 +11,11 @@ msgstr ""
11
  "Content-Type: text/plain; charset=UTF-8\n"
12
  "Content-Transfer-Encoding: 8bit\n"
13
  "Plural-Forms: nplurals=2; plural=n != 1;\n"
14
- "X-Generator: Poedit 1.7.4\n"
15
  "X-Poedit-SourceCharset: UTF-8\n"
16
  "X-Poedit-KeywordsList: __;_e;__ngettext:1,2;_n:1,2;__ngettext_noop:1,2;"
17
  "_n_noop:1,2;_c,_nc:4c,1,2;_x:1,2c;_ex:1,2c;_nx:4c,1,2;_nx_noop:4c,1,2\n"
18
- "X-Poedit-Basepath: ../\n"
19
  "X-Textdomain-Support: yes\n"
20
  "X-Poedit-SearchPath-0: .\n"
21
 
@@ -37,7 +37,7 @@ msgstr ""
37
  "Vergeet niet voordat je de [wpsl] shortcode op een pagina plaatst, om een "
38
  "start locatie op te geven op de %sinstellingen%s pagina. %sSluit%s"
39
 
40
- #: admin/class-admin.php:150 admin/templates/map-settings.php:4
41
  msgid "Settings"
42
  msgstr "Instellingen"
43
 
@@ -49,7 +49,7 @@ msgstr "Er kan geen adres gevonden worden voor deze locatie."
49
  msgid "Geocode was not successful for the following reason"
50
  msgstr "Geocode was niet succesvol om de volgende reden"
51
 
52
- #: admin/class-admin.php:266 admin/upgrade.php:393
53
  msgid "Security check failed, reload the page and try again."
54
  msgstr ""
55
  "Beveiligings controle mislukt, herlaad de pagina en probeer het nog een keer."
@@ -64,8 +64,8 @@ msgstr ""
64
  "Alle locatie details moeten zijn ingevuld voordat de locatie op de kaart "
65
  "getoond kan worden."
66
 
67
- #: admin/class-admin.php:269 admin/class-metaboxes.php:504
68
- #: frontend/class-frontend.php:483
69
  msgid "Closed"
70
  msgstr "gesloten"
71
 
@@ -166,9 +166,9 @@ msgstr "Lengtegraad"
166
  msgid "Opening Hours"
167
  msgstr "Openingstijden"
168
 
169
- #: admin/class-metaboxes.php:82 admin/templates/map-settings.php:419
170
- #: admin/templates/map-settings.php:420 frontend/underscore-functions.php:133
171
- #: inc/wpsl-functions.php:114
172
  msgid "Hours"
173
  msgstr "Uren"
174
 
@@ -180,48 +180,48 @@ msgstr "Extra informatie"
180
  msgid "Tel"
181
  msgstr "Tel."
182
 
183
- #: admin/class-metaboxes.php:91 admin/templates/map-settings.php:407
184
- #: admin/templates/map-settings.php:408 frontend/class-frontend.php:665
185
  #: frontend/underscore-functions.php:32 frontend/underscore-functions.php:124
186
- #: inc/wpsl-functions.php:111
187
  msgid "Fax"
188
  msgstr "Fax"
189
 
190
- #: admin/class-metaboxes.php:94 admin/templates/map-settings.php:411
191
- #: admin/templates/map-settings.php:412 admin/upgrade.php:210
192
- #: frontend/class-frontend.php:669 frontend/underscore-functions.php:35
193
- #: frontend/underscore-functions.php:127 inc/wpsl-functions.php:112
194
  msgid "Email"
195
  msgstr "E-mail"
196
 
197
- #: admin/class-metaboxes.php:97 admin/templates/map-settings.php:415
198
- #: admin/templates/map-settings.php:416 admin/upgrade.php:214
199
- #: frontend/class-frontend.php:674 inc/wpsl-functions.php:113
200
  msgid "Url"
201
  msgstr "Url"
202
 
203
- #: admin/class-metaboxes.php:426
204
  msgid "Hour format"
205
  msgstr "Uur formaat"
206
 
207
- #: admin/class-metaboxes.php:433
208
  msgid "Days"
209
  msgstr "Dagen"
210
 
211
- #: admin/class-metaboxes.php:434
212
  msgid "Opening Periods"
213
  msgstr "Openingstijden"
214
 
215
- #: admin/class-metaboxes.php:681
216
  msgid "Failed to publish the store. Please fill in the required store details."
217
  msgstr ""
218
  "Het publiceren van de winkel is mislukt. Vul alle verplichte velden in."
219
 
220
- #: admin/class-metaboxes.php:816
221
  msgid "Preview Location"
222
  msgstr "Bekijk voorbeeld"
223
 
224
- #: admin/class-metaboxes.php:817
225
  #, php-format
226
  msgid ""
227
  "The map preview is based on the provided address, city and country details. "
@@ -230,57 +230,57 @@ msgstr ""
230
  "Het voorbeeld is gebaseerd op het adres, de stad en het opgegeven land. %s "
231
  "De opgegeven lengte en breedtegraad worden niet gebruikt."
232
 
233
- #: admin/class-metaboxes.php:818
234
  msgid "You can drag the marker to adjust the exact location of the marker."
235
  msgstr "Je kunt de locatie aanpassen door de marker te verslepen."
236
 
237
- #: admin/class-metaboxes.php:838 admin/class-metaboxes.php:841
238
  msgid "Store updated."
239
  msgstr "Winkel bijgewerkt."
240
 
241
- #: admin/class-metaboxes.php:839
242
  msgid "Custom field updated."
243
  msgstr "Custom veld bijgewerkt."
244
 
245
- #: admin/class-metaboxes.php:840
246
  msgid "Custom field deleted."
247
  msgstr "Custom veld verwijderd."
248
 
249
- #: admin/class-metaboxes.php:842
250
  #, php-format
251
  msgid "Store restored to revision from %s"
252
  msgstr "Winkel hersteld naar revisie %s"
253
 
254
- #: admin/class-metaboxes.php:843
255
  msgid "Store published."
256
  msgstr "Winkel gepubliceerd."
257
 
258
- #: admin/class-metaboxes.php:844
259
  msgid "Store saved."
260
  msgstr "Winkel opgeslagen."
261
 
262
- #: admin/class-metaboxes.php:845
263
  msgid "Store submitted."
264
  msgstr "Winkel ingediend."
265
 
266
- #: admin/class-metaboxes.php:847
267
  #, php-format
268
  msgid "Store scheduled for: <strong>%1$s</strong>."
269
  msgstr "Winkel ingepland voor: <strong>%1$s</strong>. "
270
 
271
- #: admin/class-metaboxes.php:848
272
  msgid "M j, Y @ G:i"
273
  msgstr "M j, Y @ G:i"
274
 
275
- #: admin/class-metaboxes.php:850
276
  msgid "Store draft updated."
277
  msgstr "Winkel concept bijgewerkt."
278
 
279
- #: admin/class-metaboxes.php:856
280
  msgid "View store"
281
  msgstr "Bekijk winkel"
282
 
283
- #: admin/class-metaboxes.php:862
284
  msgid "Preview store"
285
  msgstr "Winkel voorbeeld"
286
 
@@ -288,20 +288,20 @@ msgstr "Winkel voorbeeld"
288
  msgid "WP Store Locator Transients Cleared"
289
  msgstr "WP Store Locator transients verwijderd"
290
 
291
- #: admin/class-settings.php:370
292
  msgid ""
293
  "The max results field cannot be empty, the default value has been restored."
294
  msgstr ""
295
  "Het max zoek resulaten veld kan niet leeg zijn, de standaard waarde is "
296
  "hersteld."
297
 
298
- #: admin/class-settings.php:373
299
  msgid ""
300
  "The search radius field cannot be empty, the default value has been restored."
301
  msgstr ""
302
  "Het zoek radius veld kan niet leeg zijn, de standaard waarde is hersteld."
303
 
304
- #: admin/class-settings.php:376
305
  #, php-format
306
  msgid ""
307
  "Please provide the name of a city or country that can be used as a starting "
@@ -313,1108 +313,1108 @@ msgstr ""
313
  "automatische achterhalen van de gebruikers locatie mislukt, of het "
314
  "automatische achterhalen is uitgeschakeld."
315
 
316
- #: admin/class-settings.php:397
317
  msgid "Select your language"
318
  msgstr "Kies uw taal"
319
 
320
- #: admin/class-settings.php:398
321
  msgid "English"
322
  msgstr "Engels"
323
 
324
- #: admin/class-settings.php:399
325
  msgid "Arabic"
326
  msgstr "Arabisch"
327
 
328
- #: admin/class-settings.php:400
329
  msgid "Basque"
330
  msgstr "Bask"
331
 
332
- #: admin/class-settings.php:401
333
  msgid "Bulgarian"
334
  msgstr "Bulgaars"
335
 
336
- #: admin/class-settings.php:402
337
  msgid "Bengali"
338
  msgstr "Bengali"
339
 
340
- #: admin/class-settings.php:403
341
  msgid "Catalan"
342
  msgstr "Catalaans"
343
 
344
- #: admin/class-settings.php:404
345
  msgid "Czech"
346
  msgstr "Tjechisch"
347
 
348
- #: admin/class-settings.php:405
349
  msgid "Danish"
350
  msgstr "Deens"
351
 
352
- #: admin/class-settings.php:406
353
  msgid "German"
354
  msgstr "Duits"
355
 
356
- #: admin/class-settings.php:407
357
  msgid "Greek"
358
  msgstr "Grieks"
359
 
360
- #: admin/class-settings.php:408
361
  msgid "English (Australian)"
362
  msgstr "Engels (Australisch)"
363
 
364
- #: admin/class-settings.php:409
365
  msgid "English (Great Britain)"
366
  msgstr "Engels (Verenigd Koninkrijk)"
367
 
368
- #: admin/class-settings.php:410
369
  msgid "Spanish"
370
  msgstr "Spaans"
371
 
372
- #: admin/class-settings.php:411
373
  msgid "Farsi"
374
  msgstr "Farsi"
375
 
376
- #: admin/class-settings.php:412
377
  msgid "Finnish"
378
  msgstr "Fins"
379
 
380
- #: admin/class-settings.php:413
381
  msgid "Filipino"
382
  msgstr "Filipijns"
383
 
384
- #: admin/class-settings.php:414
385
  msgid "French"
386
  msgstr "Frans"
387
 
388
- #: admin/class-settings.php:415
389
  msgid "Galician"
390
  msgstr "Gallisch"
391
 
392
- #: admin/class-settings.php:416
393
  msgid "Gujarati"
394
  msgstr "Gujurati"
395
 
396
- #: admin/class-settings.php:417
397
  msgid "Hindi"
398
  msgstr "Hindi"
399
 
400
- #: admin/class-settings.php:418
401
  msgid "Croatian"
402
  msgstr "Kroatisch"
403
 
404
- #: admin/class-settings.php:419
405
  msgid "Hungarian"
406
  msgstr "Hongaars"
407
 
408
- #: admin/class-settings.php:420
409
  msgid "Indonesian"
410
  msgstr "Indonesisch"
411
 
412
- #: admin/class-settings.php:421
413
  msgid "Italian"
414
  msgstr "Italiaans"
415
 
416
- #: admin/class-settings.php:422
417
  msgid "Hebrew"
418
  msgstr "Hebreeuws"
419
 
420
- #: admin/class-settings.php:423
421
  msgid "Japanese"
422
  msgstr "Japans"
423
 
424
- #: admin/class-settings.php:424
425
  msgid "Kannada"
426
  msgstr "Kannada"
427
 
428
- #: admin/class-settings.php:425
429
  msgid "Korean"
430
  msgstr "Koreaans"
431
 
432
- #: admin/class-settings.php:426
433
  msgid "Lithuanian"
434
  msgstr "Litouws"
435
 
436
- #: admin/class-settings.php:427
437
  msgid "Latvian"
438
  msgstr "Lets"
439
 
440
- #: admin/class-settings.php:428
441
  msgid "Malayalam"
442
  msgstr "Malayalam"
443
 
444
- #: admin/class-settings.php:429
445
  msgid "Marathi"
446
  msgstr "Marathi"
447
 
448
- #: admin/class-settings.php:430
449
  msgid "Dutch"
450
  msgstr "Nederlands"
451
 
452
- #: admin/class-settings.php:431
453
  msgid "Norwegian"
454
  msgstr "Noors"
455
 
456
- #: admin/class-settings.php:432
457
  msgid "Norwegian Nynorsk"
458
  msgstr "Noors Nynorsk"
459
 
460
- #: admin/class-settings.php:433
461
  msgid "Polish"
462
  msgstr "Pools"
463
 
464
- #: admin/class-settings.php:434
465
  msgid "Portuguese"
466
  msgstr "Portugees"
467
 
468
- #: admin/class-settings.php:435
469
  msgid "Portuguese (Brazil)"
470
  msgstr "Portugees (Brazilië)"
471
 
472
- #: admin/class-settings.php:436
473
  msgid "Portuguese (Portugal)"
474
  msgstr "Portugees (Portugal)"
475
 
476
- #: admin/class-settings.php:437
477
  msgid "Romanian"
478
  msgstr "Roemeens"
479
 
480
- #: admin/class-settings.php:438
481
  msgid "Russian"
482
  msgstr "Russisch"
483
 
484
- #: admin/class-settings.php:439
485
  msgid "Slovak"
486
  msgstr "Slowaaks"
487
 
488
- #: admin/class-settings.php:440
489
  msgid "Slovenian"
490
  msgstr "Sloveens"
491
 
492
- #: admin/class-settings.php:441
493
  msgid "Serbian"
494
  msgstr "Servisch"
495
 
496
- #: admin/class-settings.php:442
497
  msgid "Swedish"
498
  msgstr "Zweeds"
499
 
500
- #: admin/class-settings.php:443
501
  msgid "Tagalog"
502
  msgstr "Tagalog"
503
 
504
- #: admin/class-settings.php:444
505
  msgid "Tamil"
506
  msgstr "Tamil"
507
 
508
- #: admin/class-settings.php:445
509
  msgid "Telugu"
510
  msgstr "Telugu"
511
 
512
- #: admin/class-settings.php:446
513
  msgid "Thai"
514
  msgstr "Thai"
515
 
516
- #: admin/class-settings.php:447
517
  msgid "Turkish"
518
  msgstr "Turks"
519
 
520
- #: admin/class-settings.php:448
521
  msgid "Ukrainian"
522
  msgstr "Oekraïens"
523
 
524
- #: admin/class-settings.php:449
525
  msgid "Vietnamese"
526
  msgstr "Vietnamees"
527
 
528
- #: admin/class-settings.php:450
529
  msgid "Chinese (Simplified)"
530
  msgstr "Chinees (Vereenvoudigd)"
531
 
532
- #: admin/class-settings.php:451
533
  msgid "Chinese (Traditional)"
534
  msgstr "Chinees (Traditioneel)"
535
 
536
- #: admin/class-settings.php:456
537
  msgid "Select your region"
538
  msgstr "Kies uw regio"
539
 
540
- #: admin/class-settings.php:457
541
  msgid "Afghanistan"
542
  msgstr "Afghanistan"
543
 
544
- #: admin/class-settings.php:458
545
  msgid "Albania"
546
  msgstr "Albanië"
547
 
548
- #: admin/class-settings.php:459
549
  msgid "Algeria"
550
  msgstr "Algerije"
551
 
552
- #: admin/class-settings.php:460
553
  msgid "American Samoa"
554
  msgstr "Amerikaans Samoa"
555
 
556
- #: admin/class-settings.php:461
557
  msgid "Andorra"
558
  msgstr "Andorra"
559
 
560
- #: admin/class-settings.php:462
561
  msgid "Anguilla"
562
  msgstr "Anguilla"
563
 
564
- #: admin/class-settings.php:463
565
  msgid "Angola"
566
  msgstr "Angola"
567
 
568
- #: admin/class-settings.php:464
569
  msgid "Antigua and Barbuda"
570
  msgstr "Antigua en Barbuda"
571
 
572
- #: admin/class-settings.php:465
573
  msgid "Argentina"
574
  msgstr "Argentinië"
575
 
576
- #: admin/class-settings.php:466
577
  msgid "Armenia"
578
  msgstr "Armenia"
579
 
580
- #: admin/class-settings.php:467
581
  msgid "Aruba"
582
  msgstr "Aruba"
583
 
584
- #: admin/class-settings.php:468
585
  msgid "Australia"
586
  msgstr "Australië"
587
 
588
- #: admin/class-settings.php:469
589
  msgid "Austria"
590
  msgstr "Oostenrijk"
591
 
592
- #: admin/class-settings.php:470
593
  msgid "Azerbaijan"
594
  msgstr "Azerbeidzjan"
595
 
596
- #: admin/class-settings.php:471
597
  msgid "Bahamas"
598
  msgstr "Bahamas"
599
 
600
- #: admin/class-settings.php:472
601
  msgid "Bahrain"
602
  msgstr "Bahrein"
603
 
604
- #: admin/class-settings.php:473
605
  msgid "Bangladesh"
606
  msgstr "Bangladesh"
607
 
608
- #: admin/class-settings.php:474
609
  msgid "Barbados"
610
  msgstr "Barbados"
611
 
612
- #: admin/class-settings.php:475
613
  msgid "Belarus"
614
  msgstr "Wit-Rusland"
615
 
616
- #: admin/class-settings.php:476
617
  msgid "Belgium"
618
  msgstr "België"
619
 
620
- #: admin/class-settings.php:477
621
  msgid "Belize"
622
  msgstr "Belize"
623
 
624
- #: admin/class-settings.php:478
625
  msgid "Benin"
626
  msgstr "Benin"
627
 
628
- #: admin/class-settings.php:479
629
  msgid "Bermuda"
630
  msgstr "Bermuda"
631
 
632
- #: admin/class-settings.php:480
633
  msgid "Bhutan"
634
  msgstr "Bhutan"
635
 
636
- #: admin/class-settings.php:481
637
  msgid "Bolivia"
638
  msgstr "Bolivia"
639
 
640
- #: admin/class-settings.php:482
641
  msgid "Bosnia and Herzegovina"
642
  msgstr "Bosnia en Herzegovina"
643
 
644
- #: admin/class-settings.php:483
645
  msgid "Botswana"
646
  msgstr "Botswana"
647
 
648
- #: admin/class-settings.php:484
649
  msgid "Brazil"
650
  msgstr "Brazilië"
651
 
652
- #: admin/class-settings.php:485
653
  msgid "British Indian Ocean Territory"
654
  msgstr "Brits Indische Oceaanterritorium"
655
 
656
- #: admin/class-settings.php:486
657
  msgid "Brunei"
658
  msgstr "Brunei"
659
 
660
- #: admin/class-settings.php:487
661
  msgid "Bulgaria"
662
  msgstr "Bulgarije"
663
 
664
- #: admin/class-settings.php:488
665
  msgid "Burkina Faso"
666
  msgstr "Burkina Faso"
667
 
668
- #: admin/class-settings.php:489
669
  msgid "Burundi"
670
  msgstr "Burundi"
671
 
672
- #: admin/class-settings.php:490
673
  msgid "Cambodia"
674
  msgstr "Cambodja"
675
 
676
- #: admin/class-settings.php:491
677
  msgid "Cameroon"
678
  msgstr "Kameroen"
679
 
680
- #: admin/class-settings.php:492
681
  msgid "Canada"
682
  msgstr "Canada"
683
 
684
- #: admin/class-settings.php:493
685
  msgid "Cape Verde"
686
  msgstr "Kaapverdië"
687
 
688
- #: admin/class-settings.php:494
689
  msgid "Cayman Islands"
690
  msgstr "Kaaimaneilanden"
691
 
692
- #: admin/class-settings.php:495
693
  msgid "Central African Republic"
694
  msgstr "Centraal-Afrikaanse Republiek"
695
 
696
- #: admin/class-settings.php:496
697
  msgid "Chad"
698
  msgstr "Chad"
699
 
700
- #: admin/class-settings.php:497
701
  msgid "Chile"
702
  msgstr "Chili"
703
 
704
- #: admin/class-settings.php:498
705
  msgid "China"
706
  msgstr "China"
707
 
708
- #: admin/class-settings.php:499
709
  msgid "Christmas Island"
710
  msgstr "Christmaseiland"
711
 
712
- #: admin/class-settings.php:500
713
  msgid "Cocos Islands"
714
  msgstr "Cocoseilanden"
715
 
716
- #: admin/class-settings.php:501
717
  msgid "Colombia"
718
  msgstr "Colombia"
719
 
720
- #: admin/class-settings.php:502
721
  msgid "Comoros"
722
  msgstr "Comoren"
723
 
724
- #: admin/class-settings.php:503
725
  msgid "Congo"
726
  msgstr "Congo"
727
 
728
- #: admin/class-settings.php:504
729
  msgid "Costa Rica"
730
  msgstr "Costa Rica"
731
 
732
- #: admin/class-settings.php:505
733
  msgid "Côte d'Ivoire"
734
  msgstr "Ivoorkust"
735
 
736
- #: admin/class-settings.php:506
737
  msgid "Croatia"
738
  msgstr "Kroatië"
739
 
740
- #: admin/class-settings.php:507
741
  msgid "Cuba"
742
  msgstr "Cuba"
743
 
744
- #: admin/class-settings.php:508
745
  msgid "Czech Republic"
746
  msgstr "Tsjechië"
747
 
748
- #: admin/class-settings.php:509
749
  msgid "Denmark"
750
  msgstr "Denemarken"
751
 
752
- #: admin/class-settings.php:510
753
  msgid "Djibouti"
754
  msgstr "Djibouti"
755
 
756
- #: admin/class-settings.php:511
757
  msgid "Democratic Republic of the Congo"
758
  msgstr "Democratische Republiek Congo"
759
 
760
- #: admin/class-settings.php:512
761
  msgid "Dominica"
762
  msgstr "Dominica"
763
 
764
- #: admin/class-settings.php:513
765
  msgid "Dominican Republic"
766
  msgstr "Dominicaanse Republiek"
767
 
768
- #: admin/class-settings.php:514
769
  msgid "Ecuador"
770
  msgstr "Ecuador"
771
 
772
- #: admin/class-settings.php:515
773
  msgid "Egypt"
774
  msgstr "Egypte"
775
 
776
- #: admin/class-settings.php:516
777
  msgid "El Salvador"
778
  msgstr "El Salvador"
779
 
780
- #: admin/class-settings.php:517
781
  msgid "Equatorial Guinea"
782
  msgstr "Equatoriaal-Guinea"
783
 
784
- #: admin/class-settings.php:518
785
  msgid "Eritrea"
786
  msgstr "Eritrea"
787
 
788
- #: admin/class-settings.php:519
789
  msgid "Estonia"
790
  msgstr "Estland"
791
 
792
- #: admin/class-settings.php:520
793
  msgid "Ethiopia"
794
  msgstr "Ethiopië"
795
 
796
- #: admin/class-settings.php:521
797
  msgid "Fiji"
798
  msgstr "Fiji"
799
 
800
- #: admin/class-settings.php:522
801
  msgid "Finland"
802
  msgstr "Finland"
803
 
804
- #: admin/class-settings.php:523
805
  msgid "France"
806
  msgstr "Frankrijk"
807
 
808
- #: admin/class-settings.php:524
809
  msgid "French Guiana"
810
  msgstr "Frans Guyana"
811
 
812
- #: admin/class-settings.php:525
813
  msgid "Gabon"
814
  msgstr "Gabon"
815
 
816
- #: admin/class-settings.php:526
817
  msgid "Gambia"
818
  msgstr "Gambia"
819
 
820
- #: admin/class-settings.php:527
821
  msgid "Germany"
822
  msgstr "Duitsland"
823
 
824
- #: admin/class-settings.php:528
825
  msgid "Ghana"
826
  msgstr "Ghana"
827
 
828
- #: admin/class-settings.php:529
829
  msgid "Greenland"
830
  msgstr "Groenland"
831
 
832
- #: admin/class-settings.php:530
833
  msgid "Greece"
834
  msgstr "Griekenland"
835
 
836
- #: admin/class-settings.php:531
837
  msgid "Grenada"
838
  msgstr "Grenada"
839
 
840
- #: admin/class-settings.php:532
841
  msgid "Guam"
842
  msgstr "Guam"
843
 
844
- #: admin/class-settings.php:533
845
  msgid "Guadeloupe"
846
  msgstr "Guadeloupe"
847
 
848
- #: admin/class-settings.php:534
849
  msgid "Guatemala"
850
  msgstr "Guatemala"
851
 
852
- #: admin/class-settings.php:535
853
  msgid "Guinea"
854
  msgstr "Guinee"
855
 
856
- #: admin/class-settings.php:536
857
  msgid "Guinea-Bissau"
858
  msgstr "Guinee-Bissau"
859
 
860
- #: admin/class-settings.php:537
861
  msgid "Haiti"
862
  msgstr "Haïti"
863
 
864
- #: admin/class-settings.php:538
865
  msgid "Honduras"
866
  msgstr "Honduras"
867
 
868
- #: admin/class-settings.php:539
869
  msgid "Hong Kong"
870
  msgstr "Hong Kong"
871
 
872
- #: admin/class-settings.php:540
873
  msgid "Hungary"
874
  msgstr "Hongarije"
875
 
876
- #: admin/class-settings.php:541
877
  msgid "Iceland"
878
  msgstr "IJsland"
879
 
880
- #: admin/class-settings.php:542
881
  msgid "India"
882
  msgstr "India"
883
 
884
- #: admin/class-settings.php:543
885
  msgid "Indonesia"
886
  msgstr "Indonesië"
887
 
888
- #: admin/class-settings.php:544
889
  msgid "Iran"
890
  msgstr "Iran"
891
 
892
- #: admin/class-settings.php:545
893
  msgid "Iraq"
894
  msgstr "Irak"
895
 
896
- #: admin/class-settings.php:546
897
  msgid "Ireland"
898
  msgstr "Ierland"
899
 
900
- #: admin/class-settings.php:547
901
  msgid "Israel"
902
  msgstr "Israël"
903
 
904
- #: admin/class-settings.php:548
905
  msgid "Italy"
906
  msgstr "Italië"
907
 
908
- #: admin/class-settings.php:549
909
  msgid "Jamaica"
910
  msgstr "Jamaica"
911
 
912
- #: admin/class-settings.php:550
913
  msgid "Japan"
914
  msgstr "Japan"
915
 
916
- #: admin/class-settings.php:551
917
  msgid "Jordan"
918
  msgstr "Jordanië"
919
 
920
- #: admin/class-settings.php:552
921
  msgid "Kazakhstan"
922
  msgstr "Kazachstan"
923
 
924
- #: admin/class-settings.php:553
925
  msgid "Kenya"
926
  msgstr "Kenia"
927
 
928
- #: admin/class-settings.php:554
929
  msgid "Kuwait"
930
  msgstr "Koeweit"
931
 
932
- #: admin/class-settings.php:555
933
  msgid "Kyrgyzstan"
934
  msgstr "Kirgizië"
935
 
936
- #: admin/class-settings.php:556
937
  msgid "Laos"
938
  msgstr "Laos"
939
 
940
- #: admin/class-settings.php:557
941
  msgid "Latvia"
942
  msgstr "Letland"
943
 
944
- #: admin/class-settings.php:558
945
  msgid "Lebanon"
946
  msgstr "Libanon"
947
 
948
- #: admin/class-settings.php:559
949
  msgid "Lesotho"
950
  msgstr "Lesotho"
951
 
952
- #: admin/class-settings.php:560
953
  msgid "Liberia"
954
  msgstr "Liberia"
955
 
956
- #: admin/class-settings.php:561
957
  msgid "Libya"
958
  msgstr "Libië"
959
 
960
- #: admin/class-settings.php:562
961
  msgid "Liechtenstein"
962
  msgstr "Liechtenstein"
963
 
964
- #: admin/class-settings.php:563
965
  msgid "Lithuania"
966
  msgstr "Litouwen"
967
 
968
- #: admin/class-settings.php:564
969
  msgid "Luxembourg"
970
  msgstr "Luxemburg"
971
 
972
- #: admin/class-settings.php:565
973
  msgid "Macau"
974
  msgstr "Macau"
975
 
976
- #: admin/class-settings.php:566
977
  msgid "Macedonia"
978
  msgstr "Macedonië"
979
 
980
- #: admin/class-settings.php:567
981
  msgid "Madagascar"
982
  msgstr "Madagascar"
983
 
984
- #: admin/class-settings.php:568
985
  msgid "Malawi"
986
  msgstr "Malawi"
987
 
988
- #: admin/class-settings.php:569
989
  msgid "Malaysia "
990
  msgstr "Maleisie"
991
 
992
- #: admin/class-settings.php:570
993
  msgid "Mali"
994
  msgstr "Mali"
995
 
996
- #: admin/class-settings.php:571
997
  msgid "Marshall Islands"
998
  msgstr "Marshalleilanden"
999
 
1000
- #: admin/class-settings.php:572
1001
  msgid "Martinique"
1002
  msgstr "Martinique"
1003
 
1004
- #: admin/class-settings.php:573
1005
  msgid "Mauritania"
1006
  msgstr "Mauritanië"
1007
 
1008
- #: admin/class-settings.php:574
1009
  msgid "Mauritius"
1010
  msgstr "Mauritius"
1011
 
1012
- #: admin/class-settings.php:575
1013
  msgid "Mexico"
1014
  msgstr "Mexico"
1015
 
1016
- #: admin/class-settings.php:576
1017
  msgid "Micronesia"
1018
  msgstr "Micronesia"
1019
 
1020
- #: admin/class-settings.php:577
1021
  msgid "Moldova"
1022
  msgstr "Moldavië"
1023
 
1024
- #: admin/class-settings.php:578
1025
  msgid "Monaco"
1026
  msgstr "Monaco"
1027
 
1028
- #: admin/class-settings.php:579
1029
  msgid "Mongolia"
1030
  msgstr "Mongolië"
1031
 
1032
- #: admin/class-settings.php:580
1033
  msgid "Montenegro"
1034
  msgstr "Montenegro"
1035
 
1036
- #: admin/class-settings.php:581
1037
  msgid "Montserrat"
1038
  msgstr "Montserrat "
1039
 
1040
- #: admin/class-settings.php:582
1041
  msgid "Morocco"
1042
  msgstr "Marokko"
1043
 
1044
- #: admin/class-settings.php:583
1045
  msgid "Mozambique"
1046
  msgstr "Mozambique"
1047
 
1048
- #: admin/class-settings.php:584
1049
  msgid "Myanmar"
1050
  msgstr "Myanmar"
1051
 
1052
- #: admin/class-settings.php:585
1053
  msgid "Namibia"
1054
  msgstr "Namibië"
1055
 
1056
- #: admin/class-settings.php:586
1057
  msgid "Nauru"
1058
  msgstr "Nauru"
1059
 
1060
- #: admin/class-settings.php:587
1061
  msgid "Nepal"
1062
  msgstr "Nepal"
1063
 
1064
- #: admin/class-settings.php:588
1065
  msgid "Netherlands"
1066
  msgstr "Nederland"
1067
 
1068
- #: admin/class-settings.php:589
1069
  msgid "Netherlands Antilles"
1070
  msgstr "Nederlandse Antillen"
1071
 
1072
- #: admin/class-settings.php:590
1073
  msgid "New Zealand"
1074
  msgstr "Nieuw Zeeland"
1075
 
1076
- #: admin/class-settings.php:591
1077
  msgid "Nicaragua"
1078
  msgstr "Nicaragua"
1079
 
1080
- #: admin/class-settings.php:592
1081
  msgid "Niger"
1082
  msgstr "Niger"
1083
 
1084
- #: admin/class-settings.php:593
1085
  msgid "Nigeria"
1086
  msgstr "Nigeria"
1087
 
1088
- #: admin/class-settings.php:594
1089
  msgid "Niue"
1090
  msgstr "Niue"
1091
 
1092
- #: admin/class-settings.php:595
1093
  msgid "Northern Mariana Islands"
1094
  msgstr "Noordelijke Marianen"
1095
 
1096
- #: admin/class-settings.php:596
1097
  msgid "Norway"
1098
  msgstr "Noorwegen"
1099
 
1100
- #: admin/class-settings.php:597
1101
  msgid "Oman"
1102
  msgstr "Oman"
1103
 
1104
- #: admin/class-settings.php:598
1105
  msgid "Pakistan"
1106
  msgstr "Pakistan"
1107
 
1108
- #: admin/class-settings.php:599
1109
  msgid "Panama"
1110
  msgstr "Panama"
1111
 
1112
- #: admin/class-settings.php:600
1113
  msgid "Papua New Guinea"
1114
  msgstr "Papoea-Nieuw-Guinea"
1115
 
1116
- #: admin/class-settings.php:601
1117
  msgid "Paraguay"
1118
  msgstr "Paraguay"
1119
 
1120
- #: admin/class-settings.php:602
1121
  msgid "Peru"
1122
  msgstr "Peru"
1123
 
1124
- #: admin/class-settings.php:603
1125
  msgid "Philippines"
1126
  msgstr "Filipijnen"
1127
 
1128
- #: admin/class-settings.php:604
1129
  msgid "Pitcairn Islands"
1130
  msgstr "Pitcairneilanden"
1131
 
1132
- #: admin/class-settings.php:605
1133
  msgid "Poland"
1134
  msgstr "Polen"
1135
 
1136
- #: admin/class-settings.php:606
1137
  msgid "Portugal"
1138
  msgstr "Portugal"
1139
 
1140
- #: admin/class-settings.php:607
1141
  msgid "Qatar"
1142
  msgstr "Qatar"
1143
 
1144
- #: admin/class-settings.php:608
1145
  msgid "Reunion"
1146
  msgstr "Réunion"
1147
 
1148
- #: admin/class-settings.php:609
1149
  msgid "Romania"
1150
  msgstr "Roemenië"
1151
 
1152
- #: admin/class-settings.php:610
1153
  msgid "Russia"
1154
  msgstr "Rusland"
1155
 
1156
- #: admin/class-settings.php:611
1157
  msgid "Rwanda"
1158
  msgstr "Rwanda"
1159
 
1160
- #: admin/class-settings.php:612
1161
  msgid "Saint Helena"
1162
  msgstr "Sint-Helena"
1163
 
1164
- #: admin/class-settings.php:613
1165
  msgid "Saint Kitts and Nevis"
1166
  msgstr "Saint Kitts en Nevis"
1167
 
1168
- #: admin/class-settings.php:614
1169
  msgid "Saint Vincent and the Grenadines"
1170
  msgstr "Saint Vincent en de Grenadines"
1171
 
1172
- #: admin/class-settings.php:615
1173
  msgid "Saint Lucia"
1174
  msgstr "Saint Lucia"
1175
 
1176
- #: admin/class-settings.php:616
1177
  msgid "Samoa"
1178
  msgstr "Samoa"
1179
 
1180
- #: admin/class-settings.php:617
1181
  msgid "San Marino"
1182
  msgstr "San Marino"
1183
 
1184
- #: admin/class-settings.php:618
1185
  msgid "São Tomé and Príncipe"
1186
  msgstr "Sao Tomé en Principe"
1187
 
1188
- #: admin/class-settings.php:619
1189
  msgid "Saudi Arabia"
1190
  msgstr "Saoedi-Arabië"
1191
 
1192
- #: admin/class-settings.php:620
1193
  msgid "Senegal"
1194
  msgstr "Senegal"
1195
 
1196
- #: admin/class-settings.php:621
1197
  msgid "Serbia"
1198
  msgstr "Servië"
1199
 
1200
- #: admin/class-settings.php:622
1201
  msgid "Seychelles"
1202
  msgstr "Seychellen"
1203
 
1204
- #: admin/class-settings.php:623
1205
  msgid "Sierra Leone"
1206
  msgstr "Sierra Leone"
1207
 
1208
- #: admin/class-settings.php:624
1209
  msgid "Singapore"
1210
  msgstr "Singapore"
1211
 
1212
- #: admin/class-settings.php:625
1213
  msgid "Slovakia"
1214
  msgstr "Slowakije"
1215
 
1216
- #: admin/class-settings.php:626
1217
  msgid "Solomon Islands"
1218
  msgstr "Salomonseilanden"
1219
 
1220
- #: admin/class-settings.php:627
1221
  msgid "Somalia"
1222
  msgstr "Somalie"
1223
 
1224
- #: admin/class-settings.php:628
1225
  msgid "South Africa"
1226
  msgstr "Zuid Afrika"
1227
 
1228
- #: admin/class-settings.php:629
1229
  msgid "South Korea"
1230
  msgstr "Zuid Korea"
1231
 
1232
- #: admin/class-settings.php:630
1233
  msgid "Spain"
1234
  msgstr "Spanje"
1235
 
1236
- #: admin/class-settings.php:631
1237
  msgid "Sri Lanka"
1238
  msgstr "Sri Lanka"
1239
 
1240
- #: admin/class-settings.php:632
1241
  msgid "Sudan"
1242
  msgstr "Sudan"
1243
 
1244
- #: admin/class-settings.php:633
1245
  msgid "Swaziland"
1246
  msgstr "Swaziland "
1247
 
1248
- #: admin/class-settings.php:634
1249
  msgid "Sweden"
1250
  msgstr "Zweden"
1251
 
1252
- #: admin/class-settings.php:635
1253
  msgid "Switzerland"
1254
  msgstr "Zwitserland"
1255
 
1256
- #: admin/class-settings.php:636
1257
  msgid "Syria"
1258
  msgstr "Syrië"
1259
 
1260
- #: admin/class-settings.php:637
1261
  msgid "Taiwan"
1262
  msgstr "Taiwan"
1263
 
1264
- #: admin/class-settings.php:638
1265
  msgid "Tajikistan"
1266
  msgstr "Tajikistan"
1267
 
1268
- #: admin/class-settings.php:639
1269
  msgid "Tanzania"
1270
  msgstr "Tanzania"
1271
 
1272
- #: admin/class-settings.php:640
1273
  msgid "Thailand"
1274
  msgstr "Thailand"
1275
 
1276
- #: admin/class-settings.php:641
1277
  msgid "Timor-Leste"
1278
  msgstr "Oost-Timor"
1279
 
1280
- #: admin/class-settings.php:642
1281
  msgid "Tokelau"
1282
  msgstr "Tokelau"
1283
 
1284
- #: admin/class-settings.php:643
1285
  msgid "Togo"
1286
  msgstr "Togo"
1287
 
1288
- #: admin/class-settings.php:644
1289
  msgid "Tonga"
1290
  msgstr "Tonga"
1291
 
1292
- #: admin/class-settings.php:645
1293
  msgid "Trinidad and Tobago"
1294
  msgstr "Trinidad en Tobago"
1295
 
1296
- #: admin/class-settings.php:646
1297
  msgid "Tunisia"
1298
  msgstr "Tunesië"
1299
 
1300
- #: admin/class-settings.php:647
1301
  msgid "Turkey"
1302
  msgstr "Turkije"
1303
 
1304
- #: admin/class-settings.php:648
1305
  msgid "Turkmenistan"
1306
  msgstr "Turkmenistan"
1307
 
1308
- #: admin/class-settings.php:649
1309
  msgid "Tuvalu"
1310
  msgstr "Tuvalu"
1311
 
1312
- #: admin/class-settings.php:650
1313
  msgid "Uganda"
1314
  msgstr "Uganda"
1315
 
1316
- #: admin/class-settings.php:651
1317
  msgid "Ukraine"
1318
  msgstr "Oekraïne"
1319
 
1320
- #: admin/class-settings.php:652
1321
  msgid "United Arab Emirates"
1322
  msgstr "Verenigde Arabische Emiraten"
1323
 
1324
- #: admin/class-settings.php:653
1325
  msgid "United Kingdom"
1326
  msgstr "Verenigd Koninkrijk"
1327
 
1328
- #: admin/class-settings.php:654
1329
  msgid "United States"
1330
  msgstr "Verenigde Staten"
1331
 
1332
- #: admin/class-settings.php:655
1333
  msgid "Uruguay"
1334
  msgstr "Uruguay"
1335
 
1336
- #: admin/class-settings.php:656
1337
  msgid "Uzbekistan"
1338
  msgstr "Uzbekistan"
1339
 
1340
- #: admin/class-settings.php:657
1341
  msgid "Wallis Futuna"
1342
  msgstr "Wallis en Futuna"
1343
 
1344
- #: admin/class-settings.php:658
1345
  msgid "Venezuela"
1346
  msgstr "Venezuela"
1347
 
1348
- #: admin/class-settings.php:659
1349
  msgid "Vietnam"
1350
  msgstr "Vietnam"
1351
 
1352
- #: admin/class-settings.php:660
1353
  msgid "Yemen"
1354
  msgstr "Yemen"
1355
 
1356
- #: admin/class-settings.php:661
1357
  msgid "Zambia"
1358
  msgstr "Zambia"
1359
 
1360
- #: admin/class-settings.php:662
1361
  msgid "Zimbabwe"
1362
  msgstr "Zimbabwe"
1363
 
1364
- #: admin/class-settings.php:705
1365
  msgid "World view"
1366
  msgstr "wereldkaart"
1367
 
1368
- #: admin/class-settings.php:708 admin/class-settings.php:821
1369
- #: inc/wpsl-functions.php:179
1370
  msgid "Default"
1371
  msgstr "standaard"
1372
 
1373
- #: admin/class-settings.php:711 inc/wpsl-functions.php:252
1374
  msgid "Roadmap"
1375
  msgstr "wegenkaart"
1376
 
1377
- #: admin/class-settings.php:851
1378
  msgid "Start location marker"
1379
  msgstr "Start locatie marker"
1380
 
1381
- #: admin/class-settings.php:853
1382
  msgid "Store location marker"
1383
  msgstr "Winkel locatie marker"
1384
 
1385
- #: admin/class-settings.php:934
1386
  msgid "Textarea"
1387
  msgstr "tekstvlak"
1388
 
1389
- #: admin/class-settings.php:935
1390
  msgid "Dropdowns (recommended)"
1391
  msgstr "dropdown (aangeraden)"
1392
 
1393
- #: admin/class-settings.php:943
1394
  msgid "Bounces up and down"
1395
  msgstr "beweegt op en neer"
1396
 
1397
- #: admin/class-settings.php:944
1398
  msgid "Will open the info window"
1399
  msgstr "opent de info window"
1400
 
1401
- #: admin/class-settings.php:945
1402
  msgid "Does not respond"
1403
  msgstr "reageert niet"
1404
 
1405
- #: admin/class-settings.php:953
1406
  msgid "In the store listings"
1407
  msgstr "In de locatie lijst"
1408
 
1409
- #: admin/class-settings.php:954
1410
  msgid "In the info window on the map"
1411
  msgstr "In de info window op de kaart"
1412
 
1413
- #: admin/class-settings.php:1010
1414
  msgid "12 Hours"
1415
  msgstr "12 uur"
1416
 
1417
- #: admin/class-settings.php:1011
1418
  msgid "24 Hours"
1419
  msgstr "24 uur"
1420
 
@@ -1422,15 +1422,15 @@ msgstr "24 uur"
1422
  msgid "Store Locator Manager"
1423
  msgstr "Store Locator Beheerder"
1424
 
1425
- #: admin/templates/map-settings.php:12
1426
  msgid "Google Maps API"
1427
  msgstr "Google Maps API"
1428
 
1429
- #: admin/templates/map-settings.php:15
1430
  msgid "API key"
1431
  msgstr "API sleutel"
1432
 
1433
- #: admin/templates/map-settings.php:15
1434
  #, php-format
1435
  msgid ""
1436
  "A valid %sAPI key%s allows you to monitor the API usage and is required if "
@@ -1439,25 +1439,25 @@ msgstr ""
1439
  "Een geldige %sAPI sleutel%s maakt het mogelijk om het gebruik van de API in "
1440
  "de gaten te houden en is verplicht als je de API limiet wil verhogen."
1441
 
1442
- #: admin/templates/map-settings.php:16
1443
  msgid "Optional"
1444
  msgstr "Optioneel"
1445
 
1446
- #: admin/templates/map-settings.php:19
1447
  msgid "Map language"
1448
  msgstr "Kaart taal"
1449
 
1450
- #: admin/templates/map-settings.php:19
1451
  msgid "If no map language is selected the browser's prefered language is used."
1452
  msgstr ""
1453
  "Als er geen kaart taal is geselecteerd, dan word de standaard browser taal "
1454
  "gebruikt."
1455
 
1456
- #: admin/templates/map-settings.php:25
1457
  msgid "Map region"
1458
  msgstr "Kaart regio"
1459
 
1460
- #: admin/templates/map-settings.php:25
1461
  #, php-format
1462
  msgid ""
1463
  "This will bias the geocoding results towards the selected region. %s If no "
@@ -1467,73 +1467,73 @@ msgstr ""
1467
  "voorkeur krijgen over resultaten uit andere regio's . %s Als er geen regio "
1468
  "is geselecteerd dan gaat de voorkeur uit naar de Verenigde Staten."
1469
 
1470
- #: admin/templates/map-settings.php:31 admin/templates/map-settings.php:73
1471
- #: admin/templates/map-settings.php:163 admin/templates/map-settings.php:256
1472
- #: admin/templates/map-settings.php:282 admin/templates/map-settings.php:332
1473
- #: admin/templates/map-settings.php:358 admin/templates/map-settings.php:455
1474
- #: admin/templates/map-settings.php:476
1475
  msgid "Save Changes"
1476
  msgstr "Wijzigingen opslaan"
1477
 
1478
- #: admin/templates/map-settings.php:41 admin/templates/map-settings.php:383
1479
- #: admin/templates/map-settings.php:384 frontend/templates/default.php:43
1480
- #: frontend/templates/store-listings-below.php:43 inc/wpsl-functions.php:97
1481
  msgid "Search"
1482
  msgstr "Zoek"
1483
 
1484
- #: admin/templates/map-settings.php:44
1485
  msgid "Show the max results dropdown?"
1486
  msgstr "Toon de max resultaten dropdown?"
1487
 
1488
- #: admin/templates/map-settings.php:48
1489
  msgid "Show the search radius dropdown?"
1490
  msgstr "Toon de zoek radius dropdown?"
1491
 
1492
- #: admin/templates/map-settings.php:52
1493
  msgid "Show the category dropdown?"
1494
  msgstr "Toon de categorie dropdown?"
1495
 
1496
- #: admin/templates/map-settings.php:56
1497
  msgid "Distance unit"
1498
  msgstr "Afstands eenheid"
1499
 
1500
- #: admin/templates/map-settings.php:59
1501
  msgid "km"
1502
  msgstr "km"
1503
 
1504
- #: admin/templates/map-settings.php:61
1505
  msgid "mi"
1506
  msgstr "mi"
1507
 
1508
- #: admin/templates/map-settings.php:65
1509
  msgid "Max search results"
1510
  msgstr "Max zoek resultaten"
1511
 
1512
- #: admin/templates/map-settings.php:65 admin/templates/map-settings.php:69
1513
  msgid "The default value is set between the [ ]."
1514
  msgstr "* De standaard waarde staat tussen de []."
1515
 
1516
- #: admin/templates/map-settings.php:69
1517
  msgid "Search radius options"
1518
  msgstr "Zoek radius opties"
1519
 
1520
- #: admin/templates/map-settings.php:83
1521
  msgid "Map"
1522
  msgstr "Kaart"
1523
 
1524
- #: admin/templates/map-settings.php:86
1525
  msgid "Attempt to auto-locate the user"
1526
  msgstr "Probeer de locatie van de gebruiker automatische te achterhalen"
1527
 
1528
- #: admin/templates/map-settings.php:90
1529
  msgid "Load locations on page load"
1530
  msgstr "Toon alle locaties op de kaart zodra de pagina geladen is"
1531
 
1532
- #: admin/templates/map-settings.php:94
1533
  msgid "Number of locations to show"
1534
  msgstr "Aantal getoonde locaties"
1535
 
1536
- #: admin/templates/map-settings.php:94
1537
  #, php-format
1538
  msgid ""
1539
  "Although the location data is cached after the first load, a lower number "
@@ -1546,11 +1546,11 @@ msgstr ""
1546
  "Als het veld leeg blijft of er wordt 0 ingevuld, dan worden alle locaties "
1547
  "geladen."
1548
 
1549
- #: admin/templates/map-settings.php:98
1550
  msgid "Start point"
1551
  msgstr "Start locatie"
1552
 
1553
- #: admin/templates/map-settings.php:98
1554
  #, php-format
1555
  msgid ""
1556
  "%sRequired field.%s %s If auto-locating the user is disabled or fails, the "
@@ -1561,15 +1561,15 @@ msgstr ""
1561
  "locatie is uitgeschakeld of mislukt, dan wordt het middelpunt van de "
1562
  "opgegeven locatie als begin punt gebruikt."
1563
 
1564
- #: admin/templates/map-settings.php:103
1565
  msgid "Initial zoom level"
1566
  msgstr "Start zoom niveau"
1567
 
1568
- #: admin/templates/map-settings.php:107
1569
  msgid "Max auto zoom level"
1570
  msgstr "Max zoom niveau"
1571
 
1572
- #: admin/templates/map-settings.php:107
1573
  #, php-format
1574
  msgid ""
1575
  "This value sets the zoom level for the \"Zoom here\" link in the info "
@@ -1581,14 +1581,10 @@ msgstr ""
1581
  "limiteren als de viewport van de kaart verandert, wanneer geprobeerd wordt "
1582
  "om alle markers op het scherm te laten passen."
1583
 
1584
- #: admin/templates/map-settings.php:111
1585
  msgid "Show the street view controls?"
1586
  msgstr "Toon de street view controls?"
1587
 
1588
- #: admin/templates/map-settings.php:115
1589
- msgid "Show the pan controls?"
1590
- msgstr "Toon de pan controls?"
1591
-
1592
  #: admin/templates/map-settings.php:119
1593
  msgid "Show the map type control?"
1594
  msgstr "Toon de kaart type controls?"
@@ -1610,26 +1606,14 @@ msgid "Right"
1610
  msgstr "rechts"
1611
 
1612
  #: admin/templates/map-settings.php:136
1613
- msgid "Zoom control style"
1614
- msgstr "Zoom bediening stijl"
1615
-
1616
- #: admin/templates/map-settings.php:139
1617
- msgid "Small"
1618
- msgstr "klein"
1619
-
1620
- #: admin/templates/map-settings.php:141
1621
- msgid "Large"
1622
- msgstr "groot"
1623
-
1624
- #: admin/templates/map-settings.php:145
1625
  msgid "Map type"
1626
  msgstr "Kaart soort"
1627
 
1628
- #: admin/templates/map-settings.php:149
1629
  msgid "Map style"
1630
  msgstr "Kaart stijl"
1631
 
1632
- #: admin/templates/map-settings.php:149
1633
  msgid ""
1634
  "Custom map styles only work if the map type is set to \"Roadmap\" or "
1635
  "\"Terrain\"."
@@ -1637,7 +1621,7 @@ msgstr ""
1637
  "Custom map stijlen werken alleen maar als de kaart soort op \"Wegenkaart\" "
1638
  "of \"Terrein\" is gezet."
1639
 
1640
- #: admin/templates/map-settings.php:152
1641
  #, php-format
1642
  msgid ""
1643
  "You can use existing map styles from %sSnazzy Maps%s or %sMap Stylr%s and "
@@ -1648,7 +1632,7 @@ msgstr ""
1648
  "en in het onderstaande tekstvlak plaatsen. Of je kan de map stijl genereren "
1649
  "via de %sMap Style Editor%s of de %sStyled Maps Wizard%s."
1650
 
1651
- #: admin/templates/map-settings.php:153
1652
  #, php-format
1653
  msgid ""
1654
  "If you like to write the style code yourself, then you can find the "
@@ -1657,46 +1641,46 @@ msgstr ""
1657
  "Als je zelf de stijl code wil schrijven dan kun je de documentatie %shier%s "
1658
  "vinden."
1659
 
1660
- #: admin/templates/map-settings.php:155
1661
  msgid "Preview Map Style"
1662
  msgstr "Map stijl voorbeeld"
1663
 
1664
- #: admin/templates/map-settings.php:159
1665
  msgid "Show credits?"
1666
  msgstr "Toon credits?"
1667
 
1668
- #: admin/templates/map-settings.php:159
1669
  msgid ""
1670
  "This will place a \"Search provided by WP Store Locator\" backlink below the "
1671
  "map."
1672
  msgstr ""
1673
  "Dit plaatst een \"Ondersteund door WP Store Locator\" link onder de kaart."
1674
 
1675
- #: admin/templates/map-settings.php:173
1676
  msgid "User Experience"
1677
  msgstr "Gebruikers ervaring"
1678
 
1679
- #: admin/templates/map-settings.php:176
1680
  msgid "Store Locator height"
1681
  msgstr "Store Locator hoogte"
1682
 
1683
- #: admin/templates/map-settings.php:180
1684
  msgid "Max width for the info window content"
1685
  msgstr "Max breedte voor de info window inhoud"
1686
 
1687
- #: admin/templates/map-settings.php:184
1688
  msgid "Search field width"
1689
  msgstr "Zoekveld breedte"
1690
 
1691
- #: admin/templates/map-settings.php:188
1692
  msgid "Search and radius label width"
1693
  msgstr "Zoek en radius label breedte"
1694
 
1695
- #: admin/templates/map-settings.php:192
1696
  msgid "Store Locator template"
1697
  msgstr "Store locator template"
1698
 
1699
- #: admin/templates/map-settings.php:192
1700
  #, php-format
1701
  msgid ""
1702
  "The selected template is used with the [wpsl] shortcode. %s You can add a "
@@ -1705,19 +1689,19 @@ msgstr ""
1705
  "De geselecteerde template wordt gebruikt bij de [wpsl] shortcode. %s Je kunt "
1706
  "een custom template gebruiken met behulp van de %swpsl_templates%s filter."
1707
 
1708
- #: admin/templates/map-settings.php:196
1709
  msgid "Hide the scrollbar?"
1710
  msgstr "Verberg de scrollbar?"
1711
 
1712
- #: admin/templates/map-settings.php:200
1713
  msgid "Open links in a new window?"
1714
  msgstr "Open links in een nieuw venster?"
1715
 
1716
- #: admin/templates/map-settings.php:204
1717
  msgid "Show a reset map button?"
1718
  msgstr "Toon een knop om de kaart te resetten?"
1719
 
1720
- #: admin/templates/map-settings.php:208
1721
  msgid ""
1722
  "When a user clicks on \"Directions\", open a new window, and show the route "
1723
  "on google.com/maps ?"
@@ -1725,11 +1709,11 @@ msgstr ""
1725
  "Zodra een gebruiker op \"Route\" klikt, open een nieuwe venster en toon de "
1726
  "route op google.com/maps?"
1727
 
1728
- #: admin/templates/map-settings.php:212
1729
  msgid "Show a \"More info\" link in the store listings?"
1730
  msgstr "Toon een \"Meer info\" link in de locatie lijst?"
1731
 
1732
- #: admin/templates/map-settings.php:212
1733
  #, php-format
1734
  msgid ""
1735
  "This places a \"More Info\" link below the address and will show the phone, "
@@ -1742,15 +1726,15 @@ msgstr ""
1742
  "omschrijving. %s Als je bijvoorbeeld de contact gegevens altijd wil tonen, "
1743
  "volg dan de instructies op %sdeze%s pagina."
1744
 
1745
- #: admin/templates/map-settings.php:216
1746
  msgid "Where do you want to show the \"More info\" details?"
1747
  msgstr "Waar wil je de \"Meer info\" details tonen?"
1748
 
1749
- #: admin/templates/map-settings.php:220
1750
  msgid "Make the store name clickable if a store URL exists?"
1751
  msgstr "Als een winkel url bestaat, maak de winkel naam dan klikbaar?"
1752
 
1753
- #: admin/templates/map-settings.php:220
1754
  #, php-format
1755
  msgid ""
1756
  "If %spermalinks%s are enabled, the store name will always link to the store "
@@ -1759,11 +1743,11 @@ msgstr ""
1759
  "Als de %spermalinks%s zijn ingeschakeld dan zal de winkel naam altijd linken "
1760
  "naar de winkel pagina."
1761
 
1762
- #: admin/templates/map-settings.php:224
1763
  msgid "Make the phone number clickable on mobile devices?"
1764
  msgstr "Maak het telefoonnummer klikbaar op mobiele apparaten?"
1765
 
1766
- #: admin/templates/map-settings.php:228
1767
  msgid ""
1768
  "If street view is available for the current location, then show a \"Street "
1769
  "view\" link in the info window?"
@@ -1771,7 +1755,7 @@ msgstr ""
1771
  "Als voor de huidge locatie street view beschikbaar is, toon dan een \"Street "
1772
  "view\" link om vanuit de info window?"
1773
 
1774
- #: admin/templates/map-settings.php:228
1775
  #, php-format
1776
  msgid ""
1777
  "Enabling this option can sometimes result in a small delay in the opening of "
@@ -1783,11 +1767,11 @@ msgstr ""
1783
  "er een verzoek naar de Google Maps API word gemaakt om te controleren ofdat "
1784
  "street view wel beschikbaar is voor de huidige locatie."
1785
 
1786
- #: admin/templates/map-settings.php:232
1787
  msgid "Show a \"Zoom here\" link in the info window?"
1788
  msgstr "Toon een \"zoom hier\" link in de info window?"
1789
 
1790
- #: admin/templates/map-settings.php:232
1791
  #, php-format
1792
  msgid ""
1793
  "Clicking this link will make the map zoom in to the %s max auto zoom level "
@@ -1796,12 +1780,12 @@ msgstr ""
1796
  "Als er op deze link geklikt word dan zoomt de kaart in totdat de %s max auto "
1797
  "zoom level %s bereikt is."
1798
 
1799
- #: admin/templates/map-settings.php:236
1800
  msgid "On page load move the mouse cursor to the search field?"
1801
  msgstr ""
1802
  "Als de pagina wordt geladen, verplaats de muiscursor dan naar het invulveld?"
1803
 
1804
- #: admin/templates/map-settings.php:236
1805
  #, php-format
1806
  msgid ""
1807
  "If the store locator is not placed at the top of the page, enabling this "
@@ -1812,11 +1796,11 @@ msgstr ""
1812
  "instelling ervoor zorgen dat de pagina naar benenden schuift tijden het "
1813
  "laden. %s %sDeze optie staat uit op mobiele apparaten.%s"
1814
 
1815
- #: admin/templates/map-settings.php:240
1816
  msgid "Use the default style for the info window?"
1817
  msgstr "Gebruik de standaard style voor de info window?"
1818
 
1819
- #: admin/templates/map-settings.php:240
1820
  #, php-format
1821
  msgid ""
1822
  "If the default style is disabled the %sInfoBox%s library will be used "
@@ -1827,17 +1811,17 @@ msgstr ""
1827
  "gebruikt. %s Dit script maakt het mogelijk om makkelijk het ontwerp te "
1828
  "wijzigen met behulp van de .wpsl-infobox css class."
1829
 
1830
- #: admin/templates/map-settings.php:244
1831
  msgid "Hide the distance in the search results?"
1832
  msgstr "Verberg de afstand in de zoek resultaten?"
1833
 
1834
- #: admin/templates/map-settings.php:248
1835
  msgid "If a user hovers over the search results the store marker"
1836
  msgstr ""
1837
  "Als een gebruiker over de zoekresultaten beweegt met zijn muis de "
1838
  "bijbehorende marker"
1839
 
1840
- #: admin/templates/map-settings.php:248
1841
  #, php-format
1842
  msgid ""
1843
  "If marker clusters are enabled this option will not work as expected as long "
@@ -1852,11 +1836,11 @@ msgstr ""
1852
  "de marker cluster wordt omgezet naar losse markers. %s De info window wordt "
1853
  "wel geopend, maar het is niet duidelijk bij welke marker het hoort."
1854
 
1855
- #: admin/templates/map-settings.php:252
1856
  msgid "Address format"
1857
  msgstr "Adres formaat"
1858
 
1859
- #: admin/templates/map-settings.php:252
1860
  #, php-format
1861
  msgid ""
1862
  "You can add custom address formats with the %swpsl_address_formats%s filter."
@@ -1864,23 +1848,23 @@ msgstr ""
1864
  "Je kunt een nieuwe adres formaat toevoegen met de %swpsl_address_formats%s "
1865
  "filter."
1866
 
1867
- #: admin/templates/map-settings.php:266
1868
  msgid "Markers"
1869
  msgstr "Markers"
1870
 
1871
- #: admin/templates/map-settings.php:270
1872
  msgid "Enable marker clusters?"
1873
  msgstr "Activeer marker clusters?"
1874
 
1875
- #: admin/templates/map-settings.php:270
1876
  msgid "Recommended for maps with a large amount of markers."
1877
  msgstr "Aan te raden voor kaarten met grote hoeveelheden markers."
1878
 
1879
- #: admin/templates/map-settings.php:274
1880
  msgid "Max zoom level"
1881
  msgstr "Max zoom niveau"
1882
 
1883
- #: admin/templates/map-settings.php:274
1884
  msgid ""
1885
  "If this zoom level is reached or exceeded, then all markers are moved out of "
1886
  "the marker cluster and shown as individual markers."
@@ -1888,11 +1872,11 @@ msgstr ""
1888
  "Als dit zoom niveau bereikt is of gepasseerd, dan worden alle markers uit de "
1889
  "marker cluster gehaald en als losse markers getoond."
1890
 
1891
- #: admin/templates/map-settings.php:278
1892
  msgid "Cluster size"
1893
  msgstr "Cluster grote"
1894
 
1895
- #: admin/templates/map-settings.php:278
1896
  #, php-format
1897
  msgid ""
1898
  "The grid size of a cluster in pixels. %s A larger number will result in a "
@@ -1902,27 +1886,27 @@ msgstr ""
1902
  "voor dat er minder clusters zichtbaar zijn en het algoritme dus ook sneller "
1903
  "klaar is."
1904
 
1905
- #: admin/templates/map-settings.php:292
1906
  msgid "Store Editor"
1907
  msgstr "Winkel editor"
1908
 
1909
- #: admin/templates/map-settings.php:295
1910
  msgid "Default country"
1911
  msgstr "Standaard land"
1912
 
1913
- #: admin/templates/map-settings.php:299
1914
  msgid "Map type for the location preview"
1915
  msgstr "Kaart type voor het lokatie voorbeeld"
1916
 
1917
- #: admin/templates/map-settings.php:303
1918
  msgid "Hide the opening hours?"
1919
  msgstr "Verberg de openingstijden?"
1920
 
1921
- #: admin/templates/map-settings.php:309
1922
  msgid "Opening hours input type"
1923
  msgstr "Openingstijden formaat"
1924
 
1925
- #: admin/templates/map-settings.php:313
1926
  #, php-format
1927
  msgid ""
1928
  "Opening hours created in version 1.x %sare not%s automatically converted to "
@@ -1931,15 +1915,15 @@ msgstr ""
1931
  "De openingstijden die zijn aangemaakt in versie 1.x %sworden niet%s "
1932
  "automatische omgezet naar het dropdown formaat."
1933
 
1934
- #: admin/templates/map-settings.php:316 admin/templates/map-settings.php:325
1935
  msgid "The default opening hours"
1936
  msgstr "De standaard openingstijden"
1937
 
1938
- #: admin/templates/map-settings.php:322
1939
  msgid "Opening hours format"
1940
  msgstr "Openingstijden formaat"
1941
 
1942
- #: admin/templates/map-settings.php:329
1943
  msgid ""
1944
  "The default country and opening hours are only used when a new store is "
1945
  "created. So changing the default values will have no effect on existing "
@@ -1949,140 +1933,157 @@ msgstr ""
1949
  "gebruikt als een nieuwe locatie wordt aangemaakt. Het wijzigen van deze "
1950
  "waardes heeft dus geen enkele invloed op de bestaande locaties."
1951
 
1952
- #: admin/templates/map-settings.php:342
1953
  msgid "Permalink"
1954
  msgstr "Permalink"
1955
 
1956
- #: admin/templates/map-settings.php:345
1957
  msgid "Enable permalink?"
1958
  msgstr "Activeer permalink?"
1959
 
1960
- #: admin/templates/map-settings.php:349
1961
  msgid "Store slug"
1962
  msgstr "Winkel slug"
1963
 
1964
- #: admin/templates/map-settings.php:353
1965
  msgid "Category slug"
1966
  msgstr "Categorie slug"
1967
 
1968
- #: admin/templates/map-settings.php:356
1969
  #, php-format
1970
  msgid "The permalink slugs %smust be unique%s on your site."
1971
  msgstr "De permalink slug %smoet uniek%s zijn op je site."
1972
 
1973
- #: admin/templates/map-settings.php:368
1974
  msgid "Labels"
1975
  msgstr "Labels"
1976
 
1977
- #: admin/templates/map-settings.php:371 admin/templates/map-settings.php:372
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1978
  #: frontend/templates/default.php:11
1979
- #: frontend/templates/store-listings-below.php:11 inc/wpsl-functions.php:96
1980
  msgid "Your location"
1981
  msgstr "Uw locatie"
1982
 
1983
- #: admin/templates/map-settings.php:375 admin/templates/map-settings.php:376
1984
  #: frontend/templates/default.php:20
1985
- #: frontend/templates/store-listings-below.php:20 inc/wpsl-functions.php:99
1986
  msgid "Search radius"
1987
  msgstr "Zoek radius"
1988
 
1989
- #: admin/templates/map-settings.php:379 admin/templates/map-settings.php:380
1990
- #: frontend/class-frontend.php:1296 inc/wpsl-functions.php:100
1991
  msgid "No results found"
1992
  msgstr "Geen resultaten gevonden"
1993
 
1994
- #: admin/templates/map-settings.php:387
1995
  msgid "Searching (preloader text)"
1996
  msgstr "Aan het zoeken (preloader tekst)"
1997
 
1998
- #: admin/templates/map-settings.php:388 frontend/class-frontend.php:1295
1999
- #: inc/wpsl-functions.php:98
2000
  msgid "Searching..."
2001
  msgstr "Zoeken..."
2002
 
2003
- #: admin/templates/map-settings.php:391 admin/templates/map-settings.php:392
2004
  #: frontend/templates/default.php:29
2005
- #: frontend/templates/store-listings-below.php:29 inc/wpsl-functions.php:101
2006
  msgid "Results"
2007
  msgstr "Resultaten"
2008
 
2009
- #: admin/templates/map-settings.php:395 admin/upgrade.php:218
2010
- #: inc/wpsl-functions.php:115
2011
  msgid "Category filter"
2012
  msgstr "Categorie filter"
2013
 
2014
- #: admin/templates/map-settings.php:396 frontend/class-frontend.php:1082
2015
  msgid "Category"
2016
  msgstr "Categorie"
2017
 
2018
- #: admin/templates/map-settings.php:399 admin/templates/map-settings.php:400
2019
- #: admin/upgrade.php:66 frontend/class-frontend.php:1297
2020
  #: frontend/underscore-functions.php:114 frontend/underscore-functions.php:141
2021
- #: inc/wpsl-functions.php:102
2022
  msgid "More info"
2023
  msgstr "Meer info"
2024
 
2025
- #: admin/templates/map-settings.php:403 admin/templates/map-settings.php:404
2026
- #: frontend/class-frontend.php:661 frontend/underscore-functions.php:29
2027
- #: frontend/underscore-functions.php:121 inc/wpsl-functions.php:110
2028
  msgid "Phone"
2029
  msgstr "Telefoon"
2030
 
2031
- #: admin/templates/map-settings.php:423 admin/templates/map-settings.php:424
2032
- #: frontend/class-frontend.php:1302 inc/wpsl-functions.php:95
2033
  msgid "Start location"
2034
  msgstr "Start locatie"
2035
 
2036
- #: admin/templates/map-settings.php:427
2037
  msgid "Get directions"
2038
  msgstr "Toon routebeschrijving"
2039
 
2040
- #: admin/templates/map-settings.php:428 frontend/class-frontend.php:1300
2041
- #: inc/wpsl-functions.php:103
2042
  msgid "Directions"
2043
  msgstr "Routebeschrijving"
2044
 
2045
- #: admin/templates/map-settings.php:431
2046
  msgid "No directions found"
2047
  msgstr "Geen routebeschrijving beschikbaar"
2048
 
2049
- #: admin/templates/map-settings.php:432 admin/upgrade.php:163
2050
- #: frontend/class-frontend.php:1301 inc/wpsl-functions.php:104
2051
  msgid "No route could be found between the origin and destination"
2052
  msgstr "Er kon geen route gevonden worden tussen het begin- en eindpunt"
2053
 
2054
- #: admin/templates/map-settings.php:435 admin/templates/map-settings.php:436
2055
- #: admin/upgrade.php:87 frontend/class-frontend.php:1303
2056
- #: inc/wpsl-functions.php:105
2057
  msgid "Back"
2058
  msgstr "Terug"
2059
 
2060
- #: admin/templates/map-settings.php:439 admin/templates/map-settings.php:440
2061
- #: admin/upgrade.php:155 frontend/class-frontend.php:1304
2062
- #: inc/wpsl-functions.php:106
2063
  msgid "Street view"
2064
  msgstr "Street view"
2065
 
2066
- #: admin/templates/map-settings.php:443 admin/templates/map-settings.php:444
2067
- #: admin/upgrade.php:159 frontend/class-frontend.php:1305
2068
- #: inc/wpsl-functions.php:107
2069
  msgid "Zoom here"
2070
  msgstr "Zoom hier"
2071
 
2072
- #: admin/templates/map-settings.php:447
2073
  msgid "General error"
2074
  msgstr "Foutmelding"
2075
 
2076
- #: admin/templates/map-settings.php:448 frontend/class-frontend.php:1298
2077
- #: inc/wpsl-functions.php:108
2078
  msgid "Something went wrong, please try again!"
2079
  msgstr "Er ging iets fout, probeer het nog een keer!"
2080
 
2081
- #: admin/templates/map-settings.php:451
2082
  msgid "Query limit error"
2083
  msgstr "Query limit foutmelding"
2084
 
2085
- #: admin/templates/map-settings.php:451
2086
  #, php-format
2087
  msgid ""
2088
  "You can raise the %susage limit%s by obtaining an API %skey%s, and fill in "
@@ -2091,20 +2092,20 @@ msgstr ""
2091
  "Je kan de %sgebruiks limiet%s verhogen door een API %ssleutel%s aan te "
2092
  "vragen en die in het \"API sleutel\" veld bovenaan de pagina in te vullen."
2093
 
2094
- #: admin/templates/map-settings.php:452 frontend/class-frontend.php:1299
2095
- #: inc/wpsl-functions.php:109
2096
  msgid "API usage limit reached"
2097
  msgstr "API gebruikslimiet bereikt"
2098
 
2099
- #: admin/templates/map-settings.php:465
2100
  msgid "Tools"
2101
  msgstr "Tools"
2102
 
2103
- #: admin/templates/map-settings.php:468
2104
  msgid "Enable store locator debug?"
2105
  msgstr "Activeer store locator debug?"
2106
 
2107
- #: admin/templates/map-settings.php:468
2108
  #, php-format
2109
  msgid ""
2110
  "This disables the WPSL transient cache. %sThe transient cache is only used "
@@ -2114,11 +2115,11 @@ msgstr ""
2114
  "alleen gebruikt als de %sToon alle locaties op de kaart zodra de pagina "
2115
  "geladen is%s optie is geactiveerd."
2116
 
2117
- #: admin/templates/map-settings.php:472
2118
  msgid "WPSL transients"
2119
  msgstr "WPSL transients"
2120
 
2121
- #: admin/templates/map-settings.php:473
2122
  msgid "Clear store locator transient cache"
2123
  msgstr "Verwijder het store locator transient cache."
2124
 
@@ -2130,15 +2131,15 @@ msgstr "info window"
2130
  msgid "Reset"
2131
  msgstr "Herstel"
2132
 
2133
- #: admin/upgrade.php:186 inc/wpsl-functions.php:90
2134
  msgid "stores"
2135
  msgstr "winkels"
2136
 
2137
- #: admin/upgrade.php:190 inc/wpsl-functions.php:91
2138
  msgid "store-category"
2139
  msgstr "winkel-categorie"
2140
 
2141
- #: admin/upgrade.php:371
2142
  #, php-format
2143
  msgid ""
2144
  "Because you updated WP Store Locator from version 1.x, the %s current store "
@@ -2147,7 +2148,7 @@ msgstr ""
2147
  "Doordat je WP Store Locator update van versie 1.x, de %s huidige winkel "
2148
  "locaties moeten worden %somgezet%s naar custom post types."
2149
 
2150
- #: admin/upgrade.php:392
2151
  #, php-format
2152
  msgid ""
2153
  "The script converting the locations timed out. %s You can click the \"Start "
@@ -2165,15 +2166,15 @@ msgstr ""
2165
  "heeft al geprobeerd om de maximum execution time uit te zetten, maar als je "
2166
  "dit leest dan is dat mislukt."
2167
 
2168
- #: admin/upgrade.php:413
2169
  msgid "Store locations to convert:"
2170
  msgstr "Locaties die omgezet worden:"
2171
 
2172
- #: admin/upgrade.php:415
2173
  msgid "Start Converting"
2174
  msgstr "Begin met omzetten"
2175
 
2176
- #: admin/upgrade.php:537
2177
  #, php-format
2178
  msgid ""
2179
  "All the store locations are now converted to custom post types. %s You can "
@@ -2182,7 +2183,7 @@ msgstr ""
2182
  "Alle winkel locaties zijn nu omgezet naar custom post types. %s Je kunt ze "
2183
  "bekijken op de %sAlle Winkels%s pagina."
2184
 
2185
- #: frontend/class-frontend.php:599
2186
  msgid ""
2187
  "If you use the [wpsl_address] shortcode outside a store page you need to set "
2188
  "the ID attribute."
@@ -2190,7 +2191,7 @@ msgstr ""
2190
  "Als je de [wpsl_address] shortcode op een pagina gebruikt die geen winkel "
2191
  "pagina is dan is de ID attribute verplicht."
2192
 
2193
- #: frontend/class-frontend.php:710
2194
  msgid ""
2195
  "If you use the [wpsl_hours] shortcode outside a store page you need to set "
2196
  "the ID attribute."
@@ -2198,7 +2199,7 @@ msgstr ""
2198
  "Als je de [wpsl_hours] shortcode op een pagina gebruikt die geen winkel "
2199
  "pagina is dan is de ID attribute verplicht."
2200
 
2201
- #: frontend/class-frontend.php:759
2202
  msgid ""
2203
  "If you use the [wpsl_map] shortcode outside a store page you need to set the "
2204
  "ID attribute."
@@ -2206,24 +2207,24 @@ msgstr ""
2206
  "Als je de [wpsl_map] shortcode op een pagina gebruikt die geen winkel pagina "
2207
  "is dan is de ID attribute verplicht."
2208
 
2209
- #: frontend/class-frontend.php:1084
2210
  msgid "Any"
2211
  msgstr "Alle"
2212
 
2213
- #: frontend/class-frontend.php:1197
2214
  msgid "The application does not have permission to use the Geolocation API."
2215
  msgstr ""
2216
  "Deze applicatie heeft geen toestemming om de Geolocation API te gebruiken."
2217
 
2218
- #: frontend/class-frontend.php:1198
2219
  msgid "Location information is unavailable."
2220
  msgstr "Informatie over de huidige locatie is niet beschikbaar."
2221
 
2222
- #: frontend/class-frontend.php:1199
2223
  msgid "The geolocation request timed out."
2224
  msgstr "Het geolocation verzoek timed out."
2225
 
2226
- #: frontend/class-frontend.php:1200
2227
  msgid "An unknown error occurred."
2228
  msgstr " Er heeft zich een onbekende fout voorgedaan."
2229
 
@@ -2333,79 +2334,91 @@ msgstr "Voer winkel naam in"
2333
  msgid "Zip"
2334
  msgstr "Postcode"
2335
 
2336
- #: inc/wpsl-functions.php:184
2337
  msgid "Show the store list below the map"
2338
  msgstr "Toon the locatie lijst onder de kaart"
2339
 
2340
- #: inc/wpsl-functions.php:201
2341
  msgid "Monday"
2342
  msgstr "Maandag"
2343
 
2344
- #: inc/wpsl-functions.php:202
2345
  msgid "Tuesday"
2346
  msgstr "Dinsdag"
2347
 
2348
- #: inc/wpsl-functions.php:203
2349
  msgid "Wednesday"
2350
  msgstr "Woensdag"
2351
 
2352
- #: inc/wpsl-functions.php:204
2353
  msgid "Thursday"
2354
  msgstr "Donderdag"
2355
 
2356
- #: inc/wpsl-functions.php:205
2357
  msgid "Friday"
2358
  msgstr "Vrijdag"
2359
 
2360
- #: inc/wpsl-functions.php:206
2361
  msgid "Saturday"
2362
  msgstr "Zaterdag"
2363
 
2364
- #: inc/wpsl-functions.php:207
2365
  msgid "Sunday"
2366
  msgstr "Zondag"
2367
 
2368
- #: inc/wpsl-functions.php:237
2369
  #, php-format
2370
  msgid "Mon %sTue %sWed %sThu %sFri %sSat Closed %sSun Closed"
2371
  msgstr "ma %sdi %swoe %sdo %svrij %szat gesloten %szo gesloten"
2372
 
2373
- #: inc/wpsl-functions.php:253
2374
  msgid "Satellite"
2375
  msgstr "Satelliet"
2376
 
2377
- #: inc/wpsl-functions.php:254
2378
  msgid "Hybrid"
2379
  msgstr "Hybrid"
2380
 
2381
- #: inc/wpsl-functions.php:255
2382
  msgid "Terrain"
2383
  msgstr "Terrein"
2384
 
2385
- #: inc/wpsl-functions.php:270
2386
  msgid "(city) (state) (zip code)"
2387
  msgstr "(stad) (provincie) (postcode)"
2388
 
2389
- #: inc/wpsl-functions.php:271
2390
  msgid "(city), (state) (zip code)"
2391
  msgstr "(stad), (provincie), (postcode)"
2392
 
2393
- #: inc/wpsl-functions.php:272
2394
  msgid "(city) (zip code)"
2395
  msgstr "(stad) (postcode)"
2396
 
2397
- #: inc/wpsl-functions.php:273
2398
  msgid "(city), (zip code)"
2399
  msgstr "(stad), (postcode)"
2400
 
2401
- #: inc/wpsl-functions.php:274
2402
  msgid "(zip code) (city) (state)"
2403
  msgstr "(postcode) (stad) (provincie)"
2404
 
2405
- #: inc/wpsl-functions.php:275
2406
  msgid "(zip code) (city)"
2407
  msgstr "(postcode) (stad)"
2408
 
 
 
 
 
 
 
 
 
 
 
 
 
2409
  #~ msgid "If a store url exists, make the store name clickable?"
2410
  #~ msgstr "Als een winkel url bestaat, maak de winkel naam dan klikbaar?"
2411
 
2
  msgstr ""
3
  "Project-Id-Version: WP Store Locator 2.0\n"
4
  "Report-Msgid-Bugs-To: \n"
5
+ "POT-Creation-Date: 2015-11-23 12:04+0100\n"
6
+ "PO-Revision-Date: 2015-11-23 12:04+0100\n"
7
  "Last-Translator: \n"
8
  "Language-Team: \n"
9
  "Language: nl_NL\n"
11
  "Content-Type: text/plain; charset=UTF-8\n"
12
  "Content-Transfer-Encoding: 8bit\n"
13
  "Plural-Forms: nplurals=2; plural=n != 1;\n"
14
+ "X-Generator: Poedit 1.8.4\n"
15
  "X-Poedit-SourceCharset: UTF-8\n"
16
  "X-Poedit-KeywordsList: __;_e;__ngettext:1,2;_n:1,2;__ngettext_noop:1,2;"
17
  "_n_noop:1,2;_c,_nc:4c,1,2;_x:1,2c;_ex:1,2c;_nx:4c,1,2;_nx_noop:4c,1,2\n"
18
+ "X-Poedit-Basepath: ..\n"
19
  "X-Textdomain-Support: yes\n"
20
  "X-Poedit-SearchPath-0: .\n"
21
 
37
  "Vergeet niet voordat je de [wpsl] shortcode op een pagina plaatst, om een "
38
  "start locatie op te geven op de %sinstellingen%s pagina. %sSluit%s"
39
 
40
+ #: admin/class-admin.php:150 admin/templates/map-settings.php:8
41
  msgid "Settings"
42
  msgstr "Instellingen"
43
 
49
  msgid "Geocode was not successful for the following reason"
50
  msgstr "Geocode was niet succesvol om de volgende reden"
51
 
52
+ #: admin/class-admin.php:266 admin/upgrade.php:406
53
  msgid "Security check failed, reload the page and try again."
54
  msgstr ""
55
  "Beveiligings controle mislukt, herlaad de pagina en probeer het nog een keer."
64
  "Alle locatie details moeten zijn ingevuld voordat de locatie op de kaart "
65
  "getoond kan worden."
66
 
67
+ #: admin/class-admin.php:269 admin/class-metaboxes.php:505
68
+ #: frontend/class-frontend.php:493
69
  msgid "Closed"
70
  msgstr "gesloten"
71
 
166
  msgid "Opening Hours"
167
  msgstr "Openingstijden"
168
 
169
+ #: admin/class-metaboxes.php:82 admin/templates/map-settings.php:421
170
+ #: admin/templates/map-settings.php:422 frontend/underscore-functions.php:133
171
+ #: inc/wpsl-functions.php:116
172
  msgid "Hours"
173
  msgstr "Uren"
174
 
180
  msgid "Tel"
181
  msgstr "Tel."
182
 
183
+ #: admin/class-metaboxes.php:91 admin/templates/map-settings.php:409
184
+ #: admin/templates/map-settings.php:410 frontend/class-frontend.php:677
185
  #: frontend/underscore-functions.php:32 frontend/underscore-functions.php:124
186
+ #: inc/wpsl-functions.php:113
187
  msgid "Fax"
188
  msgstr "Fax"
189
 
190
+ #: admin/class-metaboxes.php:94 admin/templates/map-settings.php:413
191
+ #: admin/templates/map-settings.php:414 admin/upgrade.php:210
192
+ #: frontend/class-frontend.php:681 frontend/underscore-functions.php:35
193
+ #: frontend/underscore-functions.php:127 inc/wpsl-functions.php:114
194
  msgid "Email"
195
  msgstr "E-mail"
196
 
197
+ #: admin/class-metaboxes.php:97 admin/templates/map-settings.php:417
198
+ #: admin/templates/map-settings.php:418 admin/upgrade.php:214
199
+ #: frontend/class-frontend.php:686 inc/wpsl-functions.php:115
200
  msgid "Url"
201
  msgstr "Url"
202
 
203
+ #: admin/class-metaboxes.php:427
204
  msgid "Hour format"
205
  msgstr "Uur formaat"
206
 
207
+ #: admin/class-metaboxes.php:434
208
  msgid "Days"
209
  msgstr "Dagen"
210
 
211
+ #: admin/class-metaboxes.php:435
212
  msgid "Opening Periods"
213
  msgstr "Openingstijden"
214
 
215
+ #: admin/class-metaboxes.php:682
216
  msgid "Failed to publish the store. Please fill in the required store details."
217
  msgstr ""
218
  "Het publiceren van de winkel is mislukt. Vul alle verplichte velden in."
219
 
220
+ #: admin/class-metaboxes.php:818
221
  msgid "Preview Location"
222
  msgstr "Bekijk voorbeeld"
223
 
224
+ #: admin/class-metaboxes.php:819
225
  #, php-format
226
  msgid ""
227
  "The map preview is based on the provided address, city and country details. "
230
  "Het voorbeeld is gebaseerd op het adres, de stad en het opgegeven land. %s "
231
  "De opgegeven lengte en breedtegraad worden niet gebruikt."
232
 
233
+ #: admin/class-metaboxes.php:820
234
  msgid "You can drag the marker to adjust the exact location of the marker."
235
  msgstr "Je kunt de locatie aanpassen door de marker te verslepen."
236
 
237
+ #: admin/class-metaboxes.php:840 admin/class-metaboxes.php:843
238
  msgid "Store updated."
239
  msgstr "Winkel bijgewerkt."
240
 
241
+ #: admin/class-metaboxes.php:841
242
  msgid "Custom field updated."
243
  msgstr "Custom veld bijgewerkt."
244
 
245
+ #: admin/class-metaboxes.php:842
246
  msgid "Custom field deleted."
247
  msgstr "Custom veld verwijderd."
248
 
249
+ #: admin/class-metaboxes.php:844
250
  #, php-format
251
  msgid "Store restored to revision from %s"
252
  msgstr "Winkel hersteld naar revisie %s"
253
 
254
+ #: admin/class-metaboxes.php:845
255
  msgid "Store published."
256
  msgstr "Winkel gepubliceerd."
257
 
258
+ #: admin/class-metaboxes.php:846
259
  msgid "Store saved."
260
  msgstr "Winkel opgeslagen."
261
 
262
+ #: admin/class-metaboxes.php:847
263
  msgid "Store submitted."
264
  msgstr "Winkel ingediend."
265
 
266
+ #: admin/class-metaboxes.php:849
267
  #, php-format
268
  msgid "Store scheduled for: <strong>%1$s</strong>."
269
  msgstr "Winkel ingepland voor: <strong>%1$s</strong>. "
270
 
271
+ #: admin/class-metaboxes.php:850
272
  msgid "M j, Y @ G:i"
273
  msgstr "M j, Y @ G:i"
274
 
275
+ #: admin/class-metaboxes.php:852
276
  msgid "Store draft updated."
277
  msgstr "Winkel concept bijgewerkt."
278
 
279
+ #: admin/class-metaboxes.php:858
280
  msgid "View store"
281
  msgstr "Bekijk winkel"
282
 
283
+ #: admin/class-metaboxes.php:864
284
  msgid "Preview store"
285
  msgstr "Winkel voorbeeld"
286
 
288
  msgid "WP Store Locator Transients Cleared"
289
  msgstr "WP Store Locator transients verwijderd"
290
 
291
+ #: admin/class-settings.php:371
292
  msgid ""
293
  "The max results field cannot be empty, the default value has been restored."
294
  msgstr ""
295
  "Het max zoek resulaten veld kan niet leeg zijn, de standaard waarde is "
296
  "hersteld."
297
 
298
+ #: admin/class-settings.php:374
299
  msgid ""
300
  "The search radius field cannot be empty, the default value has been restored."
301
  msgstr ""
302
  "Het zoek radius veld kan niet leeg zijn, de standaard waarde is hersteld."
303
 
304
+ #: admin/class-settings.php:377
305
  #, php-format
306
  msgid ""
307
  "Please provide the name of a city or country that can be used as a starting "
313
  "automatische achterhalen van de gebruikers locatie mislukt, of het "
314
  "automatische achterhalen is uitgeschakeld."
315
 
316
+ #: admin/class-settings.php:398
317
  msgid "Select your language"
318
  msgstr "Kies uw taal"
319
 
320
+ #: admin/class-settings.php:399
321
  msgid "English"
322
  msgstr "Engels"
323
 
324
+ #: admin/class-settings.php:400
325
  msgid "Arabic"
326
  msgstr "Arabisch"
327
 
328
+ #: admin/class-settings.php:401
329
  msgid "Basque"
330
  msgstr "Bask"
331
 
332
+ #: admin/class-settings.php:402
333
  msgid "Bulgarian"
334
  msgstr "Bulgaars"
335
 
336
+ #: admin/class-settings.php:403
337
  msgid "Bengali"
338
  msgstr "Bengali"
339
 
340
+ #: admin/class-settings.php:404
341
  msgid "Catalan"
342
  msgstr "Catalaans"
343
 
344
+ #: admin/class-settings.php:405
345
  msgid "Czech"
346
  msgstr "Tjechisch"
347
 
348
+ #: admin/class-settings.php:406
349
  msgid "Danish"
350
  msgstr "Deens"
351
 
352
+ #: admin/class-settings.php:407
353
  msgid "German"
354
  msgstr "Duits"
355
 
356
+ #: admin/class-settings.php:408
357
  msgid "Greek"
358
  msgstr "Grieks"
359
 
360
+ #: admin/class-settings.php:409
361
  msgid "English (Australian)"
362
  msgstr "Engels (Australisch)"
363
 
364
+ #: admin/class-settings.php:410
365
  msgid "English (Great Britain)"
366
  msgstr "Engels (Verenigd Koninkrijk)"
367
 
368
+ #: admin/class-settings.php:411
369
  msgid "Spanish"
370
  msgstr "Spaans"
371
 
372
+ #: admin/class-settings.php:412
373
  msgid "Farsi"
374
  msgstr "Farsi"
375
 
376
+ #: admin/class-settings.php:413
377
  msgid "Finnish"
378
  msgstr "Fins"
379
 
380
+ #: admin/class-settings.php:414
381
  msgid "Filipino"
382
  msgstr "Filipijns"
383
 
384
+ #: admin/class-settings.php:415
385
  msgid "French"
386
  msgstr "Frans"
387
 
388
+ #: admin/class-settings.php:416
389
  msgid "Galician"
390
  msgstr "Gallisch"
391
 
392
+ #: admin/class-settings.php:417
393
  msgid "Gujarati"
394
  msgstr "Gujurati"
395
 
396
+ #: admin/class-settings.php:418
397
  msgid "Hindi"
398
  msgstr "Hindi"
399
 
400
+ #: admin/class-settings.php:419
401
  msgid "Croatian"
402
  msgstr "Kroatisch"
403
 
404
+ #: admin/class-settings.php:420
405
  msgid "Hungarian"
406
  msgstr "Hongaars"
407
 
408
+ #: admin/class-settings.php:421
409
  msgid "Indonesian"
410
  msgstr "Indonesisch"
411
 
412
+ #: admin/class-settings.php:422
413
  msgid "Italian"
414
  msgstr "Italiaans"
415
 
416
+ #: admin/class-settings.php:423
417
  msgid "Hebrew"
418
  msgstr "Hebreeuws"
419
 
420
+ #: admin/class-settings.php:424
421
  msgid "Japanese"
422
  msgstr "Japans"
423
 
424
+ #: admin/class-settings.php:425
425
  msgid "Kannada"
426
  msgstr "Kannada"
427
 
428
+ #: admin/class-settings.php:426
429
  msgid "Korean"
430
  msgstr "Koreaans"
431
 
432
+ #: admin/class-settings.php:427
433
  msgid "Lithuanian"
434
  msgstr "Litouws"
435
 
436
+ #: admin/class-settings.php:428
437
  msgid "Latvian"
438
  msgstr "Lets"
439
 
440
+ #: admin/class-settings.php:429
441
  msgid "Malayalam"
442
  msgstr "Malayalam"
443
 
444
+ #: admin/class-settings.php:430
445
  msgid "Marathi"
446
  msgstr "Marathi"
447
 
448
+ #: admin/class-settings.php:431
449
  msgid "Dutch"
450
  msgstr "Nederlands"
451
 
452
+ #: admin/class-settings.php:432
453
  msgid "Norwegian"
454
  msgstr "Noors"
455
 
456
+ #: admin/class-settings.php:433
457
  msgid "Norwegian Nynorsk"
458
  msgstr "Noors Nynorsk"
459
 
460
+ #: admin/class-settings.php:434
461
  msgid "Polish"
462
  msgstr "Pools"
463
 
464
+ #: admin/class-settings.php:435
465
  msgid "Portuguese"
466
  msgstr "Portugees"
467
 
468
+ #: admin/class-settings.php:436
469
  msgid "Portuguese (Brazil)"
470
  msgstr "Portugees (Brazilië)"
471
 
472
+ #: admin/class-settings.php:437
473
  msgid "Portuguese (Portugal)"
474
  msgstr "Portugees (Portugal)"
475
 
476
+ #: admin/class-settings.php:438
477
  msgid "Romanian"
478
  msgstr "Roemeens"
479
 
480
+ #: admin/class-settings.php:439
481
  msgid "Russian"
482
  msgstr "Russisch"
483
 
484
+ #: admin/class-settings.php:440
485
  msgid "Slovak"
486
  msgstr "Slowaaks"
487
 
488
+ #: admin/class-settings.php:441
489
  msgid "Slovenian"
490
  msgstr "Sloveens"
491
 
492
+ #: admin/class-settings.php:442
493
  msgid "Serbian"
494
  msgstr "Servisch"
495
 
496
+ #: admin/class-settings.php:443
497
  msgid "Swedish"
498
  msgstr "Zweeds"
499
 
500
+ #: admin/class-settings.php:444
501
  msgid "Tagalog"
502
  msgstr "Tagalog"
503
 
504
+ #: admin/class-settings.php:445
505
  msgid "Tamil"
506
  msgstr "Tamil"
507
 
508
+ #: admin/class-settings.php:446
509
  msgid "Telugu"
510
  msgstr "Telugu"
511
 
512
+ #: admin/class-settings.php:447
513
  msgid "Thai"
514
  msgstr "Thai"
515
 
516
+ #: admin/class-settings.php:448
517
  msgid "Turkish"
518
  msgstr "Turks"
519
 
520
+ #: admin/class-settings.php:449
521
  msgid "Ukrainian"
522
  msgstr "Oekraïens"
523
 
524
+ #: admin/class-settings.php:450
525
  msgid "Vietnamese"
526
  msgstr "Vietnamees"
527
 
528
+ #: admin/class-settings.php:451
529
  msgid "Chinese (Simplified)"
530
  msgstr "Chinees (Vereenvoudigd)"
531
 
532
+ #: admin/class-settings.php:452
533
  msgid "Chinese (Traditional)"
534
  msgstr "Chinees (Traditioneel)"
535
 
536
+ #: admin/class-settings.php:457
537
  msgid "Select your region"
538
  msgstr "Kies uw regio"
539
 
540
+ #: admin/class-settings.php:458
541
  msgid "Afghanistan"
542
  msgstr "Afghanistan"
543
 
544
+ #: admin/class-settings.php:459
545
  msgid "Albania"
546
  msgstr "Albanië"
547
 
548
+ #: admin/class-settings.php:460
549
  msgid "Algeria"
550
  msgstr "Algerije"
551
 
552
+ #: admin/class-settings.php:461
553
  msgid "American Samoa"
554
  msgstr "Amerikaans Samoa"
555
 
556
+ #: admin/class-settings.php:462
557
  msgid "Andorra"
558
  msgstr "Andorra"
559
 
560
+ #: admin/class-settings.php:463
561
  msgid "Anguilla"
562
  msgstr "Anguilla"
563
 
564
+ #: admin/class-settings.php:464
565
  msgid "Angola"
566
  msgstr "Angola"
567
 
568
+ #: admin/class-settings.php:465
569
  msgid "Antigua and Barbuda"
570
  msgstr "Antigua en Barbuda"
571
 
572
+ #: admin/class-settings.php:466
573
  msgid "Argentina"
574
  msgstr "Argentinië"
575
 
576
+ #: admin/class-settings.php:467
577
  msgid "Armenia"
578
  msgstr "Armenia"
579
 
580
+ #: admin/class-settings.php:468
581
  msgid "Aruba"
582
  msgstr "Aruba"
583
 
584
+ #: admin/class-settings.php:469
585
  msgid "Australia"
586
  msgstr "Australië"
587
 
588
+ #: admin/class-settings.php:470
589
  msgid "Austria"
590
  msgstr "Oostenrijk"
591
 
592
+ #: admin/class-settings.php:471
593
  msgid "Azerbaijan"
594
  msgstr "Azerbeidzjan"
595
 
596
+ #: admin/class-settings.php:472
597
  msgid "Bahamas"
598
  msgstr "Bahamas"
599
 
600
+ #: admin/class-settings.php:473
601
  msgid "Bahrain"
602
  msgstr "Bahrein"
603
 
604
+ #: admin/class-settings.php:474
605
  msgid "Bangladesh"
606
  msgstr "Bangladesh"
607
 
608
+ #: admin/class-settings.php:475
609
  msgid "Barbados"
610
  msgstr "Barbados"
611
 
612
+ #: admin/class-settings.php:476
613
  msgid "Belarus"
614
  msgstr "Wit-Rusland"
615
 
616
+ #: admin/class-settings.php:477
617
  msgid "Belgium"
618
  msgstr "België"
619
 
620
+ #: admin/class-settings.php:478
621
  msgid "Belize"
622
  msgstr "Belize"
623
 
624
+ #: admin/class-settings.php:479
625
  msgid "Benin"
626
  msgstr "Benin"
627
 
628
+ #: admin/class-settings.php:480
629
  msgid "Bermuda"
630
  msgstr "Bermuda"
631
 
632
+ #: admin/class-settings.php:481
633
  msgid "Bhutan"
634
  msgstr "Bhutan"
635
 
636
+ #: admin/class-settings.php:482
637
  msgid "Bolivia"
638
  msgstr "Bolivia"
639
 
640
+ #: admin/class-settings.php:483
641
  msgid "Bosnia and Herzegovina"
642
  msgstr "Bosnia en Herzegovina"
643
 
644
+ #: admin/class-settings.php:484
645
  msgid "Botswana"
646
  msgstr "Botswana"
647
 
648
+ #: admin/class-settings.php:485
649
  msgid "Brazil"
650
  msgstr "Brazilië"
651
 
652
+ #: admin/class-settings.php:486
653
  msgid "British Indian Ocean Territory"
654
  msgstr "Brits Indische Oceaanterritorium"
655
 
656
+ #: admin/class-settings.php:487
657
  msgid "Brunei"
658
  msgstr "Brunei"
659
 
660
+ #: admin/class-settings.php:488
661
  msgid "Bulgaria"
662
  msgstr "Bulgarije"
663
 
664
+ #: admin/class-settings.php:489
665
  msgid "Burkina Faso"
666
  msgstr "Burkina Faso"
667
 
668
+ #: admin/class-settings.php:490
669
  msgid "Burundi"
670
  msgstr "Burundi"
671
 
672
+ #: admin/class-settings.php:491
673
  msgid "Cambodia"
674
  msgstr "Cambodja"
675
 
676
+ #: admin/class-settings.php:492
677
  msgid "Cameroon"
678
  msgstr "Kameroen"
679
 
680
+ #: admin/class-settings.php:493
681
  msgid "Canada"
682
  msgstr "Canada"
683
 
684
+ #: admin/class-settings.php:494
685
  msgid "Cape Verde"
686
  msgstr "Kaapverdië"
687
 
688
+ #: admin/class-settings.php:495
689
  msgid "Cayman Islands"
690
  msgstr "Kaaimaneilanden"
691
 
692
+ #: admin/class-settings.php:496
693
  msgid "Central African Republic"
694
  msgstr "Centraal-Afrikaanse Republiek"
695
 
696
+ #: admin/class-settings.php:497
697
  msgid "Chad"
698
  msgstr "Chad"
699
 
700
+ #: admin/class-settings.php:498
701
  msgid "Chile"
702
  msgstr "Chili"
703
 
704
+ #: admin/class-settings.php:499
705
  msgid "China"
706
  msgstr "China"
707
 
708
+ #: admin/class-settings.php:500
709
  msgid "Christmas Island"
710
  msgstr "Christmaseiland"
711
 
712
+ #: admin/class-settings.php:501
713
  msgid "Cocos Islands"
714
  msgstr "Cocoseilanden"
715
 
716
+ #: admin/class-settings.php:502
717
  msgid "Colombia"
718
  msgstr "Colombia"
719
 
720
+ #: admin/class-settings.php:503
721
  msgid "Comoros"
722
  msgstr "Comoren"
723
 
724
+ #: admin/class-settings.php:504
725
  msgid "Congo"
726
  msgstr "Congo"
727
 
728
+ #: admin/class-settings.php:505
729
  msgid "Costa Rica"
730
  msgstr "Costa Rica"
731
 
732
+ #: admin/class-settings.php:506
733
  msgid "Côte d'Ivoire"
734
  msgstr "Ivoorkust"
735
 
736
+ #: admin/class-settings.php:507
737
  msgid "Croatia"
738
  msgstr "Kroatië"
739
 
740
+ #: admin/class-settings.php:508
741
  msgid "Cuba"
742
  msgstr "Cuba"
743
 
744
+ #: admin/class-settings.php:509
745
  msgid "Czech Republic"
746
  msgstr "Tsjechië"
747
 
748
+ #: admin/class-settings.php:510
749
  msgid "Denmark"
750
  msgstr "Denemarken"
751
 
752
+ #: admin/class-settings.php:511
753
  msgid "Djibouti"
754
  msgstr "Djibouti"
755
 
756
+ #: admin/class-settings.php:512
757
  msgid "Democratic Republic of the Congo"
758
  msgstr "Democratische Republiek Congo"
759
 
760
+ #: admin/class-settings.php:513
761
  msgid "Dominica"
762
  msgstr "Dominica"
763
 
764
+ #: admin/class-settings.php:514
765
  msgid "Dominican Republic"
766
  msgstr "Dominicaanse Republiek"
767
 
768
+ #: admin/class-settings.php:515
769
  msgid "Ecuador"
770
  msgstr "Ecuador"
771
 
772
+ #: admin/class-settings.php:516
773
  msgid "Egypt"
774
  msgstr "Egypte"
775
 
776
+ #: admin/class-settings.php:517
777
  msgid "El Salvador"
778
  msgstr "El Salvador"
779
 
780
+ #: admin/class-settings.php:518
781
  msgid "Equatorial Guinea"
782
  msgstr "Equatoriaal-Guinea"
783
 
784
+ #: admin/class-settings.php:519
785
  msgid "Eritrea"
786
  msgstr "Eritrea"
787
 
788
+ #: admin/class-settings.php:520
789
  msgid "Estonia"
790
  msgstr "Estland"
791
 
792
+ #: admin/class-settings.php:521
793
  msgid "Ethiopia"
794
  msgstr "Ethiopië"
795
 
796
+ #: admin/class-settings.php:522
797
  msgid "Fiji"
798
  msgstr "Fiji"
799
 
800
+ #: admin/class-settings.php:523
801
  msgid "Finland"
802
  msgstr "Finland"
803
 
804
+ #: admin/class-settings.php:524
805
  msgid "France"
806
  msgstr "Frankrijk"
807
 
808
+ #: admin/class-settings.php:525
809
  msgid "French Guiana"
810
  msgstr "Frans Guyana"
811
 
812
+ #: admin/class-settings.php:526
813
  msgid "Gabon"
814
  msgstr "Gabon"
815
 
816
+ #: admin/class-settings.php:527
817
  msgid "Gambia"
818
  msgstr "Gambia"
819
 
820
+ #: admin/class-settings.php:528
821
  msgid "Germany"
822
  msgstr "Duitsland"
823
 
824
+ #: admin/class-settings.php:529
825
  msgid "Ghana"
826
  msgstr "Ghana"
827
 
828
+ #: admin/class-settings.php:530
829
  msgid "Greenland"
830
  msgstr "Groenland"
831
 
832
+ #: admin/class-settings.php:531
833
  msgid "Greece"
834
  msgstr "Griekenland"
835
 
836
+ #: admin/class-settings.php:532
837
  msgid "Grenada"
838
  msgstr "Grenada"
839
 
840
+ #: admin/class-settings.php:533
841
  msgid "Guam"
842
  msgstr "Guam"
843
 
844
+ #: admin/class-settings.php:534
845
  msgid "Guadeloupe"
846
  msgstr "Guadeloupe"
847
 
848
+ #: admin/class-settings.php:535
849
  msgid "Guatemala"
850
  msgstr "Guatemala"
851
 
852
+ #: admin/class-settings.php:536
853
  msgid "Guinea"
854
  msgstr "Guinee"
855
 
856
+ #: admin/class-settings.php:537
857
  msgid "Guinea-Bissau"
858
  msgstr "Guinee-Bissau"
859
 
860
+ #: admin/class-settings.php:538
861
  msgid "Haiti"
862
  msgstr "Haïti"
863
 
864
+ #: admin/class-settings.php:539
865
  msgid "Honduras"
866
  msgstr "Honduras"
867
 
868
+ #: admin/class-settings.php:540
869
  msgid "Hong Kong"
870
  msgstr "Hong Kong"
871
 
872
+ #: admin/class-settings.php:541
873
  msgid "Hungary"
874
  msgstr "Hongarije"
875
 
876
+ #: admin/class-settings.php:542
877
  msgid "Iceland"
878
  msgstr "IJsland"
879
 
880
+ #: admin/class-settings.php:543
881
  msgid "India"
882
  msgstr "India"
883
 
884
+ #: admin/class-settings.php:544
885
  msgid "Indonesia"
886
  msgstr "Indonesië"
887
 
888
+ #: admin/class-settings.php:545
889
  msgid "Iran"
890
  msgstr "Iran"
891
 
892
+ #: admin/class-settings.php:546
893
  msgid "Iraq"
894
  msgstr "Irak"
895
 
896
+ #: admin/class-settings.php:547
897
  msgid "Ireland"
898
  msgstr "Ierland"
899
 
900
+ #: admin/class-settings.php:548
901
  msgid "Israel"
902
  msgstr "Israël"
903
 
904
+ #: admin/class-settings.php:549
905
  msgid "Italy"
906
  msgstr "Italië"
907
 
908
+ #: admin/class-settings.php:550
909
  msgid "Jamaica"
910
  msgstr "Jamaica"
911
 
912
+ #: admin/class-settings.php:551
913
  msgid "Japan"
914
  msgstr "Japan"
915
 
916
+ #: admin/class-settings.php:552
917
  msgid "Jordan"
918
  msgstr "Jordanië"
919
 
920
+ #: admin/class-settings.php:553
921
  msgid "Kazakhstan"
922
  msgstr "Kazachstan"
923
 
924
+ #: admin/class-settings.php:554
925
  msgid "Kenya"
926
  msgstr "Kenia"
927
 
928
+ #: admin/class-settings.php:555
929
  msgid "Kuwait"
930
  msgstr "Koeweit"
931
 
932
+ #: admin/class-settings.php:556
933
  msgid "Kyrgyzstan"
934
  msgstr "Kirgizië"
935
 
936
+ #: admin/class-settings.php:557
937
  msgid "Laos"
938
  msgstr "Laos"
939
 
940
+ #: admin/class-settings.php:558
941
  msgid "Latvia"
942
  msgstr "Letland"
943
 
944
+ #: admin/class-settings.php:559
945
  msgid "Lebanon"
946
  msgstr "Libanon"
947
 
948
+ #: admin/class-settings.php:560
949
  msgid "Lesotho"
950
  msgstr "Lesotho"
951
 
952
+ #: admin/class-settings.php:561
953
  msgid "Liberia"
954
  msgstr "Liberia"
955
 
956
+ #: admin/class-settings.php:562
957
  msgid "Libya"
958
  msgstr "Libië"
959
 
960
+ #: admin/class-settings.php:563
961
  msgid "Liechtenstein"
962
  msgstr "Liechtenstein"
963
 
964
+ #: admin/class-settings.php:564
965
  msgid "Lithuania"
966
  msgstr "Litouwen"
967
 
968
+ #: admin/class-settings.php:565
969
  msgid "Luxembourg"
970
  msgstr "Luxemburg"
971
 
972
+ #: admin/class-settings.php:566
973
  msgid "Macau"
974
  msgstr "Macau"
975
 
976
+ #: admin/class-settings.php:567
977
  msgid "Macedonia"
978
  msgstr "Macedonië"
979
 
980
+ #: admin/class-settings.php:568
981
  msgid "Madagascar"
982
  msgstr "Madagascar"
983
 
984
+ #: admin/class-settings.php:569
985
  msgid "Malawi"
986
  msgstr "Malawi"
987
 
988
+ #: admin/class-settings.php:570
989
  msgid "Malaysia "
990
  msgstr "Maleisie"
991
 
992
+ #: admin/class-settings.php:571
993
  msgid "Mali"
994
  msgstr "Mali"
995
 
996
+ #: admin/class-settings.php:572
997
  msgid "Marshall Islands"
998
  msgstr "Marshalleilanden"
999
 
1000
+ #: admin/class-settings.php:573
1001
  msgid "Martinique"
1002
  msgstr "Martinique"
1003
 
1004
+ #: admin/class-settings.php:574
1005
  msgid "Mauritania"
1006
  msgstr "Mauritanië"
1007
 
1008
+ #: admin/class-settings.php:575
1009
  msgid "Mauritius"
1010
  msgstr "Mauritius"
1011
 
1012
+ #: admin/class-settings.php:576
1013
  msgid "Mexico"
1014
  msgstr "Mexico"
1015
 
1016
+ #: admin/class-settings.php:577
1017
  msgid "Micronesia"
1018
  msgstr "Micronesia"
1019
 
1020
+ #: admin/class-settings.php:578
1021
  msgid "Moldova"
1022
  msgstr "Moldavië"
1023
 
1024
+ #: admin/class-settings.php:579
1025
  msgid "Monaco"
1026
  msgstr "Monaco"
1027
 
1028
+ #: admin/class-settings.php:580
1029
  msgid "Mongolia"
1030
  msgstr "Mongolië"
1031
 
1032
+ #: admin/class-settings.php:581
1033
  msgid "Montenegro"
1034
  msgstr "Montenegro"
1035
 
1036
+ #: admin/class-settings.php:582
1037
  msgid "Montserrat"
1038
  msgstr "Montserrat "
1039
 
1040
+ #: admin/class-settings.php:583
1041
  msgid "Morocco"
1042
  msgstr "Marokko"
1043
 
1044
+ #: admin/class-settings.php:584
1045
  msgid "Mozambique"
1046
  msgstr "Mozambique"
1047
 
1048
+ #: admin/class-settings.php:585
1049
  msgid "Myanmar"
1050
  msgstr "Myanmar"
1051
 
1052
+ #: admin/class-settings.php:586
1053
  msgid "Namibia"
1054
  msgstr "Namibië"
1055
 
1056
+ #: admin/class-settings.php:587
1057
  msgid "Nauru"
1058
  msgstr "Nauru"
1059
 
1060
+ #: admin/class-settings.php:588
1061
  msgid "Nepal"
1062
  msgstr "Nepal"
1063
 
1064
+ #: admin/class-settings.php:589
1065
  msgid "Netherlands"
1066
  msgstr "Nederland"
1067
 
1068
+ #: admin/class-settings.php:590
1069
  msgid "Netherlands Antilles"
1070
  msgstr "Nederlandse Antillen"
1071
 
1072
+ #: admin/class-settings.php:591
1073
  msgid "New Zealand"
1074
  msgstr "Nieuw Zeeland"
1075
 
1076
+ #: admin/class-settings.php:592
1077
  msgid "Nicaragua"
1078
  msgstr "Nicaragua"
1079
 
1080
+ #: admin/class-settings.php:593
1081
  msgid "Niger"
1082
  msgstr "Niger"
1083
 
1084
+ #: admin/class-settings.php:594
1085
  msgid "Nigeria"
1086
  msgstr "Nigeria"
1087
 
1088
+ #: admin/class-settings.php:595
1089
  msgid "Niue"
1090
  msgstr "Niue"
1091
 
1092
+ #: admin/class-settings.php:596
1093
  msgid "Northern Mariana Islands"
1094
  msgstr "Noordelijke Marianen"
1095
 
1096
+ #: admin/class-settings.php:597
1097
  msgid "Norway"
1098
  msgstr "Noorwegen"
1099
 
1100
+ #: admin/class-settings.php:598
1101
  msgid "Oman"
1102
  msgstr "Oman"
1103
 
1104
+ #: admin/class-settings.php:599
1105
  msgid "Pakistan"
1106
  msgstr "Pakistan"
1107
 
1108
+ #: admin/class-settings.php:600
1109
  msgid "Panama"
1110
  msgstr "Panama"
1111
 
1112
+ #: admin/class-settings.php:601
1113
  msgid "Papua New Guinea"
1114
  msgstr "Papoea-Nieuw-Guinea"
1115
 
1116
+ #: admin/class-settings.php:602
1117
  msgid "Paraguay"
1118
  msgstr "Paraguay"
1119
 
1120
+ #: admin/class-settings.php:603
1121
  msgid "Peru"
1122
  msgstr "Peru"
1123
 
1124
+ #: admin/class-settings.php:604
1125
  msgid "Philippines"
1126
  msgstr "Filipijnen"
1127
 
1128
+ #: admin/class-settings.php:605
1129
  msgid "Pitcairn Islands"
1130
  msgstr "Pitcairneilanden"
1131
 
1132
+ #: admin/class-settings.php:606
1133
  msgid "Poland"
1134
  msgstr "Polen"
1135
 
1136
+ #: admin/class-settings.php:607
1137
  msgid "Portugal"
1138
  msgstr "Portugal"
1139
 
1140
+ #: admin/class-settings.php:608
1141
  msgid "Qatar"
1142
  msgstr "Qatar"
1143
 
1144
+ #: admin/class-settings.php:609
1145
  msgid "Reunion"
1146
  msgstr "Réunion"
1147
 
1148
+ #: admin/class-settings.php:610
1149
  msgid "Romania"
1150
  msgstr "Roemenië"
1151
 
1152
+ #: admin/class-settings.php:611
1153
  msgid "Russia"
1154
  msgstr "Rusland"
1155
 
1156
+ #: admin/class-settings.php:612
1157
  msgid "Rwanda"
1158
  msgstr "Rwanda"
1159
 
1160
+ #: admin/class-settings.php:613
1161
  msgid "Saint Helena"
1162
  msgstr "Sint-Helena"
1163
 
1164
+ #: admin/class-settings.php:614
1165
  msgid "Saint Kitts and Nevis"
1166
  msgstr "Saint Kitts en Nevis"
1167
 
1168
+ #: admin/class-settings.php:615
1169
  msgid "Saint Vincent and the Grenadines"
1170
  msgstr "Saint Vincent en de Grenadines"
1171
 
1172
+ #: admin/class-settings.php:616
1173
  msgid "Saint Lucia"
1174
  msgstr "Saint Lucia"
1175
 
1176
+ #: admin/class-settings.php:617
1177
  msgid "Samoa"
1178
  msgstr "Samoa"
1179
 
1180
+ #: admin/class-settings.php:618
1181
  msgid "San Marino"
1182
  msgstr "San Marino"
1183
 
1184
+ #: admin/class-settings.php:619
1185
  msgid "São Tomé and Príncipe"
1186
  msgstr "Sao Tomé en Principe"
1187
 
1188
+ #: admin/class-settings.php:620
1189
  msgid "Saudi Arabia"
1190
  msgstr "Saoedi-Arabië"
1191
 
1192
+ #: admin/class-settings.php:621
1193
  msgid "Senegal"
1194
  msgstr "Senegal"
1195
 
1196
+ #: admin/class-settings.php:622
1197
  msgid "Serbia"
1198
  msgstr "Servië"
1199
 
1200
+ #: admin/class-settings.php:623
1201
  msgid "Seychelles"
1202
  msgstr "Seychellen"
1203
 
1204
+ #: admin/class-settings.php:624
1205
  msgid "Sierra Leone"
1206
  msgstr "Sierra Leone"
1207
 
1208
+ #: admin/class-settings.php:625
1209
  msgid "Singapore"
1210
  msgstr "Singapore"
1211
 
1212
+ #: admin/class-settings.php:626
1213
  msgid "Slovakia"
1214
  msgstr "Slowakije"
1215
 
1216
+ #: admin/class-settings.php:627
1217
  msgid "Solomon Islands"
1218
  msgstr "Salomonseilanden"
1219
 
1220
+ #: admin/class-settings.php:628
1221
  msgid "Somalia"
1222
  msgstr "Somalie"
1223
 
1224
+ #: admin/class-settings.php:629
1225
  msgid "South Africa"
1226
  msgstr "Zuid Afrika"
1227
 
1228
+ #: admin/class-settings.php:630
1229
  msgid "South Korea"
1230
  msgstr "Zuid Korea"
1231
 
1232
+ #: admin/class-settings.php:631
1233
  msgid "Spain"
1234
  msgstr "Spanje"
1235
 
1236
+ #: admin/class-settings.php:632
1237
  msgid "Sri Lanka"
1238
  msgstr "Sri Lanka"
1239
 
1240
+ #: admin/class-settings.php:633
1241
  msgid "Sudan"
1242
  msgstr "Sudan"
1243
 
1244
+ #: admin/class-settings.php:634
1245
  msgid "Swaziland"
1246
  msgstr "Swaziland "
1247
 
1248
+ #: admin/class-settings.php:635
1249
  msgid "Sweden"
1250
  msgstr "Zweden"
1251
 
1252
+ #: admin/class-settings.php:636
1253
  msgid "Switzerland"
1254
  msgstr "Zwitserland"
1255
 
1256
+ #: admin/class-settings.php:637
1257
  msgid "Syria"
1258
  msgstr "Syrië"
1259
 
1260
+ #: admin/class-settings.php:638
1261
  msgid "Taiwan"
1262
  msgstr "Taiwan"
1263
 
1264
+ #: admin/class-settings.php:639
1265
  msgid "Tajikistan"
1266
  msgstr "Tajikistan"
1267
 
1268
+ #: admin/class-settings.php:640
1269
  msgid "Tanzania"
1270
  msgstr "Tanzania"
1271
 
1272
+ #: admin/class-settings.php:641
1273
  msgid "Thailand"
1274
  msgstr "Thailand"
1275
 
1276
+ #: admin/class-settings.php:642
1277
  msgid "Timor-Leste"
1278
  msgstr "Oost-Timor"
1279
 
1280
+ #: admin/class-settings.php:643
1281
  msgid "Tokelau"
1282
  msgstr "Tokelau"
1283
 
1284
+ #: admin/class-settings.php:644
1285
  msgid "Togo"
1286
  msgstr "Togo"
1287
 
1288
+ #: admin/class-settings.php:645
1289
  msgid "Tonga"
1290
  msgstr "Tonga"
1291
 
1292
+ #: admin/class-settings.php:646
1293
  msgid "Trinidad and Tobago"
1294
  msgstr "Trinidad en Tobago"
1295
 
1296
+ #: admin/class-settings.php:647
1297
  msgid "Tunisia"
1298
  msgstr "Tunesië"
1299
 
1300
+ #: admin/class-settings.php:648
1301
  msgid "Turkey"
1302
  msgstr "Turkije"
1303
 
1304
+ #: admin/class-settings.php:649
1305
  msgid "Turkmenistan"
1306
  msgstr "Turkmenistan"
1307
 
1308
+ #: admin/class-settings.php:650
1309
  msgid "Tuvalu"
1310
  msgstr "Tuvalu"
1311
 
1312
+ #: admin/class-settings.php:651
1313
  msgid "Uganda"
1314
  msgstr "Uganda"
1315
 
1316
+ #: admin/class-settings.php:652
1317
  msgid "Ukraine"
1318
  msgstr "Oekraïne"
1319
 
1320
+ #: admin/class-settings.php:653
1321
  msgid "United Arab Emirates"
1322
  msgstr "Verenigde Arabische Emiraten"
1323
 
1324
+ #: admin/class-settings.php:654
1325
  msgid "United Kingdom"
1326
  msgstr "Verenigd Koninkrijk"
1327
 
1328
+ #: admin/class-settings.php:655
1329
  msgid "United States"
1330
  msgstr "Verenigde Staten"
1331
 
1332
+ #: admin/class-settings.php:656
1333
  msgid "Uruguay"
1334
  msgstr "Uruguay"
1335
 
1336
+ #: admin/class-settings.php:657
1337
  msgid "Uzbekistan"
1338
  msgstr "Uzbekistan"
1339
 
1340
+ #: admin/class-settings.php:658
1341
  msgid "Wallis Futuna"
1342
  msgstr "Wallis en Futuna"
1343
 
1344
+ #: admin/class-settings.php:659
1345
  msgid "Venezuela"
1346
  msgstr "Venezuela"
1347
 
1348
+ #: admin/class-settings.php:660
1349
  msgid "Vietnam"
1350
  msgstr "Vietnam"
1351
 
1352
+ #: admin/class-settings.php:661
1353
  msgid "Yemen"
1354
  msgstr "Yemen"
1355
 
1356
+ #: admin/class-settings.php:662
1357
  msgid "Zambia"
1358
  msgstr "Zambia"
1359
 
1360
+ #: admin/class-settings.php:663
1361
  msgid "Zimbabwe"
1362
  msgstr "Zimbabwe"
1363
 
1364
+ #: admin/class-settings.php:706
1365
  msgid "World view"
1366
  msgstr "wereldkaart"
1367
 
1368
+ #: admin/class-settings.php:709 admin/class-settings.php:822
1369
+ #: inc/wpsl-functions.php:181
1370
  msgid "Default"
1371
  msgstr "standaard"
1372
 
1373
+ #: admin/class-settings.php:712 inc/wpsl-functions.php:254
1374
  msgid "Roadmap"
1375
  msgstr "wegenkaart"
1376
 
1377
+ #: admin/class-settings.php:852
1378
  msgid "Start location marker"
1379
  msgstr "Start locatie marker"
1380
 
1381
+ #: admin/class-settings.php:854
1382
  msgid "Store location marker"
1383
  msgstr "Winkel locatie marker"
1384
 
1385
+ #: admin/class-settings.php:935
1386
  msgid "Textarea"
1387
  msgstr "tekstvlak"
1388
 
1389
+ #: admin/class-settings.php:936
1390
  msgid "Dropdowns (recommended)"
1391
  msgstr "dropdown (aangeraden)"
1392
 
1393
+ #: admin/class-settings.php:944
1394
  msgid "Bounces up and down"
1395
  msgstr "beweegt op en neer"
1396
 
1397
+ #: admin/class-settings.php:945
1398
  msgid "Will open the info window"
1399
  msgstr "opent de info window"
1400
 
1401
+ #: admin/class-settings.php:946
1402
  msgid "Does not respond"
1403
  msgstr "reageert niet"
1404
 
1405
+ #: admin/class-settings.php:954
1406
  msgid "In the store listings"
1407
  msgstr "In de locatie lijst"
1408
 
1409
+ #: admin/class-settings.php:955
1410
  msgid "In the info window on the map"
1411
  msgstr "In de info window op de kaart"
1412
 
1413
+ #: admin/class-settings.php:1011
1414
  msgid "12 Hours"
1415
  msgstr "12 uur"
1416
 
1417
+ #: admin/class-settings.php:1012
1418
  msgid "24 Hours"
1419
  msgstr "24 uur"
1420
 
1422
  msgid "Store Locator Manager"
1423
  msgstr "Store Locator Beheerder"
1424
 
1425
+ #: admin/templates/map-settings.php:16
1426
  msgid "Google Maps API"
1427
  msgstr "Google Maps API"
1428
 
1429
+ #: admin/templates/map-settings.php:19
1430
  msgid "API key"
1431
  msgstr "API sleutel"
1432
 
1433
+ #: admin/templates/map-settings.php:19
1434
  #, php-format
1435
  msgid ""
1436
  "A valid %sAPI key%s allows you to monitor the API usage and is required if "
1439
  "Een geldige %sAPI sleutel%s maakt het mogelijk om het gebruik van de API in "
1440
  "de gaten te houden en is verplicht als je de API limiet wil verhogen."
1441
 
1442
+ #: admin/templates/map-settings.php:20
1443
  msgid "Optional"
1444
  msgstr "Optioneel"
1445
 
1446
+ #: admin/templates/map-settings.php:23
1447
  msgid "Map language"
1448
  msgstr "Kaart taal"
1449
 
1450
+ #: admin/templates/map-settings.php:23
1451
  msgid "If no map language is selected the browser's prefered language is used."
1452
  msgstr ""
1453
  "Als er geen kaart taal is geselecteerd, dan word de standaard browser taal "
1454
  "gebruikt."
1455
 
1456
+ #: admin/templates/map-settings.php:29
1457
  msgid "Map region"
1458
  msgstr "Kaart regio"
1459
 
1460
+ #: admin/templates/map-settings.php:29
1461
  #, php-format
1462
  msgid ""
1463
  "This will bias the geocoding results towards the selected region. %s If no "
1467
  "voorkeur krijgen over resultaten uit andere regio's . %s Als er geen regio "
1468
  "is geselecteerd dan gaat de voorkeur uit naar de Verenigde Staten."
1469
 
1470
+ #: admin/templates/map-settings.php:35 admin/templates/map-settings.php:77
1471
+ #: admin/templates/map-settings.php:154 admin/templates/map-settings.php:247
1472
+ #: admin/templates/map-settings.php:273 admin/templates/map-settings.php:323
1473
+ #: admin/templates/map-settings.php:349 admin/templates/map-settings.php:457
1474
+ #: admin/templates/map-settings.php:478
1475
  msgid "Save Changes"
1476
  msgstr "Wijzigingen opslaan"
1477
 
1478
+ #: admin/templates/map-settings.php:45 admin/templates/map-settings.php:385
1479
+ #: admin/templates/map-settings.php:386 frontend/templates/default.php:43
1480
+ #: frontend/templates/store-listings-below.php:43 inc/wpsl-functions.php:99
1481
  msgid "Search"
1482
  msgstr "Zoek"
1483
 
1484
+ #: admin/templates/map-settings.php:48
1485
  msgid "Show the max results dropdown?"
1486
  msgstr "Toon de max resultaten dropdown?"
1487
 
1488
+ #: admin/templates/map-settings.php:52
1489
  msgid "Show the search radius dropdown?"
1490
  msgstr "Toon de zoek radius dropdown?"
1491
 
1492
+ #: admin/templates/map-settings.php:56
1493
  msgid "Show the category dropdown?"
1494
  msgstr "Toon de categorie dropdown?"
1495
 
1496
+ #: admin/templates/map-settings.php:60
1497
  msgid "Distance unit"
1498
  msgstr "Afstands eenheid"
1499
 
1500
+ #: admin/templates/map-settings.php:63
1501
  msgid "km"
1502
  msgstr "km"
1503
 
1504
+ #: admin/templates/map-settings.php:65
1505
  msgid "mi"
1506
  msgstr "mi"
1507
 
1508
+ #: admin/templates/map-settings.php:69
1509
  msgid "Max search results"
1510
  msgstr "Max zoek resultaten"
1511
 
1512
+ #: admin/templates/map-settings.php:69 admin/templates/map-settings.php:73
1513
  msgid "The default value is set between the [ ]."
1514
  msgstr "* De standaard waarde staat tussen de []."
1515
 
1516
+ #: admin/templates/map-settings.php:73
1517
  msgid "Search radius options"
1518
  msgstr "Zoek radius opties"
1519
 
1520
+ #: admin/templates/map-settings.php:87
1521
  msgid "Map"
1522
  msgstr "Kaart"
1523
 
1524
+ #: admin/templates/map-settings.php:90
1525
  msgid "Attempt to auto-locate the user"
1526
  msgstr "Probeer de locatie van de gebruiker automatische te achterhalen"
1527
 
1528
+ #: admin/templates/map-settings.php:94
1529
  msgid "Load locations on page load"
1530
  msgstr "Toon alle locaties op de kaart zodra de pagina geladen is"
1531
 
1532
+ #: admin/templates/map-settings.php:98
1533
  msgid "Number of locations to show"
1534
  msgstr "Aantal getoonde locaties"
1535
 
1536
+ #: admin/templates/map-settings.php:98
1537
  #, php-format
1538
  msgid ""
1539
  "Although the location data is cached after the first load, a lower number "
1546
  "Als het veld leeg blijft of er wordt 0 ingevuld, dan worden alle locaties "
1547
  "geladen."
1548
 
1549
+ #: admin/templates/map-settings.php:102
1550
  msgid "Start point"
1551
  msgstr "Start locatie"
1552
 
1553
+ #: admin/templates/map-settings.php:102
1554
  #, php-format
1555
  msgid ""
1556
  "%sRequired field.%s %s If auto-locating the user is disabled or fails, the "
1561
  "locatie is uitgeschakeld of mislukt, dan wordt het middelpunt van de "
1562
  "opgegeven locatie als begin punt gebruikt."
1563
 
1564
+ #: admin/templates/map-settings.php:107
1565
  msgid "Initial zoom level"
1566
  msgstr "Start zoom niveau"
1567
 
1568
+ #: admin/templates/map-settings.php:111
1569
  msgid "Max auto zoom level"
1570
  msgstr "Max zoom niveau"
1571
 
1572
+ #: admin/templates/map-settings.php:111
1573
  #, php-format
1574
  msgid ""
1575
  "This value sets the zoom level for the \"Zoom here\" link in the info "
1581
  "limiteren als de viewport van de kaart verandert, wanneer geprobeerd wordt "
1582
  "om alle markers op het scherm te laten passen."
1583
 
1584
+ #: admin/templates/map-settings.php:115
1585
  msgid "Show the street view controls?"
1586
  msgstr "Toon de street view controls?"
1587
 
 
 
 
 
1588
  #: admin/templates/map-settings.php:119
1589
  msgid "Show the map type control?"
1590
  msgstr "Toon de kaart type controls?"
1606
  msgstr "rechts"
1607
 
1608
  #: admin/templates/map-settings.php:136
 
 
 
 
 
 
 
 
 
 
 
 
1609
  msgid "Map type"
1610
  msgstr "Kaart soort"
1611
 
1612
+ #: admin/templates/map-settings.php:140
1613
  msgid "Map style"
1614
  msgstr "Kaart stijl"
1615
 
1616
+ #: admin/templates/map-settings.php:140
1617
  msgid ""
1618
  "Custom map styles only work if the map type is set to \"Roadmap\" or "
1619
  "\"Terrain\"."
1621
  "Custom map stijlen werken alleen maar als de kaart soort op \"Wegenkaart\" "
1622
  "of \"Terrein\" is gezet."
1623
 
1624
+ #: admin/templates/map-settings.php:143
1625
  #, php-format
1626
  msgid ""
1627
  "You can use existing map styles from %sSnazzy Maps%s or %sMap Stylr%s and "
1632
  "en in het onderstaande tekstvlak plaatsen. Of je kan de map stijl genereren "
1633
  "via de %sMap Style Editor%s of de %sStyled Maps Wizard%s."
1634
 
1635
+ #: admin/templates/map-settings.php:144
1636
  #, php-format
1637
  msgid ""
1638
  "If you like to write the style code yourself, then you can find the "
1641
  "Als je zelf de stijl code wil schrijven dan kun je de documentatie %shier%s "
1642
  "vinden."
1643
 
1644
+ #: admin/templates/map-settings.php:146
1645
  msgid "Preview Map Style"
1646
  msgstr "Map stijl voorbeeld"
1647
 
1648
+ #: admin/templates/map-settings.php:150
1649
  msgid "Show credits?"
1650
  msgstr "Toon credits?"
1651
 
1652
+ #: admin/templates/map-settings.php:150
1653
  msgid ""
1654
  "This will place a \"Search provided by WP Store Locator\" backlink below the "
1655
  "map."
1656
  msgstr ""
1657
  "Dit plaatst een \"Ondersteund door WP Store Locator\" link onder de kaart."
1658
 
1659
+ #: admin/templates/map-settings.php:164
1660
  msgid "User Experience"
1661
  msgstr "Gebruikers ervaring"
1662
 
1663
+ #: admin/templates/map-settings.php:167
1664
  msgid "Store Locator height"
1665
  msgstr "Store Locator hoogte"
1666
 
1667
+ #: admin/templates/map-settings.php:171
1668
  msgid "Max width for the info window content"
1669
  msgstr "Max breedte voor de info window inhoud"
1670
 
1671
+ #: admin/templates/map-settings.php:175
1672
  msgid "Search field width"
1673
  msgstr "Zoekveld breedte"
1674
 
1675
+ #: admin/templates/map-settings.php:179
1676
  msgid "Search and radius label width"
1677
  msgstr "Zoek en radius label breedte"
1678
 
1679
+ #: admin/templates/map-settings.php:183
1680
  msgid "Store Locator template"
1681
  msgstr "Store locator template"
1682
 
1683
+ #: admin/templates/map-settings.php:183
1684
  #, php-format
1685
  msgid ""
1686
  "The selected template is used with the [wpsl] shortcode. %s You can add a "
1689
  "De geselecteerde template wordt gebruikt bij de [wpsl] shortcode. %s Je kunt "
1690
  "een custom template gebruiken met behulp van de %swpsl_templates%s filter."
1691
 
1692
+ #: admin/templates/map-settings.php:187
1693
  msgid "Hide the scrollbar?"
1694
  msgstr "Verberg de scrollbar?"
1695
 
1696
+ #: admin/templates/map-settings.php:191
1697
  msgid "Open links in a new window?"
1698
  msgstr "Open links in een nieuw venster?"
1699
 
1700
+ #: admin/templates/map-settings.php:195
1701
  msgid "Show a reset map button?"
1702
  msgstr "Toon een knop om de kaart te resetten?"
1703
 
1704
+ #: admin/templates/map-settings.php:199
1705
  msgid ""
1706
  "When a user clicks on \"Directions\", open a new window, and show the route "
1707
  "on google.com/maps ?"
1709
  "Zodra een gebruiker op \"Route\" klikt, open een nieuwe venster en toon de "
1710
  "route op google.com/maps?"
1711
 
1712
+ #: admin/templates/map-settings.php:203
1713
  msgid "Show a \"More info\" link in the store listings?"
1714
  msgstr "Toon een \"Meer info\" link in de locatie lijst?"
1715
 
1716
+ #: admin/templates/map-settings.php:203
1717
  #, php-format
1718
  msgid ""
1719
  "This places a \"More Info\" link below the address and will show the phone, "
1726
  "omschrijving. %s Als je bijvoorbeeld de contact gegevens altijd wil tonen, "
1727
  "volg dan de instructies op %sdeze%s pagina."
1728
 
1729
+ #: admin/templates/map-settings.php:207
1730
  msgid "Where do you want to show the \"More info\" details?"
1731
  msgstr "Waar wil je de \"Meer info\" details tonen?"
1732
 
1733
+ #: admin/templates/map-settings.php:211
1734
  msgid "Make the store name clickable if a store URL exists?"
1735
  msgstr "Als een winkel url bestaat, maak de winkel naam dan klikbaar?"
1736
 
1737
+ #: admin/templates/map-settings.php:211
1738
  #, php-format
1739
  msgid ""
1740
  "If %spermalinks%s are enabled, the store name will always link to the store "
1743
  "Als de %spermalinks%s zijn ingeschakeld dan zal de winkel naam altijd linken "
1744
  "naar de winkel pagina."
1745
 
1746
+ #: admin/templates/map-settings.php:215
1747
  msgid "Make the phone number clickable on mobile devices?"
1748
  msgstr "Maak het telefoonnummer klikbaar op mobiele apparaten?"
1749
 
1750
+ #: admin/templates/map-settings.php:219
1751
  msgid ""
1752
  "If street view is available for the current location, then show a \"Street "
1753
  "view\" link in the info window?"
1755
  "Als voor de huidge locatie street view beschikbaar is, toon dan een \"Street "
1756
  "view\" link om vanuit de info window?"
1757
 
1758
+ #: admin/templates/map-settings.php:219
1759
  #, php-format
1760
  msgid ""
1761
  "Enabling this option can sometimes result in a small delay in the opening of "
1767
  "er een verzoek naar de Google Maps API word gemaakt om te controleren ofdat "
1768
  "street view wel beschikbaar is voor de huidige locatie."
1769
 
1770
+ #: admin/templates/map-settings.php:223
1771
  msgid "Show a \"Zoom here\" link in the info window?"
1772
  msgstr "Toon een \"zoom hier\" link in de info window?"
1773
 
1774
+ #: admin/templates/map-settings.php:223
1775
  #, php-format
1776
  msgid ""
1777
  "Clicking this link will make the map zoom in to the %s max auto zoom level "
1780
  "Als er op deze link geklikt word dan zoomt de kaart in totdat de %s max auto "
1781
  "zoom level %s bereikt is."
1782
 
1783
+ #: admin/templates/map-settings.php:227
1784
  msgid "On page load move the mouse cursor to the search field?"
1785
  msgstr ""
1786
  "Als de pagina wordt geladen, verplaats de muiscursor dan naar het invulveld?"
1787
 
1788
+ #: admin/templates/map-settings.php:227
1789
  #, php-format
1790
  msgid ""
1791
  "If the store locator is not placed at the top of the page, enabling this "
1796
  "instelling ervoor zorgen dat de pagina naar benenden schuift tijden het "
1797
  "laden. %s %sDeze optie staat uit op mobiele apparaten.%s"
1798
 
1799
+ #: admin/templates/map-settings.php:231
1800
  msgid "Use the default style for the info window?"
1801
  msgstr "Gebruik de standaard style voor de info window?"
1802
 
1803
+ #: admin/templates/map-settings.php:231
1804
  #, php-format
1805
  msgid ""
1806
  "If the default style is disabled the %sInfoBox%s library will be used "
1811
  "gebruikt. %s Dit script maakt het mogelijk om makkelijk het ontwerp te "
1812
  "wijzigen met behulp van de .wpsl-infobox css class."
1813
 
1814
+ #: admin/templates/map-settings.php:235
1815
  msgid "Hide the distance in the search results?"
1816
  msgstr "Verberg de afstand in de zoek resultaten?"
1817
 
1818
+ #: admin/templates/map-settings.php:239
1819
  msgid "If a user hovers over the search results the store marker"
1820
  msgstr ""
1821
  "Als een gebruiker over de zoekresultaten beweegt met zijn muis de "
1822
  "bijbehorende marker"
1823
 
1824
+ #: admin/templates/map-settings.php:239
1825
  #, php-format
1826
  msgid ""
1827
  "If marker clusters are enabled this option will not work as expected as long "
1836
  "de marker cluster wordt omgezet naar losse markers. %s De info window wordt "
1837
  "wel geopend, maar het is niet duidelijk bij welke marker het hoort."
1838
 
1839
+ #: admin/templates/map-settings.php:243
1840
  msgid "Address format"
1841
  msgstr "Adres formaat"
1842
 
1843
+ #: admin/templates/map-settings.php:243
1844
  #, php-format
1845
  msgid ""
1846
  "You can add custom address formats with the %swpsl_address_formats%s filter."
1848
  "Je kunt een nieuwe adres formaat toevoegen met de %swpsl_address_formats%s "
1849
  "filter."
1850
 
1851
+ #: admin/templates/map-settings.php:257
1852
  msgid "Markers"
1853
  msgstr "Markers"
1854
 
1855
+ #: admin/templates/map-settings.php:261
1856
  msgid "Enable marker clusters?"
1857
  msgstr "Activeer marker clusters?"
1858
 
1859
+ #: admin/templates/map-settings.php:261
1860
  msgid "Recommended for maps with a large amount of markers."
1861
  msgstr "Aan te raden voor kaarten met grote hoeveelheden markers."
1862
 
1863
+ #: admin/templates/map-settings.php:265
1864
  msgid "Max zoom level"
1865
  msgstr "Max zoom niveau"
1866
 
1867
+ #: admin/templates/map-settings.php:265
1868
  msgid ""
1869
  "If this zoom level is reached or exceeded, then all markers are moved out of "
1870
  "the marker cluster and shown as individual markers."
1872
  "Als dit zoom niveau bereikt is of gepasseerd, dan worden alle markers uit de "
1873
  "marker cluster gehaald en als losse markers getoond."
1874
 
1875
+ #: admin/templates/map-settings.php:269
1876
  msgid "Cluster size"
1877
  msgstr "Cluster grote"
1878
 
1879
+ #: admin/templates/map-settings.php:269
1880
  #, php-format
1881
  msgid ""
1882
  "The grid size of a cluster in pixels. %s A larger number will result in a "
1886
  "voor dat er minder clusters zichtbaar zijn en het algoritme dus ook sneller "
1887
  "klaar is."
1888
 
1889
+ #: admin/templates/map-settings.php:283
1890
  msgid "Store Editor"
1891
  msgstr "Winkel editor"
1892
 
1893
+ #: admin/templates/map-settings.php:286
1894
  msgid "Default country"
1895
  msgstr "Standaard land"
1896
 
1897
+ #: admin/templates/map-settings.php:290
1898
  msgid "Map type for the location preview"
1899
  msgstr "Kaart type voor het lokatie voorbeeld"
1900
 
1901
+ #: admin/templates/map-settings.php:294
1902
  msgid "Hide the opening hours?"
1903
  msgstr "Verberg de openingstijden?"
1904
 
1905
+ #: admin/templates/map-settings.php:300
1906
  msgid "Opening hours input type"
1907
  msgstr "Openingstijden formaat"
1908
 
1909
+ #: admin/templates/map-settings.php:304
1910
  #, php-format
1911
  msgid ""
1912
  "Opening hours created in version 1.x %sare not%s automatically converted to "
1915
  "De openingstijden die zijn aangemaakt in versie 1.x %sworden niet%s "
1916
  "automatische omgezet naar het dropdown formaat."
1917
 
1918
+ #: admin/templates/map-settings.php:307 admin/templates/map-settings.php:316
1919
  msgid "The default opening hours"
1920
  msgstr "De standaard openingstijden"
1921
 
1922
+ #: admin/templates/map-settings.php:313
1923
  msgid "Opening hours format"
1924
  msgstr "Openingstijden formaat"
1925
 
1926
+ #: admin/templates/map-settings.php:320
1927
  msgid ""
1928
  "The default country and opening hours are only used when a new store is "
1929
  "created. So changing the default values will have no effect on existing "
1933
  "gebruikt als een nieuwe locatie wordt aangemaakt. Het wijzigen van deze "
1934
  "waardes heeft dus geen enkele invloed op de bestaande locaties."
1935
 
1936
+ #: admin/templates/map-settings.php:333
1937
  msgid "Permalink"
1938
  msgstr "Permalink"
1939
 
1940
+ #: admin/templates/map-settings.php:336
1941
  msgid "Enable permalink?"
1942
  msgstr "Activeer permalink?"
1943
 
1944
+ #: admin/templates/map-settings.php:340
1945
  msgid "Store slug"
1946
  msgstr "Winkel slug"
1947
 
1948
+ #: admin/templates/map-settings.php:344
1949
  msgid "Category slug"
1950
  msgstr "Categorie slug"
1951
 
1952
+ #: admin/templates/map-settings.php:347
1953
  #, php-format
1954
  msgid "The permalink slugs %smust be unique%s on your site."
1955
  msgstr "De permalink slug %smoet uniek%s zijn op je site."
1956
 
1957
+ #: admin/templates/map-settings.php:359
1958
  msgid "Labels"
1959
  msgstr "Labels"
1960
 
1961
+ #: admin/templates/map-settings.php:368
1962
+ #, php-format
1963
+ msgid "%sWarning!%s %sWPML%s, or a plugin using the WPML API is active."
1964
+ msgstr ""
1965
+ "%sWaarschuwing!%s %sWPML%s, of een plugin die de WPML API gebruikt is "
1966
+ "actief."
1967
+
1968
+ #: admin/templates/map-settings.php:369
1969
+ msgid ""
1970
+ "Please use the \"String Translations\" section in the used multilingual "
1971
+ "plugin to change the labels. Changing them here will have no effect as long "
1972
+ "as the multilingual plugin remains active."
1973
+ msgstr ""
1974
+ "Gebruik het \"String Translations\" gedeelte in de vertaal plugin om de "
1975
+ "labels te wijzigen. Wijzigingen die in dit gedeelte worden aangebracht "
1976
+ "hebben geen effect zolang de vertaal plugin actief is."
1977
+
1978
+ #: admin/templates/map-settings.php:373 admin/templates/map-settings.php:374
1979
  #: frontend/templates/default.php:11
1980
+ #: frontend/templates/store-listings-below.php:11 inc/wpsl-functions.php:98
1981
  msgid "Your location"
1982
  msgstr "Uw locatie"
1983
 
1984
+ #: admin/templates/map-settings.php:377 admin/templates/map-settings.php:378
1985
  #: frontend/templates/default.php:20
1986
+ #: frontend/templates/store-listings-below.php:20 inc/wpsl-functions.php:101
1987
  msgid "Search radius"
1988
  msgstr "Zoek radius"
1989
 
1990
+ #: admin/templates/map-settings.php:381 admin/templates/map-settings.php:382
1991
+ #: frontend/class-frontend.php:1332 inc/wpsl-functions.php:102
1992
  msgid "No results found"
1993
  msgstr "Geen resultaten gevonden"
1994
 
1995
+ #: admin/templates/map-settings.php:389
1996
  msgid "Searching (preloader text)"
1997
  msgstr "Aan het zoeken (preloader tekst)"
1998
 
1999
+ #: admin/templates/map-settings.php:390 frontend/class-frontend.php:1331
2000
+ #: inc/wpsl-functions.php:100
2001
  msgid "Searching..."
2002
  msgstr "Zoeken..."
2003
 
2004
+ #: admin/templates/map-settings.php:393 admin/templates/map-settings.php:394
2005
  #: frontend/templates/default.php:29
2006
+ #: frontend/templates/store-listings-below.php:29 inc/wpsl-functions.php:103
2007
  msgid "Results"
2008
  msgstr "Resultaten"
2009
 
2010
+ #: admin/templates/map-settings.php:397 admin/upgrade.php:218
2011
+ #: inc/wpsl-functions.php:117
2012
  msgid "Category filter"
2013
  msgstr "Categorie filter"
2014
 
2015
+ #: admin/templates/map-settings.php:398 frontend/class-frontend.php:1107
2016
  msgid "Category"
2017
  msgstr "Categorie"
2018
 
2019
+ #: admin/templates/map-settings.php:401 admin/templates/map-settings.php:402
2020
+ #: admin/upgrade.php:66 frontend/class-frontend.php:1333
2021
  #: frontend/underscore-functions.php:114 frontend/underscore-functions.php:141
2022
+ #: inc/wpsl-functions.php:104
2023
  msgid "More info"
2024
  msgstr "Meer info"
2025
 
2026
+ #: admin/templates/map-settings.php:405 admin/templates/map-settings.php:406
2027
+ #: frontend/class-frontend.php:673 frontend/underscore-functions.php:29
2028
+ #: frontend/underscore-functions.php:121 inc/wpsl-functions.php:112
2029
  msgid "Phone"
2030
  msgstr "Telefoon"
2031
 
2032
+ #: admin/templates/map-settings.php:425 admin/templates/map-settings.php:426
2033
+ #: frontend/class-frontend.php:1338 inc/wpsl-functions.php:97
2034
  msgid "Start location"
2035
  msgstr "Start locatie"
2036
 
2037
+ #: admin/templates/map-settings.php:429
2038
  msgid "Get directions"
2039
  msgstr "Toon routebeschrijving"
2040
 
2041
+ #: admin/templates/map-settings.php:430 frontend/class-frontend.php:1336
2042
+ #: inc/wpsl-functions.php:105
2043
  msgid "Directions"
2044
  msgstr "Routebeschrijving"
2045
 
2046
+ #: admin/templates/map-settings.php:433
2047
  msgid "No directions found"
2048
  msgstr "Geen routebeschrijving beschikbaar"
2049
 
2050
+ #: admin/templates/map-settings.php:434 admin/upgrade.php:163
2051
+ #: frontend/class-frontend.php:1337 inc/wpsl-functions.php:106
2052
  msgid "No route could be found between the origin and destination"
2053
  msgstr "Er kon geen route gevonden worden tussen het begin- en eindpunt"
2054
 
2055
+ #: admin/templates/map-settings.php:437 admin/templates/map-settings.php:438
2056
+ #: admin/upgrade.php:87 frontend/class-frontend.php:1339
2057
+ #: inc/wpsl-functions.php:107
2058
  msgid "Back"
2059
  msgstr "Terug"
2060
 
2061
+ #: admin/templates/map-settings.php:441 admin/templates/map-settings.php:442
2062
+ #: admin/upgrade.php:155 frontend/class-frontend.php:1340
2063
+ #: inc/wpsl-functions.php:108
2064
  msgid "Street view"
2065
  msgstr "Street view"
2066
 
2067
+ #: admin/templates/map-settings.php:445 admin/templates/map-settings.php:446
2068
+ #: admin/upgrade.php:159 frontend/class-frontend.php:1341
2069
+ #: inc/wpsl-functions.php:109
2070
  msgid "Zoom here"
2071
  msgstr "Zoom hier"
2072
 
2073
+ #: admin/templates/map-settings.php:449
2074
  msgid "General error"
2075
  msgstr "Foutmelding"
2076
 
2077
+ #: admin/templates/map-settings.php:450 frontend/class-frontend.php:1334
2078
+ #: inc/wpsl-functions.php:110
2079
  msgid "Something went wrong, please try again!"
2080
  msgstr "Er ging iets fout, probeer het nog een keer!"
2081
 
2082
+ #: admin/templates/map-settings.php:453
2083
  msgid "Query limit error"
2084
  msgstr "Query limit foutmelding"
2085
 
2086
+ #: admin/templates/map-settings.php:453
2087
  #, php-format
2088
  msgid ""
2089
  "You can raise the %susage limit%s by obtaining an API %skey%s, and fill in "
2092
  "Je kan de %sgebruiks limiet%s verhogen door een API %ssleutel%s aan te "
2093
  "vragen en die in het \"API sleutel\" veld bovenaan de pagina in te vullen."
2094
 
2095
+ #: admin/templates/map-settings.php:454 frontend/class-frontend.php:1335
2096
+ #: inc/wpsl-functions.php:111
2097
  msgid "API usage limit reached"
2098
  msgstr "API gebruikslimiet bereikt"
2099
 
2100
+ #: admin/templates/map-settings.php:467
2101
  msgid "Tools"
2102
  msgstr "Tools"
2103
 
2104
+ #: admin/templates/map-settings.php:470
2105
  msgid "Enable store locator debug?"
2106
  msgstr "Activeer store locator debug?"
2107
 
2108
+ #: admin/templates/map-settings.php:470
2109
  #, php-format
2110
  msgid ""
2111
  "This disables the WPSL transient cache. %sThe transient cache is only used "
2115
  "alleen gebruikt als de %sToon alle locaties op de kaart zodra de pagina "
2116
  "geladen is%s optie is geactiveerd."
2117
 
2118
+ #: admin/templates/map-settings.php:474
2119
  msgid "WPSL transients"
2120
  msgstr "WPSL transients"
2121
 
2122
+ #: admin/templates/map-settings.php:475
2123
  msgid "Clear store locator transient cache"
2124
  msgstr "Verwijder het store locator transient cache."
2125
 
2131
  msgid "Reset"
2132
  msgstr "Herstel"
2133
 
2134
+ #: admin/upgrade.php:186 inc/wpsl-functions.php:92
2135
  msgid "stores"
2136
  msgstr "winkels"
2137
 
2138
+ #: admin/upgrade.php:190 inc/wpsl-functions.php:93
2139
  msgid "store-category"
2140
  msgstr "winkel-categorie"
2141
 
2142
+ #: admin/upgrade.php:384
2143
  #, php-format
2144
  msgid ""
2145
  "Because you updated WP Store Locator from version 1.x, the %s current store "
2148
  "Doordat je WP Store Locator update van versie 1.x, de %s huidige winkel "
2149
  "locaties moeten worden %somgezet%s naar custom post types."
2150
 
2151
+ #: admin/upgrade.php:405
2152
  #, php-format
2153
  msgid ""
2154
  "The script converting the locations timed out. %s You can click the \"Start "
2166
  "heeft al geprobeerd om de maximum execution time uit te zetten, maar als je "
2167
  "dit leest dan is dat mislukt."
2168
 
2169
+ #: admin/upgrade.php:426
2170
  msgid "Store locations to convert:"
2171
  msgstr "Locaties die omgezet worden:"
2172
 
2173
+ #: admin/upgrade.php:428
2174
  msgid "Start Converting"
2175
  msgstr "Begin met omzetten"
2176
 
2177
+ #: admin/upgrade.php:550
2178
  #, php-format
2179
  msgid ""
2180
  "All the store locations are now converted to custom post types. %s You can "
2183
  "Alle winkel locaties zijn nu omgezet naar custom post types. %s Je kunt ze "
2184
  "bekijken op de %sAlle Winkels%s pagina."
2185
 
2186
+ #: frontend/class-frontend.php:610
2187
  msgid ""
2188
  "If you use the [wpsl_address] shortcode outside a store page you need to set "
2189
  "the ID attribute."
2191
  "Als je de [wpsl_address] shortcode op een pagina gebruikt die geen winkel "
2192
  "pagina is dan is de ID attribute verplicht."
2193
 
2194
+ #: frontend/class-frontend.php:722
2195
  msgid ""
2196
  "If you use the [wpsl_hours] shortcode outside a store page you need to set "
2197
  "the ID attribute."
2199
  "Als je de [wpsl_hours] shortcode op een pagina gebruikt die geen winkel "
2200
  "pagina is dan is de ID attribute verplicht."
2201
 
2202
+ #: frontend/class-frontend.php:790
2203
  msgid ""
2204
  "If you use the [wpsl_map] shortcode outside a store page you need to set the "
2205
  "ID attribute."
2207
  "Als je de [wpsl_map] shortcode op een pagina gebruikt die geen winkel pagina "
2208
  "is dan is de ID attribute verplicht."
2209
 
2210
+ #: frontend/class-frontend.php:1109
2211
  msgid "Any"
2212
  msgstr "Alle"
2213
 
2214
+ #: frontend/class-frontend.php:1234
2215
  msgid "The application does not have permission to use the Geolocation API."
2216
  msgstr ""
2217
  "Deze applicatie heeft geen toestemming om de Geolocation API te gebruiken."
2218
 
2219
+ #: frontend/class-frontend.php:1235
2220
  msgid "Location information is unavailable."
2221
  msgstr "Informatie over de huidige locatie is niet beschikbaar."
2222
 
2223
+ #: frontend/class-frontend.php:1236
2224
  msgid "The geolocation request timed out."
2225
  msgstr "Het geolocation verzoek timed out."
2226
 
2227
+ #: frontend/class-frontend.php:1237
2228
  msgid "An unknown error occurred."
2229
  msgstr " Er heeft zich een onbekende fout voorgedaan."
2230
 
2334
  msgid "Zip"
2335
  msgstr "Postcode"
2336
 
2337
+ #: inc/wpsl-functions.php:186
2338
  msgid "Show the store list below the map"
2339
  msgstr "Toon the locatie lijst onder de kaart"
2340
 
2341
+ #: inc/wpsl-functions.php:203
2342
  msgid "Monday"
2343
  msgstr "Maandag"
2344
 
2345
+ #: inc/wpsl-functions.php:204
2346
  msgid "Tuesday"
2347
  msgstr "Dinsdag"
2348
 
2349
+ #: inc/wpsl-functions.php:205
2350
  msgid "Wednesday"
2351
  msgstr "Woensdag"
2352
 
2353
+ #: inc/wpsl-functions.php:206
2354
  msgid "Thursday"
2355
  msgstr "Donderdag"
2356
 
2357
+ #: inc/wpsl-functions.php:207
2358
  msgid "Friday"
2359
  msgstr "Vrijdag"
2360
 
2361
+ #: inc/wpsl-functions.php:208
2362
  msgid "Saturday"
2363
  msgstr "Zaterdag"
2364
 
2365
+ #: inc/wpsl-functions.php:209
2366
  msgid "Sunday"
2367
  msgstr "Zondag"
2368
 
2369
+ #: inc/wpsl-functions.php:239
2370
  #, php-format
2371
  msgid "Mon %sTue %sWed %sThu %sFri %sSat Closed %sSun Closed"
2372
  msgstr "ma %sdi %swoe %sdo %svrij %szat gesloten %szo gesloten"
2373
 
2374
+ #: inc/wpsl-functions.php:255
2375
  msgid "Satellite"
2376
  msgstr "Satelliet"
2377
 
2378
+ #: inc/wpsl-functions.php:256
2379
  msgid "Hybrid"
2380
  msgstr "Hybrid"
2381
 
2382
+ #: inc/wpsl-functions.php:257
2383
  msgid "Terrain"
2384
  msgstr "Terrein"
2385
 
2386
+ #: inc/wpsl-functions.php:272
2387
  msgid "(city) (state) (zip code)"
2388
  msgstr "(stad) (provincie) (postcode)"
2389
 
2390
+ #: inc/wpsl-functions.php:273
2391
  msgid "(city), (state) (zip code)"
2392
  msgstr "(stad), (provincie), (postcode)"
2393
 
2394
+ #: inc/wpsl-functions.php:274
2395
  msgid "(city) (zip code)"
2396
  msgstr "(stad) (postcode)"
2397
 
2398
+ #: inc/wpsl-functions.php:275
2399
  msgid "(city), (zip code)"
2400
  msgstr "(stad), (postcode)"
2401
 
2402
+ #: inc/wpsl-functions.php:276
2403
  msgid "(zip code) (city) (state)"
2404
  msgstr "(postcode) (stad) (provincie)"
2405
 
2406
+ #: inc/wpsl-functions.php:277
2407
  msgid "(zip code) (city)"
2408
  msgstr "(postcode) (stad)"
2409
 
2410
+ #~ msgid "Show the pan controls?"
2411
+ #~ msgstr "Toon de pan controls?"
2412
+
2413
+ #~ msgid "Zoom control style"
2414
+ #~ msgstr "Zoom bediening stijl"
2415
+
2416
+ #~ msgid "Small"
2417
+ #~ msgstr "klein"
2418
+
2419
+ #~ msgid "Large"
2420
+ #~ msgstr "groot"
2421
+
2422
  #~ msgid "If a store url exists, make the store name clickable?"
2423
  #~ msgstr "Als een winkel url bestaat, maak de winkel naam dan klikbaar?"
2424
 
languages/wpsl.pot CHANGED
@@ -1,8 +1,9 @@
 
1
  msgid ""
2
  msgstr ""
3
  "Project-Id-Version: WP Store Locator v2.0\n"
4
  "Report-Msgid-Bugs-To: \n"
5
- "POT-Creation-Date: 2015-09-01 13:49+0100\n"
6
  "PO-Revision-Date: 2015-09-01 13:49+0100\n"
7
  "Last-Translator: \n"
8
  "Language-Team: \n"
@@ -11,11 +12,11 @@ msgstr ""
11
  "Content-Type: text/plain; charset=UTF-8\n"
12
  "Content-Transfer-Encoding: 8bit\n"
13
  "Plural-Forms: nplurals=2; plural=n != 1;\n"
14
- "X-Generator: Poedit 1.7.4\n"
15
  "X-Poedit-SourceCharset: UTF-8\n"
16
  "X-Poedit-KeywordsList: __;_e;__ngettext:1,2;_n:1,2;__ngettext_noop:1,2;"
17
  "_n_noop:1,2;_c,_nc:4c,1,2;_x:1,2c;_ex:1,2c;_nx:4c,1,2;_nx_noop:4c,1,2\n"
18
- "X-Poedit-Basepath: ../\n"
19
  "X-Textdomain-Support: yes\n"
20
  "X-Poedit-SearchPath-0: .\n"
21
 
@@ -33,10 +34,9 @@ msgid ""
33
  "a start point on the %ssettings%s page. %sDismiss%s"
34
  msgstr ""
35
 
36
- #: admin/class-admin.php:150 admin/templates/map-settings.php:4
37
- #, fuzzy
38
  msgid "Settings"
39
- msgstr "Instellingen"
40
 
41
  #: admin/class-admin.php:264
42
  msgid "Cannot determine the address at this location."
@@ -46,7 +46,7 @@ msgstr ""
46
  msgid "Geocode was not successful for the following reason"
47
  msgstr ""
48
 
49
- #: admin/class-admin.php:266 admin/upgrade.php:393
50
  msgid "Security check failed, reload the page and try again."
51
  msgstr ""
52
 
@@ -58,8 +58,8 @@ msgstr ""
58
  msgid "The map preview requires all the location details."
59
  msgstr ""
60
 
61
- #: admin/class-admin.php:269 admin/class-metaboxes.php:504
62
- #: frontend/class-frontend.php:483
63
  msgid "Closed"
64
  msgstr ""
65
 
@@ -155,9 +155,9 @@ msgstr ""
155
  msgid "Opening Hours"
156
  msgstr ""
157
 
158
- #: admin/class-metaboxes.php:82 admin/templates/map-settings.php:419
159
- #: admin/templates/map-settings.php:420 frontend/underscore-functions.php:133
160
- #: inc/wpsl-functions.php:114
161
  msgid "Hours"
162
  msgstr ""
163
 
@@ -169,105 +169,104 @@ msgstr ""
169
  msgid "Tel"
170
  msgstr ""
171
 
172
- #: admin/class-metaboxes.php:91 admin/templates/map-settings.php:407
173
- #: admin/templates/map-settings.php:408 frontend/class-frontend.php:665
174
  #: frontend/underscore-functions.php:32 frontend/underscore-functions.php:124
175
- #: inc/wpsl-functions.php:111
176
  msgid "Fax"
177
  msgstr ""
178
 
179
- #: admin/class-metaboxes.php:94 admin/templates/map-settings.php:411
180
- #: admin/templates/map-settings.php:412 admin/upgrade.php:210
181
- #: frontend/class-frontend.php:669 frontend/underscore-functions.php:35
182
- #: frontend/underscore-functions.php:127 inc/wpsl-functions.php:112
183
- #, fuzzy
184
  msgid "Email"
185
- msgstr "Dit e-mailadres staat al ingeschreven!"
186
 
187
- #: admin/class-metaboxes.php:97 admin/templates/map-settings.php:415
188
- #: admin/templates/map-settings.php:416 admin/upgrade.php:214
189
- #: frontend/class-frontend.php:674 inc/wpsl-functions.php:113
190
  msgid "Url"
191
  msgstr ""
192
 
193
- #: admin/class-metaboxes.php:426
194
  msgid "Hour format"
195
  msgstr ""
196
 
197
- #: admin/class-metaboxes.php:433
198
  msgid "Days"
199
  msgstr ""
200
 
201
- #: admin/class-metaboxes.php:434
202
  msgid "Opening Periods"
203
  msgstr ""
204
 
205
- #: admin/class-metaboxes.php:681
206
  msgid "Failed to publish the store. Please fill in the required store details."
207
  msgstr ""
208
 
209
- #: admin/class-metaboxes.php:816
210
  msgid "Preview Location"
211
  msgstr ""
212
 
213
- #: admin/class-metaboxes.php:817
214
  #, php-format
215
  msgid ""
216
  "The map preview is based on the provided address, city and country details. "
217
  "%s It will ignore any custom latitude or longitude values."
218
  msgstr ""
219
 
220
- #: admin/class-metaboxes.php:818
221
  msgid "You can drag the marker to adjust the exact location of the marker."
222
  msgstr ""
223
 
224
- #: admin/class-metaboxes.php:838 admin/class-metaboxes.php:841
225
  msgid "Store updated."
226
  msgstr ""
227
 
228
- #: admin/class-metaboxes.php:839
229
  msgid "Custom field updated."
230
  msgstr ""
231
 
232
- #: admin/class-metaboxes.php:840
233
  msgid "Custom field deleted."
234
  msgstr ""
235
 
236
- #: admin/class-metaboxes.php:842
237
  #, php-format
238
  msgid "Store restored to revision from %s"
239
  msgstr ""
240
 
241
- #: admin/class-metaboxes.php:843
242
  msgid "Store published."
243
  msgstr ""
244
 
245
- #: admin/class-metaboxes.php:844
246
  msgid "Store saved."
247
  msgstr ""
248
 
249
- #: admin/class-metaboxes.php:845
250
  msgid "Store submitted."
251
  msgstr ""
252
 
253
- #: admin/class-metaboxes.php:847
254
  #, php-format
255
  msgid "Store scheduled for: <strong>%1$s</strong>."
256
  msgstr ""
257
 
258
- #: admin/class-metaboxes.php:848
259
  msgid "M j, Y @ G:i"
260
  msgstr ""
261
 
262
- #: admin/class-metaboxes.php:850
263
  msgid "Store draft updated."
264
  msgstr ""
265
 
266
- #: admin/class-metaboxes.php:856
267
  msgid "View store"
268
  msgstr ""
269
 
270
- #: admin/class-metaboxes.php:862
271
  msgid "Preview store"
272
  msgstr ""
273
 
@@ -275,17 +274,17 @@ msgstr ""
275
  msgid "WP Store Locator Transients Cleared"
276
  msgstr ""
277
 
278
- #: admin/class-settings.php:370
279
  msgid ""
280
  "The max results field cannot be empty, the default value has been restored."
281
  msgstr ""
282
 
283
- #: admin/class-settings.php:373
284
  msgid ""
285
  "The search radius field cannot be empty, the default value has been restored."
286
  msgstr ""
287
 
288
- #: admin/class-settings.php:376
289
  #, php-format
290
  msgid ""
291
  "Please provide the name of a city or country that can be used as a starting "
@@ -293,1110 +292,1108 @@ msgid ""
293
  "user fails, or the option itself is disabled."
294
  msgstr ""
295
 
296
- #: admin/class-settings.php:397
297
- #, fuzzy
298
  msgid "Select your language"
299
- msgstr "Geef een geldig e-mailadres op!"
300
 
301
- #: admin/class-settings.php:398
302
  msgid "English"
303
  msgstr ""
304
 
305
- #: admin/class-settings.php:399
306
  msgid "Arabic"
307
  msgstr ""
308
 
309
- #: admin/class-settings.php:400
310
  msgid "Basque"
311
  msgstr ""
312
 
313
- #: admin/class-settings.php:401
314
  msgid "Bulgarian"
315
  msgstr ""
316
 
317
- #: admin/class-settings.php:402
318
  msgid "Bengali"
319
  msgstr ""
320
 
321
- #: admin/class-settings.php:403
322
  msgid "Catalan"
323
  msgstr ""
324
 
325
- #: admin/class-settings.php:404
326
  msgid "Czech"
327
  msgstr ""
328
 
329
- #: admin/class-settings.php:405
330
  msgid "Danish"
331
  msgstr ""
332
 
333
- #: admin/class-settings.php:406
334
  msgid "German"
335
  msgstr ""
336
 
337
- #: admin/class-settings.php:407
338
  msgid "Greek"
339
  msgstr ""
340
 
341
- #: admin/class-settings.php:408
342
  msgid "English (Australian)"
343
  msgstr ""
344
 
345
- #: admin/class-settings.php:409
346
  msgid "English (Great Britain)"
347
  msgstr ""
348
 
349
- #: admin/class-settings.php:410
350
  msgid "Spanish"
351
  msgstr ""
352
 
353
- #: admin/class-settings.php:411
354
  msgid "Farsi"
355
  msgstr ""
356
 
357
- #: admin/class-settings.php:412
358
  msgid "Finnish"
359
  msgstr ""
360
 
361
- #: admin/class-settings.php:413
362
  msgid "Filipino"
363
  msgstr ""
364
 
365
- #: admin/class-settings.php:414
366
  msgid "French"
367
  msgstr ""
368
 
369
- #: admin/class-settings.php:415
370
  msgid "Galician"
371
  msgstr ""
372
 
373
- #: admin/class-settings.php:416
374
  msgid "Gujarati"
375
  msgstr ""
376
 
377
- #: admin/class-settings.php:417
378
  msgid "Hindi"
379
  msgstr ""
380
 
381
- #: admin/class-settings.php:418
382
  msgid "Croatian"
383
  msgstr ""
384
 
385
- #: admin/class-settings.php:419
386
  msgid "Hungarian"
387
  msgstr ""
388
 
389
- #: admin/class-settings.php:420
390
  msgid "Indonesian"
391
  msgstr ""
392
 
393
- #: admin/class-settings.php:421
394
  msgid "Italian"
395
  msgstr ""
396
 
397
- #: admin/class-settings.php:422
398
  msgid "Hebrew"
399
  msgstr ""
400
 
401
- #: admin/class-settings.php:423
402
  msgid "Japanese"
403
  msgstr ""
404
 
405
- #: admin/class-settings.php:424
406
  msgid "Kannada"
407
  msgstr ""
408
 
409
- #: admin/class-settings.php:425
410
  msgid "Korean"
411
  msgstr ""
412
 
413
- #: admin/class-settings.php:426
414
  msgid "Lithuanian"
415
  msgstr ""
416
 
417
- #: admin/class-settings.php:427
418
  msgid "Latvian"
419
  msgstr ""
420
 
421
- #: admin/class-settings.php:428
422
  msgid "Malayalam"
423
  msgstr ""
424
 
425
- #: admin/class-settings.php:429
426
  msgid "Marathi"
427
  msgstr ""
428
 
429
- #: admin/class-settings.php:430
430
  msgid "Dutch"
431
  msgstr ""
432
 
433
- #: admin/class-settings.php:431
434
  msgid "Norwegian"
435
  msgstr ""
436
 
437
- #: admin/class-settings.php:432
438
  msgid "Norwegian Nynorsk"
439
  msgstr ""
440
 
441
- #: admin/class-settings.php:433
442
  msgid "Polish"
443
  msgstr ""
444
 
445
- #: admin/class-settings.php:434
446
  msgid "Portuguese"
447
  msgstr ""
448
 
449
- #: admin/class-settings.php:435
450
  msgid "Portuguese (Brazil)"
451
  msgstr ""
452
 
453
- #: admin/class-settings.php:436
454
  msgid "Portuguese (Portugal)"
455
  msgstr ""
456
 
457
- #: admin/class-settings.php:437
458
  msgid "Romanian"
459
  msgstr ""
460
 
461
- #: admin/class-settings.php:438
462
  msgid "Russian"
463
  msgstr ""
464
 
465
- #: admin/class-settings.php:439
466
  msgid "Slovak"
467
  msgstr ""
468
 
469
- #: admin/class-settings.php:440
470
  msgid "Slovenian"
471
  msgstr ""
472
 
473
- #: admin/class-settings.php:441
474
  msgid "Serbian"
475
  msgstr ""
476
 
477
- #: admin/class-settings.php:442
478
  msgid "Swedish"
479
  msgstr ""
480
 
481
- #: admin/class-settings.php:443
482
  msgid "Tagalog"
483
  msgstr ""
484
 
485
- #: admin/class-settings.php:444
486
  msgid "Tamil"
487
  msgstr ""
488
 
489
- #: admin/class-settings.php:445
490
  msgid "Telugu"
491
  msgstr ""
492
 
493
- #: admin/class-settings.php:446
494
  msgid "Thai"
495
  msgstr ""
496
 
497
- #: admin/class-settings.php:447
498
  msgid "Turkish"
499
  msgstr ""
500
 
501
- #: admin/class-settings.php:448
502
  msgid "Ukrainian"
503
  msgstr ""
504
 
505
- #: admin/class-settings.php:449
506
  msgid "Vietnamese"
507
  msgstr ""
508
 
509
- #: admin/class-settings.php:450
510
  msgid "Chinese (Simplified)"
511
  msgstr ""
512
 
513
- #: admin/class-settings.php:451
514
  msgid "Chinese (Traditional)"
515
  msgstr ""
516
 
517
- #: admin/class-settings.php:456
518
- #, fuzzy
519
  msgid "Select your region"
520
- msgstr "Geef een geldig e-mailadres op!"
521
 
522
- #: admin/class-settings.php:457
523
  msgid "Afghanistan"
524
  msgstr ""
525
 
526
- #: admin/class-settings.php:458
527
  msgid "Albania"
528
  msgstr ""
529
 
530
- #: admin/class-settings.php:459
531
  msgid "Algeria"
532
  msgstr ""
533
 
534
- #: admin/class-settings.php:460
535
  msgid "American Samoa"
536
  msgstr ""
537
 
538
- #: admin/class-settings.php:461
539
  msgid "Andorra"
540
  msgstr ""
541
 
542
- #: admin/class-settings.php:462
543
  msgid "Anguilla"
544
  msgstr ""
545
 
546
- #: admin/class-settings.php:463
547
  msgid "Angola"
548
  msgstr ""
549
 
550
- #: admin/class-settings.php:464
551
  msgid "Antigua and Barbuda"
552
  msgstr ""
553
 
554
- #: admin/class-settings.php:465
555
  msgid "Argentina"
556
  msgstr ""
557
 
558
- #: admin/class-settings.php:466
559
  msgid "Armenia"
560
  msgstr ""
561
 
562
- #: admin/class-settings.php:467
563
  msgid "Aruba"
564
  msgstr ""
565
 
566
- #: admin/class-settings.php:468
567
  msgid "Australia"
568
  msgstr ""
569
 
570
- #: admin/class-settings.php:469
571
  msgid "Austria"
572
  msgstr ""
573
 
574
- #: admin/class-settings.php:470
575
  msgid "Azerbaijan"
576
  msgstr ""
577
 
578
- #: admin/class-settings.php:471
579
  msgid "Bahamas"
580
  msgstr ""
581
 
582
- #: admin/class-settings.php:472
583
  msgid "Bahrain"
584
  msgstr ""
585
 
586
- #: admin/class-settings.php:473
587
  msgid "Bangladesh"
588
  msgstr ""
589
 
590
- #: admin/class-settings.php:474
591
  msgid "Barbados"
592
  msgstr ""
593
 
594
- #: admin/class-settings.php:475
595
  msgid "Belarus"
596
  msgstr ""
597
 
598
- #: admin/class-settings.php:476
599
  msgid "Belgium"
600
  msgstr ""
601
 
602
- #: admin/class-settings.php:477
603
  msgid "Belize"
604
  msgstr ""
605
 
606
- #: admin/class-settings.php:478
607
  msgid "Benin"
608
  msgstr ""
609
 
610
- #: admin/class-settings.php:479
611
  msgid "Bermuda"
612
  msgstr ""
613
 
614
- #: admin/class-settings.php:480
615
  msgid "Bhutan"
616
  msgstr ""
617
 
618
- #: admin/class-settings.php:481
619
  msgid "Bolivia"
620
  msgstr ""
621
 
622
- #: admin/class-settings.php:482
623
  msgid "Bosnia and Herzegovina"
624
  msgstr ""
625
 
626
- #: admin/class-settings.php:483
627
  msgid "Botswana"
628
  msgstr ""
629
 
630
- #: admin/class-settings.php:484
631
  msgid "Brazil"
632
  msgstr ""
633
 
634
- #: admin/class-settings.php:485
635
  msgid "British Indian Ocean Territory"
636
  msgstr ""
637
 
638
- #: admin/class-settings.php:486
639
  msgid "Brunei"
640
  msgstr ""
641
 
642
- #: admin/class-settings.php:487
643
  msgid "Bulgaria"
644
  msgstr ""
645
 
646
- #: admin/class-settings.php:488
647
  msgid "Burkina Faso"
648
  msgstr ""
649
 
650
- #: admin/class-settings.php:489
651
  msgid "Burundi"
652
  msgstr ""
653
 
654
- #: admin/class-settings.php:490
655
  msgid "Cambodia"
656
  msgstr ""
657
 
658
- #: admin/class-settings.php:491
659
  msgid "Cameroon"
660
  msgstr ""
661
 
662
- #: admin/class-settings.php:492
663
  msgid "Canada"
664
  msgstr ""
665
 
666
- #: admin/class-settings.php:493
667
  msgid "Cape Verde"
668
  msgstr ""
669
 
670
- #: admin/class-settings.php:494
671
  msgid "Cayman Islands"
672
  msgstr ""
673
 
674
- #: admin/class-settings.php:495
675
  msgid "Central African Republic"
676
  msgstr ""
677
 
678
- #: admin/class-settings.php:496
679
  msgid "Chad"
680
  msgstr ""
681
 
682
- #: admin/class-settings.php:497
683
  msgid "Chile"
684
  msgstr ""
685
 
686
- #: admin/class-settings.php:498
687
  msgid "China"
688
  msgstr ""
689
 
690
- #: admin/class-settings.php:499
691
  msgid "Christmas Island"
692
  msgstr ""
693
 
694
- #: admin/class-settings.php:500
695
  msgid "Cocos Islands"
696
  msgstr ""
697
 
698
- #: admin/class-settings.php:501
699
  msgid "Colombia"
700
  msgstr ""
701
 
702
- #: admin/class-settings.php:502
703
  msgid "Comoros"
704
  msgstr ""
705
 
706
- #: admin/class-settings.php:503
707
  msgid "Congo"
708
  msgstr ""
709
 
710
- #: admin/class-settings.php:504
711
  msgid "Costa Rica"
712
  msgstr ""
713
 
714
- #: admin/class-settings.php:505
715
  msgid "Côte d'Ivoire"
716
  msgstr ""
717
 
718
- #: admin/class-settings.php:506
719
  msgid "Croatia"
720
  msgstr ""
721
 
722
- #: admin/class-settings.php:507
723
  msgid "Cuba"
724
  msgstr ""
725
 
726
- #: admin/class-settings.php:508
727
  msgid "Czech Republic"
728
  msgstr ""
729
 
730
- #: admin/class-settings.php:509
731
  msgid "Denmark"
732
  msgstr ""
733
 
734
- #: admin/class-settings.php:510
735
  msgid "Djibouti"
736
  msgstr ""
737
 
738
- #: admin/class-settings.php:511
739
  msgid "Democratic Republic of the Congo"
740
  msgstr ""
741
 
742
- #: admin/class-settings.php:512
743
  msgid "Dominica"
744
  msgstr ""
745
 
746
- #: admin/class-settings.php:513
747
  msgid "Dominican Republic"
748
  msgstr ""
749
 
750
- #: admin/class-settings.php:514
751
  msgid "Ecuador"
752
  msgstr ""
753
 
754
- #: admin/class-settings.php:515
755
  msgid "Egypt"
756
  msgstr ""
757
 
758
- #: admin/class-settings.php:516
759
  msgid "El Salvador"
760
  msgstr ""
761
 
762
- #: admin/class-settings.php:517
763
  msgid "Equatorial Guinea"
764
  msgstr ""
765
 
766
- #: admin/class-settings.php:518
767
  msgid "Eritrea"
768
  msgstr ""
769
 
770
- #: admin/class-settings.php:519
771
  msgid "Estonia"
772
  msgstr ""
773
 
774
- #: admin/class-settings.php:520
775
  msgid "Ethiopia"
776
  msgstr ""
777
 
778
- #: admin/class-settings.php:521
779
  msgid "Fiji"
780
  msgstr ""
781
 
782
- #: admin/class-settings.php:522
783
  msgid "Finland"
784
  msgstr ""
785
 
786
- #: admin/class-settings.php:523
787
  msgid "France"
788
  msgstr ""
789
 
790
- #: admin/class-settings.php:524
791
  msgid "French Guiana"
792
  msgstr ""
793
 
794
- #: admin/class-settings.php:525
795
  msgid "Gabon"
796
  msgstr ""
797
 
798
- #: admin/class-settings.php:526
799
  msgid "Gambia"
800
  msgstr ""
801
 
802
- #: admin/class-settings.php:527
803
  msgid "Germany"
804
  msgstr ""
805
 
806
- #: admin/class-settings.php:528
807
  msgid "Ghana"
808
  msgstr ""
809
 
810
- #: admin/class-settings.php:529
811
  msgid "Greenland"
812
  msgstr ""
813
 
814
- #: admin/class-settings.php:530
815
  msgid "Greece"
816
  msgstr ""
817
 
818
- #: admin/class-settings.php:531
819
  msgid "Grenada"
820
  msgstr ""
821
 
822
- #: admin/class-settings.php:532
823
  msgid "Guam"
824
  msgstr ""
825
 
826
- #: admin/class-settings.php:533
827
  msgid "Guadeloupe"
828
  msgstr ""
829
 
830
- #: admin/class-settings.php:534
831
  msgid "Guatemala"
832
  msgstr ""
833
 
834
- #: admin/class-settings.php:535
835
  msgid "Guinea"
836
  msgstr ""
837
 
838
- #: admin/class-settings.php:536
839
  msgid "Guinea-Bissau"
840
  msgstr ""
841
 
842
- #: admin/class-settings.php:537
843
  msgid "Haiti"
844
  msgstr ""
845
 
846
- #: admin/class-settings.php:538
847
  msgid "Honduras"
848
  msgstr ""
849
 
850
- #: admin/class-settings.php:539
851
  msgid "Hong Kong"
852
  msgstr ""
853
 
854
- #: admin/class-settings.php:540
855
  msgid "Hungary"
856
  msgstr ""
857
 
858
- #: admin/class-settings.php:541
859
  msgid "Iceland"
860
  msgstr ""
861
 
862
- #: admin/class-settings.php:542
863
  msgid "India"
864
  msgstr ""
865
 
866
- #: admin/class-settings.php:543
867
  msgid "Indonesia"
868
  msgstr ""
869
 
870
- #: admin/class-settings.php:544
871
  msgid "Iran"
872
  msgstr ""
873
 
874
- #: admin/class-settings.php:545
875
  msgid "Iraq"
876
  msgstr ""
877
 
878
- #: admin/class-settings.php:546
879
  msgid "Ireland"
880
  msgstr ""
881
 
882
- #: admin/class-settings.php:547
883
  msgid "Israel"
884
  msgstr ""
885
 
886
- #: admin/class-settings.php:548
887
  msgid "Italy"
888
  msgstr ""
889
 
890
- #: admin/class-settings.php:549
891
  msgid "Jamaica"
892
  msgstr ""
893
 
894
- #: admin/class-settings.php:550
895
  msgid "Japan"
896
  msgstr ""
897
 
898
- #: admin/class-settings.php:551
899
  msgid "Jordan"
900
  msgstr ""
901
 
902
- #: admin/class-settings.php:552
903
  msgid "Kazakhstan"
904
  msgstr ""
905
 
906
- #: admin/class-settings.php:553
907
  msgid "Kenya"
908
  msgstr ""
909
 
910
- #: admin/class-settings.php:554
911
  msgid "Kuwait"
912
  msgstr ""
913
 
914
- #: admin/class-settings.php:555
915
  msgid "Kyrgyzstan"
916
  msgstr ""
917
 
918
- #: admin/class-settings.php:556
919
  msgid "Laos"
920
  msgstr ""
921
 
922
- #: admin/class-settings.php:557
923
  msgid "Latvia"
924
  msgstr ""
925
 
926
- #: admin/class-settings.php:558
927
  msgid "Lebanon"
928
  msgstr ""
929
 
930
- #: admin/class-settings.php:559
931
  msgid "Lesotho"
932
  msgstr ""
933
 
934
- #: admin/class-settings.php:560
935
  msgid "Liberia"
936
  msgstr ""
937
 
938
- #: admin/class-settings.php:561
939
  msgid "Libya"
940
  msgstr ""
941
 
942
- #: admin/class-settings.php:562
943
  msgid "Liechtenstein"
944
  msgstr ""
945
 
946
- #: admin/class-settings.php:563
947
  msgid "Lithuania"
948
  msgstr ""
949
 
950
- #: admin/class-settings.php:564
951
  msgid "Luxembourg"
952
  msgstr ""
953
 
954
- #: admin/class-settings.php:565
955
  msgid "Macau"
956
  msgstr ""
957
 
958
- #: admin/class-settings.php:566
959
  msgid "Macedonia"
960
  msgstr ""
961
 
962
- #: admin/class-settings.php:567
963
  msgid "Madagascar"
964
  msgstr ""
965
 
966
- #: admin/class-settings.php:568
967
  msgid "Malawi"
968
  msgstr ""
969
 
970
- #: admin/class-settings.php:569
971
  msgid "Malaysia "
972
  msgstr ""
973
 
974
- #: admin/class-settings.php:570
975
  msgid "Mali"
976
  msgstr ""
977
 
978
- #: admin/class-settings.php:571
979
  msgid "Marshall Islands"
980
  msgstr ""
981
 
982
- #: admin/class-settings.php:572
983
  msgid "Martinique"
984
  msgstr ""
985
 
986
- #: admin/class-settings.php:573
987
  msgid "Mauritania"
988
  msgstr ""
989
 
990
- #: admin/class-settings.php:574
991
  msgid "Mauritius"
992
  msgstr ""
993
 
994
- #: admin/class-settings.php:575
995
  msgid "Mexico"
996
  msgstr ""
997
 
998
- #: admin/class-settings.php:576
999
  msgid "Micronesia"
1000
  msgstr ""
1001
 
1002
- #: admin/class-settings.php:577
1003
  msgid "Moldova"
1004
  msgstr ""
1005
 
1006
- #: admin/class-settings.php:578
1007
  msgid "Monaco"
1008
  msgstr ""
1009
 
1010
- #: admin/class-settings.php:579
1011
  msgid "Mongolia"
1012
  msgstr ""
1013
 
1014
- #: admin/class-settings.php:580
1015
  msgid "Montenegro"
1016
  msgstr ""
1017
 
1018
- #: admin/class-settings.php:581
1019
  msgid "Montserrat"
1020
  msgstr ""
1021
 
1022
- #: admin/class-settings.php:582
1023
  msgid "Morocco"
1024
  msgstr ""
1025
 
1026
- #: admin/class-settings.php:583
1027
  msgid "Mozambique"
1028
  msgstr ""
1029
 
1030
- #: admin/class-settings.php:584
1031
  msgid "Myanmar"
1032
  msgstr ""
1033
 
1034
- #: admin/class-settings.php:585
1035
  msgid "Namibia"
1036
  msgstr ""
1037
 
1038
- #: admin/class-settings.php:586
1039
  msgid "Nauru"
1040
  msgstr ""
1041
 
1042
- #: admin/class-settings.php:587
1043
  msgid "Nepal"
1044
  msgstr ""
1045
 
1046
- #: admin/class-settings.php:588
1047
  msgid "Netherlands"
1048
  msgstr ""
1049
 
1050
- #: admin/class-settings.php:589
1051
  msgid "Netherlands Antilles"
1052
  msgstr ""
1053
 
1054
- #: admin/class-settings.php:590
1055
  msgid "New Zealand"
1056
  msgstr ""
1057
 
1058
- #: admin/class-settings.php:591
1059
  msgid "Nicaragua"
1060
  msgstr ""
1061
 
1062
- #: admin/class-settings.php:592
1063
  msgid "Niger"
1064
  msgstr ""
1065
 
1066
- #: admin/class-settings.php:593
1067
  msgid "Nigeria"
1068
  msgstr ""
1069
 
1070
- #: admin/class-settings.php:594
1071
  msgid "Niue"
1072
  msgstr ""
1073
 
1074
- #: admin/class-settings.php:595
1075
  msgid "Northern Mariana Islands"
1076
  msgstr ""
1077
 
1078
- #: admin/class-settings.php:596
1079
  msgid "Norway"
1080
  msgstr ""
1081
 
1082
- #: admin/class-settings.php:597
1083
  msgid "Oman"
1084
  msgstr ""
1085
 
1086
- #: admin/class-settings.php:598
1087
  msgid "Pakistan"
1088
  msgstr ""
1089
 
1090
- #: admin/class-settings.php:599
1091
  msgid "Panama"
1092
  msgstr ""
1093
 
1094
- #: admin/class-settings.php:600
1095
  msgid "Papua New Guinea"
1096
  msgstr ""
1097
 
1098
- #: admin/class-settings.php:601
1099
  msgid "Paraguay"
1100
  msgstr ""
1101
 
1102
- #: admin/class-settings.php:602
1103
  msgid "Peru"
1104
  msgstr ""
1105
 
1106
- #: admin/class-settings.php:603
1107
  msgid "Philippines"
1108
  msgstr ""
1109
 
1110
- #: admin/class-settings.php:604
1111
  msgid "Pitcairn Islands"
1112
  msgstr ""
1113
 
1114
- #: admin/class-settings.php:605
1115
  msgid "Poland"
1116
  msgstr ""
1117
 
1118
- #: admin/class-settings.php:606
1119
  msgid "Portugal"
1120
  msgstr ""
1121
 
1122
- #: admin/class-settings.php:607
1123
  msgid "Qatar"
1124
  msgstr ""
1125
 
1126
- #: admin/class-settings.php:608
1127
  msgid "Reunion"
1128
  msgstr ""
1129
 
1130
- #: admin/class-settings.php:609
1131
  msgid "Romania"
1132
  msgstr ""
1133
 
1134
- #: admin/class-settings.php:610
1135
  msgid "Russia"
1136
  msgstr ""
1137
 
1138
- #: admin/class-settings.php:611
1139
  msgid "Rwanda"
1140
  msgstr ""
1141
 
1142
- #: admin/class-settings.php:612
1143
  msgid "Saint Helena"
1144
  msgstr ""
1145
 
1146
- #: admin/class-settings.php:613
1147
  msgid "Saint Kitts and Nevis"
1148
  msgstr ""
1149
 
1150
- #: admin/class-settings.php:614
1151
  msgid "Saint Vincent and the Grenadines"
1152
  msgstr ""
1153
 
1154
- #: admin/class-settings.php:615
1155
  msgid "Saint Lucia"
1156
  msgstr ""
1157
 
1158
- #: admin/class-settings.php:616
1159
  msgid "Samoa"
1160
  msgstr ""
1161
 
1162
- #: admin/class-settings.php:617
1163
  msgid "San Marino"
1164
  msgstr ""
1165
 
1166
- #: admin/class-settings.php:618
1167
  msgid "São Tomé and Príncipe"
1168
  msgstr ""
1169
 
1170
- #: admin/class-settings.php:619
1171
  msgid "Saudi Arabia"
1172
  msgstr ""
1173
 
1174
- #: admin/class-settings.php:620
1175
  msgid "Senegal"
1176
  msgstr ""
1177
 
1178
- #: admin/class-settings.php:621
1179
  msgid "Serbia"
1180
  msgstr ""
1181
 
1182
- #: admin/class-settings.php:622
1183
  msgid "Seychelles"
1184
  msgstr ""
1185
 
1186
- #: admin/class-settings.php:623
1187
  msgid "Sierra Leone"
1188
  msgstr ""
1189
 
1190
- #: admin/class-settings.php:624
1191
  msgid "Singapore"
1192
  msgstr ""
1193
 
1194
- #: admin/class-settings.php:625
1195
  msgid "Slovakia"
1196
  msgstr ""
1197
 
1198
- #: admin/class-settings.php:626
1199
  msgid "Solomon Islands"
1200
  msgstr ""
1201
 
1202
- #: admin/class-settings.php:627
1203
  msgid "Somalia"
1204
  msgstr ""
1205
 
1206
- #: admin/class-settings.php:628
1207
  msgid "South Africa"
1208
  msgstr ""
1209
 
1210
- #: admin/class-settings.php:629
1211
  msgid "South Korea"
1212
  msgstr ""
1213
 
1214
- #: admin/class-settings.php:630
1215
  msgid "Spain"
1216
  msgstr ""
1217
 
1218
- #: admin/class-settings.php:631
1219
  msgid "Sri Lanka"
1220
  msgstr ""
1221
 
1222
- #: admin/class-settings.php:632
1223
  msgid "Sudan"
1224
  msgstr ""
1225
 
1226
- #: admin/class-settings.php:633
1227
  msgid "Swaziland"
1228
  msgstr ""
1229
 
1230
- #: admin/class-settings.php:634
1231
  msgid "Sweden"
1232
  msgstr ""
1233
 
1234
- #: admin/class-settings.php:635
1235
  msgid "Switzerland"
1236
  msgstr ""
1237
 
1238
- #: admin/class-settings.php:636
1239
  msgid "Syria"
1240
  msgstr ""
1241
 
1242
- #: admin/class-settings.php:637
1243
  msgid "Taiwan"
1244
  msgstr ""
1245
 
1246
- #: admin/class-settings.php:638
1247
  msgid "Tajikistan"
1248
  msgstr ""
1249
 
1250
- #: admin/class-settings.php:639
1251
  msgid "Tanzania"
1252
  msgstr ""
1253
 
1254
- #: admin/class-settings.php:640
1255
  msgid "Thailand"
1256
  msgstr ""
1257
 
1258
- #: admin/class-settings.php:641
1259
  msgid "Timor-Leste"
1260
  msgstr ""
1261
 
1262
- #: admin/class-settings.php:642
1263
  msgid "Tokelau"
1264
  msgstr ""
1265
 
1266
- #: admin/class-settings.php:643
1267
  msgid "Togo"
1268
  msgstr ""
1269
 
1270
- #: admin/class-settings.php:644
1271
  msgid "Tonga"
1272
  msgstr ""
1273
 
1274
- #: admin/class-settings.php:645
1275
  msgid "Trinidad and Tobago"
1276
  msgstr ""
1277
 
1278
- #: admin/class-settings.php:646
1279
  msgid "Tunisia"
1280
  msgstr ""
1281
 
1282
- #: admin/class-settings.php:647
1283
  msgid "Turkey"
1284
  msgstr ""
1285
 
1286
- #: admin/class-settings.php:648
1287
  msgid "Turkmenistan"
1288
  msgstr ""
1289
 
1290
- #: admin/class-settings.php:649
1291
  msgid "Tuvalu"
1292
  msgstr ""
1293
 
1294
- #: admin/class-settings.php:650
1295
  msgid "Uganda"
1296
  msgstr ""
1297
 
1298
- #: admin/class-settings.php:651
1299
  msgid "Ukraine"
1300
  msgstr ""
1301
 
1302
- #: admin/class-settings.php:652
1303
  msgid "United Arab Emirates"
1304
  msgstr ""
1305
 
1306
- #: admin/class-settings.php:653
1307
  msgid "United Kingdom"
1308
  msgstr ""
1309
 
1310
- #: admin/class-settings.php:654
1311
  msgid "United States"
1312
  msgstr ""
1313
 
1314
- #: admin/class-settings.php:655
1315
  msgid "Uruguay"
1316
  msgstr ""
1317
 
1318
- #: admin/class-settings.php:656
1319
  msgid "Uzbekistan"
1320
  msgstr ""
1321
 
1322
- #: admin/class-settings.php:657
1323
  msgid "Wallis Futuna"
1324
  msgstr ""
1325
 
1326
- #: admin/class-settings.php:658
1327
  msgid "Venezuela"
1328
  msgstr ""
1329
 
1330
- #: admin/class-settings.php:659
1331
  msgid "Vietnam"
1332
  msgstr ""
1333
 
1334
- #: admin/class-settings.php:660
1335
  msgid "Yemen"
1336
  msgstr ""
1337
 
1338
- #: admin/class-settings.php:661
1339
  msgid "Zambia"
1340
  msgstr ""
1341
 
1342
- #: admin/class-settings.php:662
1343
  msgid "Zimbabwe"
1344
  msgstr ""
1345
 
1346
- #: admin/class-settings.php:705
1347
  msgid "World view"
1348
  msgstr ""
1349
 
1350
- #: admin/class-settings.php:708 admin/class-settings.php:821
1351
- #: inc/wpsl-functions.php:179
1352
  msgid "Default"
1353
  msgstr ""
1354
 
1355
- #: admin/class-settings.php:711 inc/wpsl-functions.php:252
1356
  msgid "Roadmap"
1357
  msgstr ""
1358
 
1359
- #: admin/class-settings.php:851
1360
  msgid "Start location marker"
1361
  msgstr ""
1362
 
1363
- #: admin/class-settings.php:853
1364
  msgid "Store location marker"
1365
  msgstr ""
1366
 
1367
- #: admin/class-settings.php:934
1368
  msgid "Textarea"
1369
  msgstr ""
1370
 
1371
- #: admin/class-settings.php:935
1372
  msgid "Dropdowns (recommended)"
1373
  msgstr ""
1374
 
1375
- #: admin/class-settings.php:943
1376
  msgid "Bounces up and down"
1377
  msgstr ""
1378
 
1379
- #: admin/class-settings.php:944
1380
  msgid "Will open the info window"
1381
  msgstr ""
1382
 
1383
- #: admin/class-settings.php:945
1384
  msgid "Does not respond"
1385
  msgstr ""
1386
 
1387
- #: admin/class-settings.php:953
1388
  msgid "In the store listings"
1389
  msgstr ""
1390
 
1391
- #: admin/class-settings.php:954
1392
  msgid "In the info window on the map"
1393
  msgstr ""
1394
 
1395
- #: admin/class-settings.php:1010
1396
  msgid "12 Hours"
1397
  msgstr ""
1398
 
1399
- #: admin/class-settings.php:1011
1400
  msgid "24 Hours"
1401
  msgstr ""
1402
 
@@ -1404,111 +1401,111 @@ msgstr ""
1404
  msgid "Store Locator Manager"
1405
  msgstr ""
1406
 
1407
- #: admin/templates/map-settings.php:12
1408
  msgid "Google Maps API"
1409
  msgstr ""
1410
 
1411
- #: admin/templates/map-settings.php:15
1412
  msgid "API key"
1413
  msgstr ""
1414
 
1415
- #: admin/templates/map-settings.php:15
1416
  #, php-format
1417
  msgid ""
1418
  "A valid %sAPI key%s allows you to monitor the API usage and is required if "
1419
  "you need to purchase additional quota."
1420
  msgstr ""
1421
 
1422
- #: admin/templates/map-settings.php:16
1423
  msgid "Optional"
1424
  msgstr ""
1425
 
1426
- #: admin/templates/map-settings.php:19
1427
  msgid "Map language"
1428
  msgstr ""
1429
 
1430
- #: admin/templates/map-settings.php:19
1431
  msgid "If no map language is selected the browser's prefered language is used."
1432
  msgstr ""
1433
 
1434
- #: admin/templates/map-settings.php:25
1435
  msgid "Map region"
1436
  msgstr ""
1437
 
1438
- #: admin/templates/map-settings.php:25
1439
  #, php-format
1440
  msgid ""
1441
  "This will bias the geocoding results towards the selected region. %s If no "
1442
  "region is selected the bias is set to the United States."
1443
  msgstr ""
1444
 
1445
- #: admin/templates/map-settings.php:31 admin/templates/map-settings.php:73
1446
- #: admin/templates/map-settings.php:163 admin/templates/map-settings.php:256
1447
- #: admin/templates/map-settings.php:282 admin/templates/map-settings.php:332
1448
- #: admin/templates/map-settings.php:358 admin/templates/map-settings.php:455
1449
- #: admin/templates/map-settings.php:476
1450
  msgid "Save Changes"
1451
  msgstr ""
1452
 
1453
- #: admin/templates/map-settings.php:41 admin/templates/map-settings.php:383
1454
- #: admin/templates/map-settings.php:384 frontend/templates/default.php:43
1455
- #: frontend/templates/store-listings-below.php:43 inc/wpsl-functions.php:97
1456
  msgid "Search"
1457
  msgstr ""
1458
 
1459
- #: admin/templates/map-settings.php:44
1460
  msgid "Show the max results dropdown?"
1461
  msgstr ""
1462
 
1463
- #: admin/templates/map-settings.php:48
1464
  msgid "Show the search radius dropdown?"
1465
  msgstr ""
1466
 
1467
- #: admin/templates/map-settings.php:52
1468
  msgid "Show the category dropdown?"
1469
  msgstr ""
1470
 
1471
- #: admin/templates/map-settings.php:56
1472
  msgid "Distance unit"
1473
  msgstr ""
1474
 
1475
- #: admin/templates/map-settings.php:59
1476
  msgid "km"
1477
  msgstr ""
1478
 
1479
- #: admin/templates/map-settings.php:61
1480
  msgid "mi"
1481
  msgstr ""
1482
 
1483
- #: admin/templates/map-settings.php:65
1484
  msgid "Max search results"
1485
  msgstr ""
1486
 
1487
- #: admin/templates/map-settings.php:65 admin/templates/map-settings.php:69
1488
  msgid "The default value is set between the [ ]."
1489
  msgstr ""
1490
 
1491
- #: admin/templates/map-settings.php:69
1492
  msgid "Search radius options"
1493
  msgstr ""
1494
 
1495
- #: admin/templates/map-settings.php:83
1496
  msgid "Map"
1497
  msgstr ""
1498
 
1499
- #: admin/templates/map-settings.php:86
1500
  msgid "Attempt to auto-locate the user"
1501
  msgstr ""
1502
 
1503
- #: admin/templates/map-settings.php:90
1504
  msgid "Load locations on page load"
1505
  msgstr ""
1506
 
1507
- #: admin/templates/map-settings.php:94
1508
  msgid "Number of locations to show"
1509
  msgstr ""
1510
 
1511
- #: admin/templates/map-settings.php:94
1512
  #, php-format
1513
  msgid ""
1514
  "Although the location data is cached after the first load, a lower number "
@@ -1516,11 +1513,11 @@ msgid ""
1516
  "or set to 0, then all locations are loaded."
1517
  msgstr ""
1518
 
1519
- #: admin/templates/map-settings.php:98
1520
  msgid "Start point"
1521
  msgstr ""
1522
 
1523
- #: admin/templates/map-settings.php:98
1524
  #, php-format
1525
  msgid ""
1526
  "%sRequired field.%s %s If auto-locating the user is disabled or fails, the "
@@ -1528,15 +1525,15 @@ msgid ""
1528
  "point for the user."
1529
  msgstr ""
1530
 
1531
- #: admin/templates/map-settings.php:103
1532
  msgid "Initial zoom level"
1533
  msgstr ""
1534
 
1535
- #: admin/templates/map-settings.php:107
1536
  msgid "Max auto zoom level"
1537
  msgstr ""
1538
 
1539
- #: admin/templates/map-settings.php:107
1540
  #, php-format
1541
  msgid ""
1542
  "This value sets the zoom level for the \"Zoom here\" link in the info "
@@ -1544,12 +1541,8 @@ msgid ""
1544
  "is changed to make all the markers fit on the screen."
1545
  msgstr ""
1546
 
1547
- #: admin/templates/map-settings.php:111
1548
- msgid "Show the street view controls?"
1549
- msgstr ""
1550
-
1551
  #: admin/templates/map-settings.php:115
1552
- msgid "Show the pan controls?"
1553
  msgstr ""
1554
 
1555
  #: admin/templates/map-settings.php:119
@@ -1573,32 +1566,20 @@ msgid "Right"
1573
  msgstr ""
1574
 
1575
  #: admin/templates/map-settings.php:136
1576
- msgid "Zoom control style"
1577
- msgstr ""
1578
-
1579
- #: admin/templates/map-settings.php:139
1580
- msgid "Small"
1581
- msgstr ""
1582
-
1583
- #: admin/templates/map-settings.php:141
1584
- msgid "Large"
1585
- msgstr ""
1586
-
1587
- #: admin/templates/map-settings.php:145
1588
  msgid "Map type"
1589
  msgstr ""
1590
 
1591
- #: admin/templates/map-settings.php:149
1592
  msgid "Map style"
1593
  msgstr ""
1594
 
1595
- #: admin/templates/map-settings.php:149
1596
  msgid ""
1597
  "Custom map styles only work if the map type is set to \"Roadmap\" or "
1598
  "\"Terrain\"."
1599
  msgstr ""
1600
 
1601
- #: admin/templates/map-settings.php:152
1602
  #, php-format
1603
  msgid ""
1604
  "You can use existing map styles from %sSnazzy Maps%s or %sMap Stylr%s and "
@@ -1606,81 +1587,81 @@ msgid ""
1606
  "through the %sMap Style Editor%s or %sStyled Maps Wizard%s."
1607
  msgstr ""
1608
 
1609
- #: admin/templates/map-settings.php:153
1610
  #, php-format
1611
  msgid ""
1612
  "If you like to write the style code yourself, then you can find the "
1613
  "documentation from Google %shere%s."
1614
  msgstr ""
1615
 
1616
- #: admin/templates/map-settings.php:155
1617
  msgid "Preview Map Style"
1618
  msgstr ""
1619
 
1620
- #: admin/templates/map-settings.php:159
1621
  msgid "Show credits?"
1622
  msgstr ""
1623
 
1624
- #: admin/templates/map-settings.php:159
1625
  msgid ""
1626
  "This will place a \"Search provided by WP Store Locator\" backlink below the "
1627
  "map."
1628
  msgstr ""
1629
 
1630
- #: admin/templates/map-settings.php:173
1631
  msgid "User Experience"
1632
  msgstr ""
1633
 
1634
- #: admin/templates/map-settings.php:176
1635
  msgid "Store Locator height"
1636
  msgstr ""
1637
 
1638
- #: admin/templates/map-settings.php:180
1639
  msgid "Max width for the info window content"
1640
  msgstr ""
1641
 
1642
- #: admin/templates/map-settings.php:184
1643
  msgid "Search field width"
1644
  msgstr ""
1645
 
1646
- #: admin/templates/map-settings.php:188
1647
  msgid "Search and radius label width"
1648
  msgstr ""
1649
 
1650
- #: admin/templates/map-settings.php:192
1651
  msgid "Store Locator template"
1652
  msgstr ""
1653
 
1654
- #: admin/templates/map-settings.php:192
1655
  #, php-format
1656
  msgid ""
1657
  "The selected template is used with the [wpsl] shortcode. %s You can add a "
1658
  "custom template with the %swpsl_templates%s filter."
1659
  msgstr ""
1660
 
1661
- #: admin/templates/map-settings.php:196
1662
  msgid "Hide the scrollbar?"
1663
  msgstr ""
1664
 
1665
- #: admin/templates/map-settings.php:200
1666
  msgid "Open links in a new window?"
1667
  msgstr ""
1668
 
1669
- #: admin/templates/map-settings.php:204
1670
  msgid "Show a reset map button?"
1671
  msgstr ""
1672
 
1673
- #: admin/templates/map-settings.php:208
1674
  msgid ""
1675
  "When a user clicks on \"Directions\", open a new window, and show the route "
1676
  "on google.com/maps ?"
1677
  msgstr ""
1678
 
1679
- #: admin/templates/map-settings.php:212
1680
  msgid "Show a \"More info\" link in the store listings?"
1681
  msgstr ""
1682
 
1683
- #: admin/templates/map-settings.php:212
1684
  #, php-format
1685
  msgid ""
1686
  "This places a \"More Info\" link below the address and will show the phone, "
@@ -1689,32 +1670,32 @@ msgid ""
1689
  "follow the instructions on %sthis%s page."
1690
  msgstr ""
1691
 
1692
- #: admin/templates/map-settings.php:216
1693
  msgid "Where do you want to show the \"More info\" details?"
1694
  msgstr ""
1695
 
1696
- #: admin/templates/map-settings.php:220
1697
  msgid "Make the store name clickable if a store URL exists?"
1698
  msgstr ""
1699
 
1700
- #: admin/templates/map-settings.php:220
1701
  #, php-format
1702
  msgid ""
1703
  "If %spermalinks%s are enabled, the store name will always link to the store "
1704
  "page."
1705
  msgstr ""
1706
 
1707
- #: admin/templates/map-settings.php:224
1708
  msgid "Make the phone number clickable on mobile devices?"
1709
  msgstr ""
1710
 
1711
- #: admin/templates/map-settings.php:228
1712
  msgid ""
1713
  "If street view is available for the current location, then show a \"Street "
1714
  "view\" link in the info window?"
1715
  msgstr ""
1716
 
1717
- #: admin/templates/map-settings.php:228
1718
  #, php-format
1719
  msgid ""
1720
  "Enabling this option can sometimes result in a small delay in the opening of "
@@ -1722,22 +1703,22 @@ msgid ""
1722
  "Maps to check if street view is available for the current location."
1723
  msgstr ""
1724
 
1725
- #: admin/templates/map-settings.php:232
1726
  msgid "Show a \"Zoom here\" link in the info window?"
1727
  msgstr ""
1728
 
1729
- #: admin/templates/map-settings.php:232
1730
  #, php-format
1731
  msgid ""
1732
  "Clicking this link will make the map zoom in to the %s max auto zoom level "
1733
  "%s."
1734
  msgstr ""
1735
 
1736
- #: admin/templates/map-settings.php:236
1737
  msgid "On page load move the mouse cursor to the search field?"
1738
  msgstr ""
1739
 
1740
- #: admin/templates/map-settings.php:236
1741
  #, php-format
1742
  msgid ""
1743
  "If the store locator is not placed at the top of the page, enabling this "
@@ -1745,11 +1726,11 @@ msgid ""
1745
  "on mobile devices.%s"
1746
  msgstr ""
1747
 
1748
- #: admin/templates/map-settings.php:240
1749
  msgid "Use the default style for the info window?"
1750
  msgstr ""
1751
 
1752
- #: admin/templates/map-settings.php:240
1753
  #, php-format
1754
  msgid ""
1755
  "If the default style is disabled the %sInfoBox%s library will be used "
@@ -1757,15 +1738,15 @@ msgid ""
1757
  "window through the .wpsl-infobox css class."
1758
  msgstr ""
1759
 
1760
- #: admin/templates/map-settings.php:244
1761
  msgid "Hide the distance in the search results?"
1762
  msgstr ""
1763
 
1764
- #: admin/templates/map-settings.php:248
1765
  msgid "If a user hovers over the search results the store marker"
1766
  msgstr ""
1767
 
1768
- #: admin/templates/map-settings.php:248
1769
  #, php-format
1770
  msgid ""
1771
  "If marker clusters are enabled this option will not work as expected as long "
@@ -1775,256 +1756,268 @@ msgid ""
1775
  "it won't be clear to which marker it belongs to. "
1776
  msgstr ""
1777
 
1778
- #: admin/templates/map-settings.php:252
1779
  msgid "Address format"
1780
  msgstr ""
1781
 
1782
- #: admin/templates/map-settings.php:252
1783
  #, php-format
1784
  msgid ""
1785
  "You can add custom address formats with the %swpsl_address_formats%s filter."
1786
  msgstr ""
1787
 
1788
- #: admin/templates/map-settings.php:266
1789
  msgid "Markers"
1790
  msgstr ""
1791
 
1792
- #: admin/templates/map-settings.php:270
1793
  msgid "Enable marker clusters?"
1794
  msgstr ""
1795
 
1796
- #: admin/templates/map-settings.php:270
1797
  msgid "Recommended for maps with a large amount of markers."
1798
  msgstr ""
1799
 
1800
- #: admin/templates/map-settings.php:274
1801
  msgid "Max zoom level"
1802
  msgstr ""
1803
 
1804
- #: admin/templates/map-settings.php:274
1805
  msgid ""
1806
  "If this zoom level is reached or exceeded, then all markers are moved out of "
1807
  "the marker cluster and shown as individual markers."
1808
  msgstr ""
1809
 
1810
- #: admin/templates/map-settings.php:278
1811
  msgid "Cluster size"
1812
  msgstr ""
1813
 
1814
- #: admin/templates/map-settings.php:278
1815
  #, php-format
1816
  msgid ""
1817
  "The grid size of a cluster in pixels. %s A larger number will result in a "
1818
  "lower amount of clusters and also make the algorithm run faster."
1819
  msgstr ""
1820
 
1821
- #: admin/templates/map-settings.php:292
1822
  msgid "Store Editor"
1823
  msgstr ""
1824
 
1825
- #: admin/templates/map-settings.php:295
1826
  msgid "Default country"
1827
  msgstr ""
1828
 
1829
- #: admin/templates/map-settings.php:299
1830
  msgid "Map type for the location preview"
1831
  msgstr ""
1832
 
1833
- #: admin/templates/map-settings.php:303
1834
  msgid "Hide the opening hours?"
1835
  msgstr ""
1836
 
1837
- #: admin/templates/map-settings.php:309
1838
  msgid "Opening hours input type"
1839
  msgstr ""
1840
 
1841
- #: admin/templates/map-settings.php:313
1842
  #, php-format
1843
  msgid ""
1844
  "Opening hours created in version 1.x %sare not%s automatically converted to "
1845
  "the new dropdown format."
1846
  msgstr ""
1847
 
1848
- #: admin/templates/map-settings.php:316 admin/templates/map-settings.php:325
1849
  msgid "The default opening hours"
1850
  msgstr ""
1851
 
1852
- #: admin/templates/map-settings.php:322
1853
  msgid "Opening hours format"
1854
  msgstr ""
1855
 
1856
- #: admin/templates/map-settings.php:329
1857
  msgid ""
1858
  "The default country and opening hours are only used when a new store is "
1859
  "created. So changing the default values will have no effect on existing "
1860
  "store locations."
1861
  msgstr ""
1862
 
1863
- #: admin/templates/map-settings.php:342
1864
  msgid "Permalink"
1865
  msgstr ""
1866
 
1867
- #: admin/templates/map-settings.php:345
1868
  msgid "Enable permalink?"
1869
  msgstr ""
1870
 
1871
- #: admin/templates/map-settings.php:349
1872
  msgid "Store slug"
1873
  msgstr ""
1874
 
1875
- #: admin/templates/map-settings.php:353
1876
  msgid "Category slug"
1877
  msgstr ""
1878
 
1879
- #: admin/templates/map-settings.php:356
1880
  #, php-format
1881
  msgid "The permalink slugs %smust be unique%s on your site."
1882
  msgstr ""
1883
 
1884
- #: admin/templates/map-settings.php:368
1885
  msgid "Labels"
1886
  msgstr ""
1887
 
1888
- #: admin/templates/map-settings.php:371 admin/templates/map-settings.php:372
 
 
 
 
 
 
 
 
 
 
 
 
1889
  #: frontend/templates/default.php:11
1890
- #: frontend/templates/store-listings-below.php:11 inc/wpsl-functions.php:96
1891
  msgid "Your location"
1892
  msgstr ""
1893
 
1894
- #: admin/templates/map-settings.php:375 admin/templates/map-settings.php:376
1895
  #: frontend/templates/default.php:20
1896
- #: frontend/templates/store-listings-below.php:20 inc/wpsl-functions.php:99
1897
  msgid "Search radius"
1898
  msgstr ""
1899
 
1900
- #: admin/templates/map-settings.php:379 admin/templates/map-settings.php:380
1901
- #: frontend/class-frontend.php:1296 inc/wpsl-functions.php:100
1902
  msgid "No results found"
1903
  msgstr ""
1904
 
1905
- #: admin/templates/map-settings.php:387
1906
  msgid "Searching (preloader text)"
1907
  msgstr ""
1908
 
1909
- #: admin/templates/map-settings.php:388 frontend/class-frontend.php:1295
1910
- #: inc/wpsl-functions.php:98
1911
  msgid "Searching..."
1912
  msgstr ""
1913
 
1914
- #: admin/templates/map-settings.php:391 admin/templates/map-settings.php:392
1915
  #: frontend/templates/default.php:29
1916
- #: frontend/templates/store-listings-below.php:29 inc/wpsl-functions.php:101
1917
  msgid "Results"
1918
  msgstr ""
1919
 
1920
- #: admin/templates/map-settings.php:395 admin/upgrade.php:218
1921
- #: inc/wpsl-functions.php:115
1922
  msgid "Category filter"
1923
  msgstr ""
1924
 
1925
- #: admin/templates/map-settings.php:396 frontend/class-frontend.php:1082
1926
  msgid "Category"
1927
  msgstr ""
1928
 
1929
- #: admin/templates/map-settings.php:399 admin/templates/map-settings.php:400
1930
- #: admin/upgrade.php:66 frontend/class-frontend.php:1297
1931
  #: frontend/underscore-functions.php:114 frontend/underscore-functions.php:141
1932
- #: inc/wpsl-functions.php:102
1933
  msgid "More info"
1934
  msgstr ""
1935
 
1936
- #: admin/templates/map-settings.php:403 admin/templates/map-settings.php:404
1937
- #: frontend/class-frontend.php:661 frontend/underscore-functions.php:29
1938
- #: frontend/underscore-functions.php:121 inc/wpsl-functions.php:110
1939
  msgid "Phone"
1940
  msgstr ""
1941
 
1942
- #: admin/templates/map-settings.php:423 admin/templates/map-settings.php:424
1943
- #: frontend/class-frontend.php:1302 inc/wpsl-functions.php:95
1944
  msgid "Start location"
1945
  msgstr ""
1946
 
1947
- #: admin/templates/map-settings.php:427
1948
  msgid "Get directions"
1949
  msgstr ""
1950
 
1951
- #: admin/templates/map-settings.php:428 frontend/class-frontend.php:1300
1952
- #: inc/wpsl-functions.php:103
1953
  msgid "Directions"
1954
  msgstr ""
1955
 
1956
- #: admin/templates/map-settings.php:431
1957
  msgid "No directions found"
1958
  msgstr ""
1959
 
1960
- #: admin/templates/map-settings.php:432 admin/upgrade.php:163
1961
- #: frontend/class-frontend.php:1301 inc/wpsl-functions.php:104
1962
  msgid "No route could be found between the origin and destination"
1963
  msgstr ""
1964
 
1965
- #: admin/templates/map-settings.php:435 admin/templates/map-settings.php:436
1966
- #: admin/upgrade.php:87 frontend/class-frontend.php:1303
1967
- #: inc/wpsl-functions.php:105
1968
  msgid "Back"
1969
  msgstr ""
1970
 
1971
- #: admin/templates/map-settings.php:439 admin/templates/map-settings.php:440
1972
- #: admin/upgrade.php:155 frontend/class-frontend.php:1304
1973
- #: inc/wpsl-functions.php:106
1974
  msgid "Street view"
1975
  msgstr ""
1976
 
1977
- #: admin/templates/map-settings.php:443 admin/templates/map-settings.php:444
1978
- #: admin/upgrade.php:159 frontend/class-frontend.php:1305
1979
- #: inc/wpsl-functions.php:107
1980
  msgid "Zoom here"
1981
  msgstr ""
1982
 
1983
- #: admin/templates/map-settings.php:447
1984
  msgid "General error"
1985
  msgstr ""
1986
 
1987
- #: admin/templates/map-settings.php:448 frontend/class-frontend.php:1298
1988
- #: inc/wpsl-functions.php:108
1989
  msgid "Something went wrong, please try again!"
1990
  msgstr ""
1991
 
1992
- #: admin/templates/map-settings.php:451
1993
  msgid "Query limit error"
1994
  msgstr ""
1995
 
1996
- #: admin/templates/map-settings.php:451
1997
  #, php-format
1998
  msgid ""
1999
  "You can raise the %susage limit%s by obtaining an API %skey%s, and fill in "
2000
  "the \"API key\" field at the top of this page."
2001
  msgstr ""
2002
 
2003
- #: admin/templates/map-settings.php:452 frontend/class-frontend.php:1299
2004
- #: inc/wpsl-functions.php:109
2005
  msgid "API usage limit reached"
2006
  msgstr ""
2007
 
2008
- #: admin/templates/map-settings.php:465
2009
  msgid "Tools"
2010
  msgstr ""
2011
 
2012
- #: admin/templates/map-settings.php:468
2013
  msgid "Enable store locator debug?"
2014
  msgstr ""
2015
 
2016
- #: admin/templates/map-settings.php:468
2017
  #, php-format
2018
  msgid ""
2019
  "This disables the WPSL transient cache. %sThe transient cache is only used "
2020
  "if the %sLoad locations on page load%s option is enabled."
2021
  msgstr ""
2022
 
2023
- #: admin/templates/map-settings.php:472
2024
  msgid "WPSL transients"
2025
  msgstr ""
2026
 
2027
- #: admin/templates/map-settings.php:473
2028
  msgid "Clear store locator transient cache"
2029
  msgstr ""
2030
 
@@ -2036,22 +2029,22 @@ msgstr ""
2036
  msgid "Reset"
2037
  msgstr ""
2038
 
2039
- #: admin/upgrade.php:186 inc/wpsl-functions.php:90
2040
  msgid "stores"
2041
  msgstr ""
2042
 
2043
- #: admin/upgrade.php:190 inc/wpsl-functions.php:91
2044
  msgid "store-category"
2045
  msgstr ""
2046
 
2047
- #: admin/upgrade.php:371
2048
  #, php-format
2049
  msgid ""
2050
  "Because you updated WP Store Locator from version 1.x, the %s current store "
2051
  "locations need to be %sconverted%s to custom post types."
2052
  msgstr ""
2053
 
2054
- #: admin/upgrade.php:392
2055
  #, php-format
2056
  msgid ""
2057
  "The script converting the locations timed out. %s You can click the \"Start "
@@ -2062,56 +2055,56 @@ msgid ""
2062
  "but if you are reading this then that failed."
2063
  msgstr ""
2064
 
2065
- #: admin/upgrade.php:413
2066
  msgid "Store locations to convert:"
2067
  msgstr ""
2068
 
2069
- #: admin/upgrade.php:415
2070
  msgid "Start Converting"
2071
  msgstr ""
2072
 
2073
- #: admin/upgrade.php:537
2074
  #, php-format
2075
  msgid ""
2076
  "All the store locations are now converted to custom post types. %s You can "
2077
  "view them on the %sAll Stores%s page."
2078
  msgstr ""
2079
 
2080
- #: frontend/class-frontend.php:599
2081
  msgid ""
2082
  "If you use the [wpsl_address] shortcode outside a store page you need to set "
2083
  "the ID attribute."
2084
  msgstr ""
2085
 
2086
- #: frontend/class-frontend.php:710
2087
  msgid ""
2088
  "If you use the [wpsl_hours] shortcode outside a store page you need to set "
2089
  "the ID attribute."
2090
  msgstr ""
2091
 
2092
- #: frontend/class-frontend.php:759
2093
  msgid ""
2094
  "If you use the [wpsl_map] shortcode outside a store page you need to set the "
2095
  "ID attribute."
2096
  msgstr ""
2097
 
2098
- #: frontend/class-frontend.php:1084
2099
  msgid "Any"
2100
  msgstr ""
2101
 
2102
- #: frontend/class-frontend.php:1197
2103
  msgid "The application does not have permission to use the Geolocation API."
2104
  msgstr ""
2105
 
2106
- #: frontend/class-frontend.php:1198
2107
  msgid "Location information is unavailable."
2108
  msgstr ""
2109
 
2110
- #: frontend/class-frontend.php:1199
2111
  msgid "The geolocation request timed out."
2112
  msgstr ""
2113
 
2114
- #: frontend/class-frontend.php:1200
2115
  msgid "An unknown error occurred."
2116
  msgstr ""
2117
 
@@ -2221,75 +2214,75 @@ msgstr ""
2221
  msgid "Zip"
2222
  msgstr ""
2223
 
2224
- #: inc/wpsl-functions.php:184
2225
  msgid "Show the store list below the map"
2226
  msgstr ""
2227
 
2228
- #: inc/wpsl-functions.php:201
2229
  msgid "Monday"
2230
  msgstr ""
2231
 
2232
- #: inc/wpsl-functions.php:202
2233
  msgid "Tuesday"
2234
  msgstr ""
2235
 
2236
- #: inc/wpsl-functions.php:203
2237
  msgid "Wednesday"
2238
  msgstr ""
2239
 
2240
- #: inc/wpsl-functions.php:204
2241
  msgid "Thursday"
2242
  msgstr ""
2243
 
2244
- #: inc/wpsl-functions.php:205
2245
  msgid "Friday"
2246
  msgstr ""
2247
 
2248
- #: inc/wpsl-functions.php:206
2249
  msgid "Saturday"
2250
  msgstr ""
2251
 
2252
- #: inc/wpsl-functions.php:207
2253
  msgid "Sunday"
2254
  msgstr ""
2255
 
2256
- #: inc/wpsl-functions.php:237
2257
  #, php-format
2258
  msgid "Mon %sTue %sWed %sThu %sFri %sSat Closed %sSun Closed"
2259
  msgstr ""
2260
 
2261
- #: inc/wpsl-functions.php:253
2262
  msgid "Satellite"
2263
  msgstr ""
2264
 
2265
- #: inc/wpsl-functions.php:254
2266
  msgid "Hybrid"
2267
  msgstr ""
2268
 
2269
- #: inc/wpsl-functions.php:255
2270
  msgid "Terrain"
2271
  msgstr ""
2272
 
2273
- #: inc/wpsl-functions.php:270
2274
  msgid "(city) (state) (zip code)"
2275
  msgstr ""
2276
 
2277
- #: inc/wpsl-functions.php:271
2278
  msgid "(city), (state) (zip code)"
2279
  msgstr ""
2280
 
2281
- #: inc/wpsl-functions.php:272
2282
  msgid "(city) (zip code)"
2283
  msgstr ""
2284
 
2285
- #: inc/wpsl-functions.php:273
2286
  msgid "(city), (zip code)"
2287
  msgstr ""
2288
 
2289
- #: inc/wpsl-functions.php:274
2290
  msgid "(zip code) (city) (state)"
2291
  msgstr ""
2292
 
2293
- #: inc/wpsl-functions.php:275
2294
  msgid "(zip code) (city)"
2295
  msgstr ""
1
+ #, fuzzy
2
  msgid ""
3
  msgstr ""
4
  "Project-Id-Version: WP Store Locator v2.0\n"
5
  "Report-Msgid-Bugs-To: \n"
6
+ "POT-Creation-Date: 2015-11-23 12:03+0100\n"
7
  "PO-Revision-Date: 2015-09-01 13:49+0100\n"
8
  "Last-Translator: \n"
9
  "Language-Team: \n"
12
  "Content-Type: text/plain; charset=UTF-8\n"
13
  "Content-Transfer-Encoding: 8bit\n"
14
  "Plural-Forms: nplurals=2; plural=n != 1;\n"
15
+ "X-Generator: Poedit 1.8.4\n"
16
  "X-Poedit-SourceCharset: UTF-8\n"
17
  "X-Poedit-KeywordsList: __;_e;__ngettext:1,2;_n:1,2;__ngettext_noop:1,2;"
18
  "_n_noop:1,2;_c,_nc:4c,1,2;_x:1,2c;_ex:1,2c;_nx:4c,1,2;_nx_noop:4c,1,2\n"
19
+ "X-Poedit-Basepath: ..\n"
20
  "X-Textdomain-Support: yes\n"
21
  "X-Poedit-SearchPath-0: .\n"
22
 
34
  "a start point on the %ssettings%s page. %sDismiss%s"
35
  msgstr ""
36
 
37
+ #: admin/class-admin.php:150 admin/templates/map-settings.php:8
 
38
  msgid "Settings"
39
+ msgstr ""
40
 
41
  #: admin/class-admin.php:264
42
  msgid "Cannot determine the address at this location."
46
  msgid "Geocode was not successful for the following reason"
47
  msgstr ""
48
 
49
+ #: admin/class-admin.php:266 admin/upgrade.php:406
50
  msgid "Security check failed, reload the page and try again."
51
  msgstr ""
52
 
58
  msgid "The map preview requires all the location details."
59
  msgstr ""
60
 
61
+ #: admin/class-admin.php:269 admin/class-metaboxes.php:505
62
+ #: frontend/class-frontend.php:493
63
  msgid "Closed"
64
  msgstr ""
65
 
155
  msgid "Opening Hours"
156
  msgstr ""
157
 
158
+ #: admin/class-metaboxes.php:82 admin/templates/map-settings.php:421
159
+ #: admin/templates/map-settings.php:422 frontend/underscore-functions.php:133
160
+ #: inc/wpsl-functions.php:116
161
  msgid "Hours"
162
  msgstr ""
163
 
169
  msgid "Tel"
170
  msgstr ""
171
 
172
+ #: admin/class-metaboxes.php:91 admin/templates/map-settings.php:409
173
+ #: admin/templates/map-settings.php:410 frontend/class-frontend.php:677
174
  #: frontend/underscore-functions.php:32 frontend/underscore-functions.php:124
175
+ #: inc/wpsl-functions.php:113
176
  msgid "Fax"
177
  msgstr ""
178
 
179
+ #: admin/class-metaboxes.php:94 admin/templates/map-settings.php:413
180
+ #: admin/templates/map-settings.php:414 admin/upgrade.php:210
181
+ #: frontend/class-frontend.php:681 frontend/underscore-functions.php:35
182
+ #: frontend/underscore-functions.php:127 inc/wpsl-functions.php:114
 
183
  msgid "Email"
184
+ msgstr ""
185
 
186
+ #: admin/class-metaboxes.php:97 admin/templates/map-settings.php:417
187
+ #: admin/templates/map-settings.php:418 admin/upgrade.php:214
188
+ #: frontend/class-frontend.php:686 inc/wpsl-functions.php:115
189
  msgid "Url"
190
  msgstr ""
191
 
192
+ #: admin/class-metaboxes.php:427
193
  msgid "Hour format"
194
  msgstr ""
195
 
196
+ #: admin/class-metaboxes.php:434
197
  msgid "Days"
198
  msgstr ""
199
 
200
+ #: admin/class-metaboxes.php:435
201
  msgid "Opening Periods"
202
  msgstr ""
203
 
204
+ #: admin/class-metaboxes.php:682
205
  msgid "Failed to publish the store. Please fill in the required store details."
206
  msgstr ""
207
 
208
+ #: admin/class-metaboxes.php:818
209
  msgid "Preview Location"
210
  msgstr ""
211
 
212
+ #: admin/class-metaboxes.php:819
213
  #, php-format
214
  msgid ""
215
  "The map preview is based on the provided address, city and country details. "
216
  "%s It will ignore any custom latitude or longitude values."
217
  msgstr ""
218
 
219
+ #: admin/class-metaboxes.php:820
220
  msgid "You can drag the marker to adjust the exact location of the marker."
221
  msgstr ""
222
 
223
+ #: admin/class-metaboxes.php:840 admin/class-metaboxes.php:843
224
  msgid "Store updated."
225
  msgstr ""
226
 
227
+ #: admin/class-metaboxes.php:841
228
  msgid "Custom field updated."
229
  msgstr ""
230
 
231
+ #: admin/class-metaboxes.php:842
232
  msgid "Custom field deleted."
233
  msgstr ""
234
 
235
+ #: admin/class-metaboxes.php:844
236
  #, php-format
237
  msgid "Store restored to revision from %s"
238
  msgstr ""
239
 
240
+ #: admin/class-metaboxes.php:845
241
  msgid "Store published."
242
  msgstr ""
243
 
244
+ #: admin/class-metaboxes.php:846
245
  msgid "Store saved."
246
  msgstr ""
247
 
248
+ #: admin/class-metaboxes.php:847
249
  msgid "Store submitted."
250
  msgstr ""
251
 
252
+ #: admin/class-metaboxes.php:849
253
  #, php-format
254
  msgid "Store scheduled for: <strong>%1$s</strong>."
255
  msgstr ""
256
 
257
+ #: admin/class-metaboxes.php:850
258
  msgid "M j, Y @ G:i"
259
  msgstr ""
260
 
261
+ #: admin/class-metaboxes.php:852
262
  msgid "Store draft updated."
263
  msgstr ""
264
 
265
+ #: admin/class-metaboxes.php:858
266
  msgid "View store"
267
  msgstr ""
268
 
269
+ #: admin/class-metaboxes.php:864
270
  msgid "Preview store"
271
  msgstr ""
272
 
274
  msgid "WP Store Locator Transients Cleared"
275
  msgstr ""
276
 
277
+ #: admin/class-settings.php:371
278
  msgid ""
279
  "The max results field cannot be empty, the default value has been restored."
280
  msgstr ""
281
 
282
+ #: admin/class-settings.php:374
283
  msgid ""
284
  "The search radius field cannot be empty, the default value has been restored."
285
  msgstr ""
286
 
287
+ #: admin/class-settings.php:377
288
  #, php-format
289
  msgid ""
290
  "Please provide the name of a city or country that can be used as a starting "
292
  "user fails, or the option itself is disabled."
293
  msgstr ""
294
 
295
+ #: admin/class-settings.php:398
 
296
  msgid "Select your language"
297
+ msgstr ""
298
 
299
+ #: admin/class-settings.php:399
300
  msgid "English"
301
  msgstr ""
302
 
303
+ #: admin/class-settings.php:400
304
  msgid "Arabic"
305
  msgstr ""
306
 
307
+ #: admin/class-settings.php:401
308
  msgid "Basque"
309
  msgstr ""
310
 
311
+ #: admin/class-settings.php:402
312
  msgid "Bulgarian"
313
  msgstr ""
314
 
315
+ #: admin/class-settings.php:403
316
  msgid "Bengali"
317
  msgstr ""
318
 
319
+ #: admin/class-settings.php:404
320
  msgid "Catalan"
321
  msgstr ""
322
 
323
+ #: admin/class-settings.php:405
324
  msgid "Czech"
325
  msgstr ""
326
 
327
+ #: admin/class-settings.php:406
328
  msgid "Danish"
329
  msgstr ""
330
 
331
+ #: admin/class-settings.php:407
332
  msgid "German"
333
  msgstr ""
334
 
335
+ #: admin/class-settings.php:408
336
  msgid "Greek"
337
  msgstr ""
338
 
339
+ #: admin/class-settings.php:409
340
  msgid "English (Australian)"
341
  msgstr ""
342
 
343
+ #: admin/class-settings.php:410
344
  msgid "English (Great Britain)"
345
  msgstr ""
346
 
347
+ #: admin/class-settings.php:411
348
  msgid "Spanish"
349
  msgstr ""
350
 
351
+ #: admin/class-settings.php:412
352
  msgid "Farsi"
353
  msgstr ""
354
 
355
+ #: admin/class-settings.php:413
356
  msgid "Finnish"
357
  msgstr ""
358
 
359
+ #: admin/class-settings.php:414
360
  msgid "Filipino"
361
  msgstr ""
362
 
363
+ #: admin/class-settings.php:415
364
  msgid "French"
365
  msgstr ""
366
 
367
+ #: admin/class-settings.php:416
368
  msgid "Galician"
369
  msgstr ""
370
 
371
+ #: admin/class-settings.php:417
372
  msgid "Gujarati"
373
  msgstr ""
374
 
375
+ #: admin/class-settings.php:418
376
  msgid "Hindi"
377
  msgstr ""
378
 
379
+ #: admin/class-settings.php:419
380
  msgid "Croatian"
381
  msgstr ""
382
 
383
+ #: admin/class-settings.php:420
384
  msgid "Hungarian"
385
  msgstr ""
386
 
387
+ #: admin/class-settings.php:421
388
  msgid "Indonesian"
389
  msgstr ""
390
 
391
+ #: admin/class-settings.php:422
392
  msgid "Italian"
393
  msgstr ""
394
 
395
+ #: admin/class-settings.php:423
396
  msgid "Hebrew"
397
  msgstr ""
398
 
399
+ #: admin/class-settings.php:424
400
  msgid "Japanese"
401
  msgstr ""
402
 
403
+ #: admin/class-settings.php:425
404
  msgid "Kannada"
405
  msgstr ""
406
 
407
+ #: admin/class-settings.php:426
408
  msgid "Korean"
409
  msgstr ""
410
 
411
+ #: admin/class-settings.php:427
412
  msgid "Lithuanian"
413
  msgstr ""
414
 
415
+ #: admin/class-settings.php:428
416
  msgid "Latvian"
417
  msgstr ""
418
 
419
+ #: admin/class-settings.php:429
420
  msgid "Malayalam"
421
  msgstr ""
422
 
423
+ #: admin/class-settings.php:430
424
  msgid "Marathi"
425
  msgstr ""
426
 
427
+ #: admin/class-settings.php:431
428
  msgid "Dutch"
429
  msgstr ""
430
 
431
+ #: admin/class-settings.php:432
432
  msgid "Norwegian"
433
  msgstr ""
434
 
435
+ #: admin/class-settings.php:433
436
  msgid "Norwegian Nynorsk"
437
  msgstr ""
438
 
439
+ #: admin/class-settings.php:434
440
  msgid "Polish"
441
  msgstr ""
442
 
443
+ #: admin/class-settings.php:435
444
  msgid "Portuguese"
445
  msgstr ""
446
 
447
+ #: admin/class-settings.php:436
448
  msgid "Portuguese (Brazil)"
449
  msgstr ""
450
 
451
+ #: admin/class-settings.php:437
452
  msgid "Portuguese (Portugal)"
453
  msgstr ""
454
 
455
+ #: admin/class-settings.php:438
456
  msgid "Romanian"
457
  msgstr ""
458
 
459
+ #: admin/class-settings.php:439
460
  msgid "Russian"
461
  msgstr ""
462
 
463
+ #: admin/class-settings.php:440
464
  msgid "Slovak"
465
  msgstr ""
466
 
467
+ #: admin/class-settings.php:441
468
  msgid "Slovenian"
469
  msgstr ""
470
 
471
+ #: admin/class-settings.php:442
472
  msgid "Serbian"
473
  msgstr ""
474
 
475
+ #: admin/class-settings.php:443
476
  msgid "Swedish"
477
  msgstr ""
478
 
479
+ #: admin/class-settings.php:444
480
  msgid "Tagalog"
481
  msgstr ""
482
 
483
+ #: admin/class-settings.php:445
484
  msgid "Tamil"
485
  msgstr ""
486
 
487
+ #: admin/class-settings.php:446
488
  msgid "Telugu"
489
  msgstr ""
490
 
491
+ #: admin/class-settings.php:447
492
  msgid "Thai"
493
  msgstr ""
494
 
495
+ #: admin/class-settings.php:448
496
  msgid "Turkish"
497
  msgstr ""
498
 
499
+ #: admin/class-settings.php:449
500
  msgid "Ukrainian"
501
  msgstr ""
502
 
503
+ #: admin/class-settings.php:450
504
  msgid "Vietnamese"
505
  msgstr ""
506
 
507
+ #: admin/class-settings.php:451
508
  msgid "Chinese (Simplified)"
509
  msgstr ""
510
 
511
+ #: admin/class-settings.php:452
512
  msgid "Chinese (Traditional)"
513
  msgstr ""
514
 
515
+ #: admin/class-settings.php:457
 
516
  msgid "Select your region"
517
+ msgstr ""
518
 
519
+ #: admin/class-settings.php:458
520
  msgid "Afghanistan"
521
  msgstr ""
522
 
523
+ #: admin/class-settings.php:459
524
  msgid "Albania"
525
  msgstr ""
526
 
527
+ #: admin/class-settings.php:460
528
  msgid "Algeria"
529
  msgstr ""
530
 
531
+ #: admin/class-settings.php:461
532
  msgid "American Samoa"
533
  msgstr ""
534
 
535
+ #: admin/class-settings.php:462
536
  msgid "Andorra"
537
  msgstr ""
538
 
539
+ #: admin/class-settings.php:463
540
  msgid "Anguilla"
541
  msgstr ""
542
 
543
+ #: admin/class-settings.php:464
544
  msgid "Angola"
545
  msgstr ""
546
 
547
+ #: admin/class-settings.php:465
548
  msgid "Antigua and Barbuda"
549
  msgstr ""
550
 
551
+ #: admin/class-settings.php:466
552
  msgid "Argentina"
553
  msgstr ""
554
 
555
+ #: admin/class-settings.php:467
556
  msgid "Armenia"
557
  msgstr ""
558
 
559
+ #: admin/class-settings.php:468
560
  msgid "Aruba"
561
  msgstr ""
562
 
563
+ #: admin/class-settings.php:469
564
  msgid "Australia"
565
  msgstr ""
566
 
567
+ #: admin/class-settings.php:470
568
  msgid "Austria"
569
  msgstr ""
570
 
571
+ #: admin/class-settings.php:471
572
  msgid "Azerbaijan"
573
  msgstr ""
574
 
575
+ #: admin/class-settings.php:472
576
  msgid "Bahamas"
577
  msgstr ""
578
 
579
+ #: admin/class-settings.php:473
580
  msgid "Bahrain"
581
  msgstr ""
582
 
583
+ #: admin/class-settings.php:474
584
  msgid "Bangladesh"
585
  msgstr ""
586
 
587
+ #: admin/class-settings.php:475
588
  msgid "Barbados"
589
  msgstr ""
590
 
591
+ #: admin/class-settings.php:476
592
  msgid "Belarus"
593
  msgstr ""
594
 
595
+ #: admin/class-settings.php:477
596
  msgid "Belgium"
597
  msgstr ""
598
 
599
+ #: admin/class-settings.php:478
600
  msgid "Belize"
601
  msgstr ""
602
 
603
+ #: admin/class-settings.php:479
604
  msgid "Benin"
605
  msgstr ""
606
 
607
+ #: admin/class-settings.php:480
608
  msgid "Bermuda"
609
  msgstr ""
610
 
611
+ #: admin/class-settings.php:481
612
  msgid "Bhutan"
613
  msgstr ""
614
 
615
+ #: admin/class-settings.php:482
616
  msgid "Bolivia"
617
  msgstr ""
618
 
619
+ #: admin/class-settings.php:483
620
  msgid "Bosnia and Herzegovina"
621
  msgstr ""
622
 
623
+ #: admin/class-settings.php:484
624
  msgid "Botswana"
625
  msgstr ""
626
 
627
+ #: admin/class-settings.php:485
628
  msgid "Brazil"
629
  msgstr ""
630
 
631
+ #: admin/class-settings.php:486
632
  msgid "British Indian Ocean Territory"
633
  msgstr ""
634
 
635
+ #: admin/class-settings.php:487
636
  msgid "Brunei"
637
  msgstr ""
638
 
639
+ #: admin/class-settings.php:488
640
  msgid "Bulgaria"
641
  msgstr ""
642
 
643
+ #: admin/class-settings.php:489
644
  msgid "Burkina Faso"
645
  msgstr ""
646
 
647
+ #: admin/class-settings.php:490
648
  msgid "Burundi"
649
  msgstr ""
650
 
651
+ #: admin/class-settings.php:491
652
  msgid "Cambodia"
653
  msgstr ""
654
 
655
+ #: admin/class-settings.php:492
656
  msgid "Cameroon"
657
  msgstr ""
658
 
659
+ #: admin/class-settings.php:493
660
  msgid "Canada"
661
  msgstr ""
662
 
663
+ #: admin/class-settings.php:494
664
  msgid "Cape Verde"
665
  msgstr ""
666
 
667
+ #: admin/class-settings.php:495
668
  msgid "Cayman Islands"
669
  msgstr ""
670
 
671
+ #: admin/class-settings.php:496
672
  msgid "Central African Republic"
673
  msgstr ""
674
 
675
+ #: admin/class-settings.php:497
676
  msgid "Chad"
677
  msgstr ""
678
 
679
+ #: admin/class-settings.php:498
680
  msgid "Chile"
681
  msgstr ""
682
 
683
+ #: admin/class-settings.php:499
684
  msgid "China"
685
  msgstr ""
686
 
687
+ #: admin/class-settings.php:500
688
  msgid "Christmas Island"
689
  msgstr ""
690
 
691
+ #: admin/class-settings.php:501
692
  msgid "Cocos Islands"
693
  msgstr ""
694
 
695
+ #: admin/class-settings.php:502
696
  msgid "Colombia"
697
  msgstr ""
698
 
699
+ #: admin/class-settings.php:503
700
  msgid "Comoros"
701
  msgstr ""
702
 
703
+ #: admin/class-settings.php:504
704
  msgid "Congo"
705
  msgstr ""
706
 
707
+ #: admin/class-settings.php:505
708
  msgid "Costa Rica"
709
  msgstr ""
710
 
711
+ #: admin/class-settings.php:506
712
  msgid "Côte d'Ivoire"
713
  msgstr ""
714
 
715
+ #: admin/class-settings.php:507
716
  msgid "Croatia"
717
  msgstr ""
718
 
719
+ #: admin/class-settings.php:508
720
  msgid "Cuba"
721
  msgstr ""
722
 
723
+ #: admin/class-settings.php:509
724
  msgid "Czech Republic"
725
  msgstr ""
726
 
727
+ #: admin/class-settings.php:510
728
  msgid "Denmark"
729
  msgstr ""
730
 
731
+ #: admin/class-settings.php:511
732
  msgid "Djibouti"
733
  msgstr ""
734
 
735
+ #: admin/class-settings.php:512
736
  msgid "Democratic Republic of the Congo"
737
  msgstr ""
738
 
739
+ #: admin/class-settings.php:513
740
  msgid "Dominica"
741
  msgstr ""
742
 
743
+ #: admin/class-settings.php:514
744
  msgid "Dominican Republic"
745
  msgstr ""
746
 
747
+ #: admin/class-settings.php:515
748
  msgid "Ecuador"
749
  msgstr ""
750
 
751
+ #: admin/class-settings.php:516
752
  msgid "Egypt"
753
  msgstr ""
754
 
755
+ #: admin/class-settings.php:517
756
  msgid "El Salvador"
757
  msgstr ""
758
 
759
+ #: admin/class-settings.php:518
760
  msgid "Equatorial Guinea"
761
  msgstr ""
762
 
763
+ #: admin/class-settings.php:519
764
  msgid "Eritrea"
765
  msgstr ""
766
 
767
+ #: admin/class-settings.php:520
768
  msgid "Estonia"
769
  msgstr ""
770
 
771
+ #: admin/class-settings.php:521
772
  msgid "Ethiopia"
773
  msgstr ""
774
 
775
+ #: admin/class-settings.php:522
776
  msgid "Fiji"
777
  msgstr ""
778
 
779
+ #: admin/class-settings.php:523
780
  msgid "Finland"
781
  msgstr ""
782
 
783
+ #: admin/class-settings.php:524
784
  msgid "France"
785
  msgstr ""
786
 
787
+ #: admin/class-settings.php:525
788
  msgid "French Guiana"
789
  msgstr ""
790
 
791
+ #: admin/class-settings.php:526
792
  msgid "Gabon"
793
  msgstr ""
794
 
795
+ #: admin/class-settings.php:527
796
  msgid "Gambia"
797
  msgstr ""
798
 
799
+ #: admin/class-settings.php:528
800
  msgid "Germany"
801
  msgstr ""
802
 
803
+ #: admin/class-settings.php:529
804
  msgid "Ghana"
805
  msgstr ""
806
 
807
+ #: admin/class-settings.php:530
808
  msgid "Greenland"
809
  msgstr ""
810
 
811
+ #: admin/class-settings.php:531
812
  msgid "Greece"
813
  msgstr ""
814
 
815
+ #: admin/class-settings.php:532
816
  msgid "Grenada"
817
  msgstr ""
818
 
819
+ #: admin/class-settings.php:533
820
  msgid "Guam"
821
  msgstr ""
822
 
823
+ #: admin/class-settings.php:534
824
  msgid "Guadeloupe"
825
  msgstr ""
826
 
827
+ #: admin/class-settings.php:535
828
  msgid "Guatemala"
829
  msgstr ""
830
 
831
+ #: admin/class-settings.php:536
832
  msgid "Guinea"
833
  msgstr ""
834
 
835
+ #: admin/class-settings.php:537
836
  msgid "Guinea-Bissau"
837
  msgstr ""
838
 
839
+ #: admin/class-settings.php:538
840
  msgid "Haiti"
841
  msgstr ""
842
 
843
+ #: admin/class-settings.php:539
844
  msgid "Honduras"
845
  msgstr ""
846
 
847
+ #: admin/class-settings.php:540
848
  msgid "Hong Kong"
849
  msgstr ""
850
 
851
+ #: admin/class-settings.php:541
852
  msgid "Hungary"
853
  msgstr ""
854
 
855
+ #: admin/class-settings.php:542
856
  msgid "Iceland"
857
  msgstr ""
858
 
859
+ #: admin/class-settings.php:543
860
  msgid "India"
861
  msgstr ""
862
 
863
+ #: admin/class-settings.php:544
864
  msgid "Indonesia"
865
  msgstr ""
866
 
867
+ #: admin/class-settings.php:545
868
  msgid "Iran"
869
  msgstr ""
870
 
871
+ #: admin/class-settings.php:546
872
  msgid "Iraq"
873
  msgstr ""
874
 
875
+ #: admin/class-settings.php:547
876
  msgid "Ireland"
877
  msgstr ""
878
 
879
+ #: admin/class-settings.php:548
880
  msgid "Israel"
881
  msgstr ""
882
 
883
+ #: admin/class-settings.php:549
884
  msgid "Italy"
885
  msgstr ""
886
 
887
+ #: admin/class-settings.php:550
888
  msgid "Jamaica"
889
  msgstr ""
890
 
891
+ #: admin/class-settings.php:551
892
  msgid "Japan"
893
  msgstr ""
894
 
895
+ #: admin/class-settings.php:552
896
  msgid "Jordan"
897
  msgstr ""
898
 
899
+ #: admin/class-settings.php:553
900
  msgid "Kazakhstan"
901
  msgstr ""
902
 
903
+ #: admin/class-settings.php:554
904
  msgid "Kenya"
905
  msgstr ""
906
 
907
+ #: admin/class-settings.php:555
908
  msgid "Kuwait"
909
  msgstr ""
910
 
911
+ #: admin/class-settings.php:556
912
  msgid "Kyrgyzstan"
913
  msgstr ""
914
 
915
+ #: admin/class-settings.php:557
916
  msgid "Laos"
917
  msgstr ""
918
 
919
+ #: admin/class-settings.php:558
920
  msgid "Latvia"
921
  msgstr ""
922
 
923
+ #: admin/class-settings.php:559
924
  msgid "Lebanon"
925
  msgstr ""
926
 
927
+ #: admin/class-settings.php:560
928
  msgid "Lesotho"
929
  msgstr ""
930
 
931
+ #: admin/class-settings.php:561
932
  msgid "Liberia"
933
  msgstr ""
934
 
935
+ #: admin/class-settings.php:562
936
  msgid "Libya"
937
  msgstr ""
938
 
939
+ #: admin/class-settings.php:563
940
  msgid "Liechtenstein"
941
  msgstr ""
942
 
943
+ #: admin/class-settings.php:564
944
  msgid "Lithuania"
945
  msgstr ""
946
 
947
+ #: admin/class-settings.php:565
948
  msgid "Luxembourg"
949
  msgstr ""
950
 
951
+ #: admin/class-settings.php:566
952
  msgid "Macau"
953
  msgstr ""
954
 
955
+ #: admin/class-settings.php:567
956
  msgid "Macedonia"
957
  msgstr ""
958
 
959
+ #: admin/class-settings.php:568
960
  msgid "Madagascar"
961
  msgstr ""
962
 
963
+ #: admin/class-settings.php:569
964
  msgid "Malawi"
965
  msgstr ""
966
 
967
+ #: admin/class-settings.php:570
968
  msgid "Malaysia "
969
  msgstr ""
970
 
971
+ #: admin/class-settings.php:571
972
  msgid "Mali"
973
  msgstr ""
974
 
975
+ #: admin/class-settings.php:572
976
  msgid "Marshall Islands"
977
  msgstr ""
978
 
979
+ #: admin/class-settings.php:573
980
  msgid "Martinique"
981
  msgstr ""
982
 
983
+ #: admin/class-settings.php:574
984
  msgid "Mauritania"
985
  msgstr ""
986
 
987
+ #: admin/class-settings.php:575
988
  msgid "Mauritius"
989
  msgstr ""
990
 
991
+ #: admin/class-settings.php:576
992
  msgid "Mexico"
993
  msgstr ""
994
 
995
+ #: admin/class-settings.php:577
996
  msgid "Micronesia"
997
  msgstr ""
998
 
999
+ #: admin/class-settings.php:578
1000
  msgid "Moldova"
1001
  msgstr ""
1002
 
1003
+ #: admin/class-settings.php:579
1004
  msgid "Monaco"
1005
  msgstr ""
1006
 
1007
+ #: admin/class-settings.php:580
1008
  msgid "Mongolia"
1009
  msgstr ""
1010
 
1011
+ #: admin/class-settings.php:581
1012
  msgid "Montenegro"
1013
  msgstr ""
1014
 
1015
+ #: admin/class-settings.php:582
1016
  msgid "Montserrat"
1017
  msgstr ""
1018
 
1019
+ #: admin/class-settings.php:583
1020
  msgid "Morocco"
1021
  msgstr ""
1022
 
1023
+ #: admin/class-settings.php:584
1024
  msgid "Mozambique"
1025
  msgstr ""
1026
 
1027
+ #: admin/class-settings.php:585
1028
  msgid "Myanmar"
1029
  msgstr ""
1030
 
1031
+ #: admin/class-settings.php:586
1032
  msgid "Namibia"
1033
  msgstr ""
1034
 
1035
+ #: admin/class-settings.php:587
1036
  msgid "Nauru"
1037
  msgstr ""
1038
 
1039
+ #: admin/class-settings.php:588
1040
  msgid "Nepal"
1041
  msgstr ""
1042
 
1043
+ #: admin/class-settings.php:589
1044
  msgid "Netherlands"
1045
  msgstr ""
1046
 
1047
+ #: admin/class-settings.php:590
1048
  msgid "Netherlands Antilles"
1049
  msgstr ""
1050
 
1051
+ #: admin/class-settings.php:591
1052
  msgid "New Zealand"
1053
  msgstr ""
1054
 
1055
+ #: admin/class-settings.php:592
1056
  msgid "Nicaragua"
1057
  msgstr ""
1058
 
1059
+ #: admin/class-settings.php:593
1060
  msgid "Niger"
1061
  msgstr ""
1062
 
1063
+ #: admin/class-settings.php:594
1064
  msgid "Nigeria"
1065
  msgstr ""
1066
 
1067
+ #: admin/class-settings.php:595
1068
  msgid "Niue"
1069
  msgstr ""
1070
 
1071
+ #: admin/class-settings.php:596
1072
  msgid "Northern Mariana Islands"
1073
  msgstr ""
1074
 
1075
+ #: admin/class-settings.php:597
1076
  msgid "Norway"
1077
  msgstr ""
1078
 
1079
+ #: admin/class-settings.php:598
1080
  msgid "Oman"
1081
  msgstr ""
1082
 
1083
+ #: admin/class-settings.php:599
1084
  msgid "Pakistan"
1085
  msgstr ""
1086
 
1087
+ #: admin/class-settings.php:600
1088
  msgid "Panama"
1089
  msgstr ""
1090
 
1091
+ #: admin/class-settings.php:601
1092
  msgid "Papua New Guinea"
1093
  msgstr ""
1094
 
1095
+ #: admin/class-settings.php:602
1096
  msgid "Paraguay"
1097
  msgstr ""
1098
 
1099
+ #: admin/class-settings.php:603
1100
  msgid "Peru"
1101
  msgstr ""
1102
 
1103
+ #: admin/class-settings.php:604
1104
  msgid "Philippines"
1105
  msgstr ""
1106
 
1107
+ #: admin/class-settings.php:605
1108
  msgid "Pitcairn Islands"
1109
  msgstr ""
1110
 
1111
+ #: admin/class-settings.php:606
1112
  msgid "Poland"
1113
  msgstr ""
1114
 
1115
+ #: admin/class-settings.php:607
1116
  msgid "Portugal"
1117
  msgstr ""
1118
 
1119
+ #: admin/class-settings.php:608
1120
  msgid "Qatar"
1121
  msgstr ""
1122
 
1123
+ #: admin/class-settings.php:609
1124
  msgid "Reunion"
1125
  msgstr ""
1126
 
1127
+ #: admin/class-settings.php:610
1128
  msgid "Romania"
1129
  msgstr ""
1130
 
1131
+ #: admin/class-settings.php:611
1132
  msgid "Russia"
1133
  msgstr ""
1134
 
1135
+ #: admin/class-settings.php:612
1136
  msgid "Rwanda"
1137
  msgstr ""
1138
 
1139
+ #: admin/class-settings.php:613
1140
  msgid "Saint Helena"
1141
  msgstr ""
1142
 
1143
+ #: admin/class-settings.php:614
1144
  msgid "Saint Kitts and Nevis"
1145
  msgstr ""
1146
 
1147
+ #: admin/class-settings.php:615
1148
  msgid "Saint Vincent and the Grenadines"
1149
  msgstr ""
1150
 
1151
+ #: admin/class-settings.php:616
1152
  msgid "Saint Lucia"
1153
  msgstr ""
1154
 
1155
+ #: admin/class-settings.php:617
1156
  msgid "Samoa"
1157
  msgstr ""
1158
 
1159
+ #: admin/class-settings.php:618
1160
  msgid "San Marino"
1161
  msgstr ""
1162
 
1163
+ #: admin/class-settings.php:619
1164
  msgid "São Tomé and Príncipe"
1165
  msgstr ""
1166
 
1167
+ #: admin/class-settings.php:620
1168
  msgid "Saudi Arabia"
1169
  msgstr ""
1170
 
1171
+ #: admin/class-settings.php:621
1172
  msgid "Senegal"
1173
  msgstr ""
1174
 
1175
+ #: admin/class-settings.php:622
1176
  msgid "Serbia"
1177
  msgstr ""
1178
 
1179
+ #: admin/class-settings.php:623
1180
  msgid "Seychelles"
1181
  msgstr ""
1182
 
1183
+ #: admin/class-settings.php:624
1184
  msgid "Sierra Leone"
1185
  msgstr ""
1186
 
1187
+ #: admin/class-settings.php:625
1188
  msgid "Singapore"
1189
  msgstr ""
1190
 
1191
+ #: admin/class-settings.php:626
1192
  msgid "Slovakia"
1193
  msgstr ""
1194
 
1195
+ #: admin/class-settings.php:627
1196
  msgid "Solomon Islands"
1197
  msgstr ""
1198
 
1199
+ #: admin/class-settings.php:628
1200
  msgid "Somalia"
1201
  msgstr ""
1202
 
1203
+ #: admin/class-settings.php:629
1204
  msgid "South Africa"
1205
  msgstr ""
1206
 
1207
+ #: admin/class-settings.php:630
1208
  msgid "South Korea"
1209
  msgstr ""
1210
 
1211
+ #: admin/class-settings.php:631
1212
  msgid "Spain"
1213
  msgstr ""
1214
 
1215
+ #: admin/class-settings.php:632
1216
  msgid "Sri Lanka"
1217
  msgstr ""
1218
 
1219
+ #: admin/class-settings.php:633
1220
  msgid "Sudan"
1221
  msgstr ""
1222
 
1223
+ #: admin/class-settings.php:634
1224
  msgid "Swaziland"
1225
  msgstr ""
1226
 
1227
+ #: admin/class-settings.php:635
1228
  msgid "Sweden"
1229
  msgstr ""
1230
 
1231
+ #: admin/class-settings.php:636
1232
  msgid "Switzerland"
1233
  msgstr ""
1234
 
1235
+ #: admin/class-settings.php:637
1236
  msgid "Syria"
1237
  msgstr ""
1238
 
1239
+ #: admin/class-settings.php:638
1240
  msgid "Taiwan"
1241
  msgstr ""
1242
 
1243
+ #: admin/class-settings.php:639
1244
  msgid "Tajikistan"
1245
  msgstr ""
1246
 
1247
+ #: admin/class-settings.php:640
1248
  msgid "Tanzania"
1249
  msgstr ""
1250
 
1251
+ #: admin/class-settings.php:641
1252
  msgid "Thailand"
1253
  msgstr ""
1254
 
1255
+ #: admin/class-settings.php:642
1256
  msgid "Timor-Leste"
1257
  msgstr ""
1258
 
1259
+ #: admin/class-settings.php:643
1260
  msgid "Tokelau"
1261
  msgstr ""
1262
 
1263
+ #: admin/class-settings.php:644
1264
  msgid "Togo"
1265
  msgstr ""
1266
 
1267
+ #: admin/class-settings.php:645
1268
  msgid "Tonga"
1269
  msgstr ""
1270
 
1271
+ #: admin/class-settings.php:646
1272
  msgid "Trinidad and Tobago"
1273
  msgstr ""
1274
 
1275
+ #: admin/class-settings.php:647
1276
  msgid "Tunisia"
1277
  msgstr ""
1278
 
1279
+ #: admin/class-settings.php:648
1280
  msgid "Turkey"
1281
  msgstr ""
1282
 
1283
+ #: admin/class-settings.php:649
1284
  msgid "Turkmenistan"
1285
  msgstr ""
1286
 
1287
+ #: admin/class-settings.php:650
1288
  msgid "Tuvalu"
1289
  msgstr ""
1290
 
1291
+ #: admin/class-settings.php:651
1292
  msgid "Uganda"
1293
  msgstr ""
1294
 
1295
+ #: admin/class-settings.php:652
1296
  msgid "Ukraine"
1297
  msgstr ""
1298
 
1299
+ #: admin/class-settings.php:653
1300
  msgid "United Arab Emirates"
1301
  msgstr ""
1302
 
1303
+ #: admin/class-settings.php:654
1304
  msgid "United Kingdom"
1305
  msgstr ""
1306
 
1307
+ #: admin/class-settings.php:655
1308
  msgid "United States"
1309
  msgstr ""
1310
 
1311
+ #: admin/class-settings.php:656
1312
  msgid "Uruguay"
1313
  msgstr ""
1314
 
1315
+ #: admin/class-settings.php:657
1316
  msgid "Uzbekistan"
1317
  msgstr ""
1318
 
1319
+ #: admin/class-settings.php:658
1320
  msgid "Wallis Futuna"
1321
  msgstr ""
1322
 
1323
+ #: admin/class-settings.php:659
1324
  msgid "Venezuela"
1325
  msgstr ""
1326
 
1327
+ #: admin/class-settings.php:660
1328
  msgid "Vietnam"
1329
  msgstr ""
1330
 
1331
+ #: admin/class-settings.php:661
1332
  msgid "Yemen"
1333
  msgstr ""
1334
 
1335
+ #: admin/class-settings.php:662
1336
  msgid "Zambia"
1337
  msgstr ""
1338
 
1339
+ #: admin/class-settings.php:663
1340
  msgid "Zimbabwe"
1341
  msgstr ""
1342
 
1343
+ #: admin/class-settings.php:706
1344
  msgid "World view"
1345
  msgstr ""
1346
 
1347
+ #: admin/class-settings.php:709 admin/class-settings.php:822
1348
+ #: inc/wpsl-functions.php:181
1349
  msgid "Default"
1350
  msgstr ""
1351
 
1352
+ #: admin/class-settings.php:712 inc/wpsl-functions.php:254
1353
  msgid "Roadmap"
1354
  msgstr ""
1355
 
1356
+ #: admin/class-settings.php:852
1357
  msgid "Start location marker"
1358
  msgstr ""
1359
 
1360
+ #: admin/class-settings.php:854
1361
  msgid "Store location marker"
1362
  msgstr ""
1363
 
1364
+ #: admin/class-settings.php:935
1365
  msgid "Textarea"
1366
  msgstr ""
1367
 
1368
+ #: admin/class-settings.php:936
1369
  msgid "Dropdowns (recommended)"
1370
  msgstr ""
1371
 
1372
+ #: admin/class-settings.php:944
1373
  msgid "Bounces up and down"
1374
  msgstr ""
1375
 
1376
+ #: admin/class-settings.php:945
1377
  msgid "Will open the info window"
1378
  msgstr ""
1379
 
1380
+ #: admin/class-settings.php:946
1381
  msgid "Does not respond"
1382
  msgstr ""
1383
 
1384
+ #: admin/class-settings.php:954
1385
  msgid "In the store listings"
1386
  msgstr ""
1387
 
1388
+ #: admin/class-settings.php:955
1389
  msgid "In the info window on the map"
1390
  msgstr ""
1391
 
1392
+ #: admin/class-settings.php:1011
1393
  msgid "12 Hours"
1394
  msgstr ""
1395
 
1396
+ #: admin/class-settings.php:1012
1397
  msgid "24 Hours"
1398
  msgstr ""
1399
 
1401
  msgid "Store Locator Manager"
1402
  msgstr ""
1403
 
1404
+ #: admin/templates/map-settings.php:16
1405
  msgid "Google Maps API"
1406
  msgstr ""
1407
 
1408
+ #: admin/templates/map-settings.php:19
1409
  msgid "API key"
1410
  msgstr ""
1411
 
1412
+ #: admin/templates/map-settings.php:19
1413
  #, php-format
1414
  msgid ""
1415
  "A valid %sAPI key%s allows you to monitor the API usage and is required if "
1416
  "you need to purchase additional quota."
1417
  msgstr ""
1418
 
1419
+ #: admin/templates/map-settings.php:20
1420
  msgid "Optional"
1421
  msgstr ""
1422
 
1423
+ #: admin/templates/map-settings.php:23
1424
  msgid "Map language"
1425
  msgstr ""
1426
 
1427
+ #: admin/templates/map-settings.php:23
1428
  msgid "If no map language is selected the browser's prefered language is used."
1429
  msgstr ""
1430
 
1431
+ #: admin/templates/map-settings.php:29
1432
  msgid "Map region"
1433
  msgstr ""
1434
 
1435
+ #: admin/templates/map-settings.php:29
1436
  #, php-format
1437
  msgid ""
1438
  "This will bias the geocoding results towards the selected region. %s If no "
1439
  "region is selected the bias is set to the United States."
1440
  msgstr ""
1441
 
1442
+ #: admin/templates/map-settings.php:35 admin/templates/map-settings.php:77
1443
+ #: admin/templates/map-settings.php:154 admin/templates/map-settings.php:247
1444
+ #: admin/templates/map-settings.php:273 admin/templates/map-settings.php:323
1445
+ #: admin/templates/map-settings.php:349 admin/templates/map-settings.php:457
1446
+ #: admin/templates/map-settings.php:478
1447
  msgid "Save Changes"
1448
  msgstr ""
1449
 
1450
+ #: admin/templates/map-settings.php:45 admin/templates/map-settings.php:385
1451
+ #: admin/templates/map-settings.php:386 frontend/templates/default.php:43
1452
+ #: frontend/templates/store-listings-below.php:43 inc/wpsl-functions.php:99
1453
  msgid "Search"
1454
  msgstr ""
1455
 
1456
+ #: admin/templates/map-settings.php:48
1457
  msgid "Show the max results dropdown?"
1458
  msgstr ""
1459
 
1460
+ #: admin/templates/map-settings.php:52
1461
  msgid "Show the search radius dropdown?"
1462
  msgstr ""
1463
 
1464
+ #: admin/templates/map-settings.php:56
1465
  msgid "Show the category dropdown?"
1466
  msgstr ""
1467
 
1468
+ #: admin/templates/map-settings.php:60
1469
  msgid "Distance unit"
1470
  msgstr ""
1471
 
1472
+ #: admin/templates/map-settings.php:63
1473
  msgid "km"
1474
  msgstr ""
1475
 
1476
+ #: admin/templates/map-settings.php:65
1477
  msgid "mi"
1478
  msgstr ""
1479
 
1480
+ #: admin/templates/map-settings.php:69
1481
  msgid "Max search results"
1482
  msgstr ""
1483
 
1484
+ #: admin/templates/map-settings.php:69 admin/templates/map-settings.php:73
1485
  msgid "The default value is set between the [ ]."
1486
  msgstr ""
1487
 
1488
+ #: admin/templates/map-settings.php:73
1489
  msgid "Search radius options"
1490
  msgstr ""
1491
 
1492
+ #: admin/templates/map-settings.php:87
1493
  msgid "Map"
1494
  msgstr ""
1495
 
1496
+ #: admin/templates/map-settings.php:90
1497
  msgid "Attempt to auto-locate the user"
1498
  msgstr ""
1499
 
1500
+ #: admin/templates/map-settings.php:94
1501
  msgid "Load locations on page load"
1502
  msgstr ""
1503
 
1504
+ #: admin/templates/map-settings.php:98
1505
  msgid "Number of locations to show"
1506
  msgstr ""
1507
 
1508
+ #: admin/templates/map-settings.php:98
1509
  #, php-format
1510
  msgid ""
1511
  "Although the location data is cached after the first load, a lower number "
1513
  "or set to 0, then all locations are loaded."
1514
  msgstr ""
1515
 
1516
+ #: admin/templates/map-settings.php:102
1517
  msgid "Start point"
1518
  msgstr ""
1519
 
1520
+ #: admin/templates/map-settings.php:102
1521
  #, php-format
1522
  msgid ""
1523
  "%sRequired field.%s %s If auto-locating the user is disabled or fails, the "
1525
  "point for the user."
1526
  msgstr ""
1527
 
1528
+ #: admin/templates/map-settings.php:107
1529
  msgid "Initial zoom level"
1530
  msgstr ""
1531
 
1532
+ #: admin/templates/map-settings.php:111
1533
  msgid "Max auto zoom level"
1534
  msgstr ""
1535
 
1536
+ #: admin/templates/map-settings.php:111
1537
  #, php-format
1538
  msgid ""
1539
  "This value sets the zoom level for the \"Zoom here\" link in the info "
1541
  "is changed to make all the markers fit on the screen."
1542
  msgstr ""
1543
 
 
 
 
 
1544
  #: admin/templates/map-settings.php:115
1545
+ msgid "Show the street view controls?"
1546
  msgstr ""
1547
 
1548
  #: admin/templates/map-settings.php:119
1566
  msgstr ""
1567
 
1568
  #: admin/templates/map-settings.php:136
 
 
 
 
 
 
 
 
 
 
 
 
1569
  msgid "Map type"
1570
  msgstr ""
1571
 
1572
+ #: admin/templates/map-settings.php:140
1573
  msgid "Map style"
1574
  msgstr ""
1575
 
1576
+ #: admin/templates/map-settings.php:140
1577
  msgid ""
1578
  "Custom map styles only work if the map type is set to \"Roadmap\" or "
1579
  "\"Terrain\"."
1580
  msgstr ""
1581
 
1582
+ #: admin/templates/map-settings.php:143
1583
  #, php-format
1584
  msgid ""
1585
  "You can use existing map styles from %sSnazzy Maps%s or %sMap Stylr%s and "
1587
  "through the %sMap Style Editor%s or %sStyled Maps Wizard%s."
1588
  msgstr ""
1589
 
1590
+ #: admin/templates/map-settings.php:144
1591
  #, php-format
1592
  msgid ""
1593
  "If you like to write the style code yourself, then you can find the "
1594
  "documentation from Google %shere%s."
1595
  msgstr ""
1596
 
1597
+ #: admin/templates/map-settings.php:146
1598
  msgid "Preview Map Style"
1599
  msgstr ""
1600
 
1601
+ #: admin/templates/map-settings.php:150
1602
  msgid "Show credits?"
1603
  msgstr ""
1604
 
1605
+ #: admin/templates/map-settings.php:150
1606
  msgid ""
1607
  "This will place a \"Search provided by WP Store Locator\" backlink below the "
1608
  "map."
1609
  msgstr ""
1610
 
1611
+ #: admin/templates/map-settings.php:164
1612
  msgid "User Experience"
1613
  msgstr ""
1614
 
1615
+ #: admin/templates/map-settings.php:167
1616
  msgid "Store Locator height"
1617
  msgstr ""
1618
 
1619
+ #: admin/templates/map-settings.php:171
1620
  msgid "Max width for the info window content"
1621
  msgstr ""
1622
 
1623
+ #: admin/templates/map-settings.php:175
1624
  msgid "Search field width"
1625
  msgstr ""
1626
 
1627
+ #: admin/templates/map-settings.php:179
1628
  msgid "Search and radius label width"
1629
  msgstr ""
1630
 
1631
+ #: admin/templates/map-settings.php:183
1632
  msgid "Store Locator template"
1633
  msgstr ""
1634
 
1635
+ #: admin/templates/map-settings.php:183
1636
  #, php-format
1637
  msgid ""
1638
  "The selected template is used with the [wpsl] shortcode. %s You can add a "
1639
  "custom template with the %swpsl_templates%s filter."
1640
  msgstr ""
1641
 
1642
+ #: admin/templates/map-settings.php:187
1643
  msgid "Hide the scrollbar?"
1644
  msgstr ""
1645
 
1646
+ #: admin/templates/map-settings.php:191
1647
  msgid "Open links in a new window?"
1648
  msgstr ""
1649
 
1650
+ #: admin/templates/map-settings.php:195
1651
  msgid "Show a reset map button?"
1652
  msgstr ""
1653
 
1654
+ #: admin/templates/map-settings.php:199
1655
  msgid ""
1656
  "When a user clicks on \"Directions\", open a new window, and show the route "
1657
  "on google.com/maps ?"
1658
  msgstr ""
1659
 
1660
+ #: admin/templates/map-settings.php:203
1661
  msgid "Show a \"More info\" link in the store listings?"
1662
  msgstr ""
1663
 
1664
+ #: admin/templates/map-settings.php:203
1665
  #, php-format
1666
  msgid ""
1667
  "This places a \"More Info\" link below the address and will show the phone, "
1670
  "follow the instructions on %sthis%s page."
1671
  msgstr ""
1672
 
1673
+ #: admin/templates/map-settings.php:207
1674
  msgid "Where do you want to show the \"More info\" details?"
1675
  msgstr ""
1676
 
1677
+ #: admin/templates/map-settings.php:211
1678
  msgid "Make the store name clickable if a store URL exists?"
1679
  msgstr ""
1680
 
1681
+ #: admin/templates/map-settings.php:211
1682
  #, php-format
1683
  msgid ""
1684
  "If %spermalinks%s are enabled, the store name will always link to the store "
1685
  "page."
1686
  msgstr ""
1687
 
1688
+ #: admin/templates/map-settings.php:215
1689
  msgid "Make the phone number clickable on mobile devices?"
1690
  msgstr ""
1691
 
1692
+ #: admin/templates/map-settings.php:219
1693
  msgid ""
1694
  "If street view is available for the current location, then show a \"Street "
1695
  "view\" link in the info window?"
1696
  msgstr ""
1697
 
1698
+ #: admin/templates/map-settings.php:219
1699
  #, php-format
1700
  msgid ""
1701
  "Enabling this option can sometimes result in a small delay in the opening of "
1703
  "Maps to check if street view is available for the current location."
1704
  msgstr ""
1705
 
1706
+ #: admin/templates/map-settings.php:223
1707
  msgid "Show a \"Zoom here\" link in the info window?"
1708
  msgstr ""
1709
 
1710
+ #: admin/templates/map-settings.php:223
1711
  #, php-format
1712
  msgid ""
1713
  "Clicking this link will make the map zoom in to the %s max auto zoom level "
1714
  "%s."
1715
  msgstr ""
1716
 
1717
+ #: admin/templates/map-settings.php:227
1718
  msgid "On page load move the mouse cursor to the search field?"
1719
  msgstr ""
1720
 
1721
+ #: admin/templates/map-settings.php:227
1722
  #, php-format
1723
  msgid ""
1724
  "If the store locator is not placed at the top of the page, enabling this "
1726
  "on mobile devices.%s"
1727
  msgstr ""
1728
 
1729
+ #: admin/templates/map-settings.php:231
1730
  msgid "Use the default style for the info window?"
1731
  msgstr ""
1732
 
1733
+ #: admin/templates/map-settings.php:231
1734
  #, php-format
1735
  msgid ""
1736
  "If the default style is disabled the %sInfoBox%s library will be used "
1738
  "window through the .wpsl-infobox css class."
1739
  msgstr ""
1740
 
1741
+ #: admin/templates/map-settings.php:235
1742
  msgid "Hide the distance in the search results?"
1743
  msgstr ""
1744
 
1745
+ #: admin/templates/map-settings.php:239
1746
  msgid "If a user hovers over the search results the store marker"
1747
  msgstr ""
1748
 
1749
+ #: admin/templates/map-settings.php:239
1750
  #, php-format
1751
  msgid ""
1752
  "If marker clusters are enabled this option will not work as expected as long "
1756
  "it won't be clear to which marker it belongs to. "
1757
  msgstr ""
1758
 
1759
+ #: admin/templates/map-settings.php:243
1760
  msgid "Address format"
1761
  msgstr ""
1762
 
1763
+ #: admin/templates/map-settings.php:243
1764
  #, php-format
1765
  msgid ""
1766
  "You can add custom address formats with the %swpsl_address_formats%s filter."
1767
  msgstr ""
1768
 
1769
+ #: admin/templates/map-settings.php:257
1770
  msgid "Markers"
1771
  msgstr ""
1772
 
1773
+ #: admin/templates/map-settings.php:261
1774
  msgid "Enable marker clusters?"
1775
  msgstr ""
1776
 
1777
+ #: admin/templates/map-settings.php:261
1778
  msgid "Recommended for maps with a large amount of markers."
1779
  msgstr ""
1780
 
1781
+ #: admin/templates/map-settings.php:265
1782
  msgid "Max zoom level"
1783
  msgstr ""
1784
 
1785
+ #: admin/templates/map-settings.php:265
1786
  msgid ""
1787
  "If this zoom level is reached or exceeded, then all markers are moved out of "
1788
  "the marker cluster and shown as individual markers."
1789
  msgstr ""
1790
 
1791
+ #: admin/templates/map-settings.php:269
1792
  msgid "Cluster size"
1793
  msgstr ""
1794
 
1795
+ #: admin/templates/map-settings.php:269
1796
  #, php-format
1797
  msgid ""
1798
  "The grid size of a cluster in pixels. %s A larger number will result in a "
1799
  "lower amount of clusters and also make the algorithm run faster."
1800
  msgstr ""
1801
 
1802
+ #: admin/templates/map-settings.php:283
1803
  msgid "Store Editor"
1804
  msgstr ""
1805
 
1806
+ #: admin/templates/map-settings.php:286
1807
  msgid "Default country"
1808
  msgstr ""
1809
 
1810
+ #: admin/templates/map-settings.php:290
1811
  msgid "Map type for the location preview"
1812
  msgstr ""
1813
 
1814
+ #: admin/templates/map-settings.php:294
1815
  msgid "Hide the opening hours?"
1816
  msgstr ""
1817
 
1818
+ #: admin/templates/map-settings.php:300
1819
  msgid "Opening hours input type"
1820
  msgstr ""
1821
 
1822
+ #: admin/templates/map-settings.php:304
1823
  #, php-format
1824
  msgid ""
1825
  "Opening hours created in version 1.x %sare not%s automatically converted to "
1826
  "the new dropdown format."
1827
  msgstr ""
1828
 
1829
+ #: admin/templates/map-settings.php:307 admin/templates/map-settings.php:316
1830
  msgid "The default opening hours"
1831
  msgstr ""
1832
 
1833
+ #: admin/templates/map-settings.php:313
1834
  msgid "Opening hours format"
1835
  msgstr ""
1836
 
1837
+ #: admin/templates/map-settings.php:320
1838
  msgid ""
1839
  "The default country and opening hours are only used when a new store is "
1840
  "created. So changing the default values will have no effect on existing "
1841
  "store locations."
1842
  msgstr ""
1843
 
1844
+ #: admin/templates/map-settings.php:333
1845
  msgid "Permalink"
1846
  msgstr ""
1847
 
1848
+ #: admin/templates/map-settings.php:336
1849
  msgid "Enable permalink?"
1850
  msgstr ""
1851
 
1852
+ #: admin/templates/map-settings.php:340
1853
  msgid "Store slug"
1854
  msgstr ""
1855
 
1856
+ #: admin/templates/map-settings.php:344
1857
  msgid "Category slug"
1858
  msgstr ""
1859
 
1860
+ #: admin/templates/map-settings.php:347
1861
  #, php-format
1862
  msgid "The permalink slugs %smust be unique%s on your site."
1863
  msgstr ""
1864
 
1865
+ #: admin/templates/map-settings.php:359
1866
  msgid "Labels"
1867
  msgstr ""
1868
 
1869
+ #: admin/templates/map-settings.php:368
1870
+ #, php-format
1871
+ msgid "%sWarning!%s %sWPML%s, or a plugin using the WPML API is active."
1872
+ msgstr ""
1873
+
1874
+ #: admin/templates/map-settings.php:369
1875
+ msgid ""
1876
+ "Please use the \"String Translations\" section in the used multilingual "
1877
+ "plugin to change the labels. Changing them here will have no effect as long "
1878
+ "as the multilingual plugin remains active."
1879
+ msgstr ""
1880
+
1881
+ #: admin/templates/map-settings.php:373 admin/templates/map-settings.php:374
1882
  #: frontend/templates/default.php:11
1883
+ #: frontend/templates/store-listings-below.php:11 inc/wpsl-functions.php:98
1884
  msgid "Your location"
1885
  msgstr ""
1886
 
1887
+ #: admin/templates/map-settings.php:377 admin/templates/map-settings.php:378
1888
  #: frontend/templates/default.php:20
1889
+ #: frontend/templates/store-listings-below.php:20 inc/wpsl-functions.php:101
1890
  msgid "Search radius"
1891
  msgstr ""
1892
 
1893
+ #: admin/templates/map-settings.php:381 admin/templates/map-settings.php:382
1894
+ #: frontend/class-frontend.php:1332 inc/wpsl-functions.php:102
1895
  msgid "No results found"
1896
  msgstr ""
1897
 
1898
+ #: admin/templates/map-settings.php:389
1899
  msgid "Searching (preloader text)"
1900
  msgstr ""
1901
 
1902
+ #: admin/templates/map-settings.php:390 frontend/class-frontend.php:1331
1903
+ #: inc/wpsl-functions.php:100
1904
  msgid "Searching..."
1905
  msgstr ""
1906
 
1907
+ #: admin/templates/map-settings.php:393 admin/templates/map-settings.php:394
1908
  #: frontend/templates/default.php:29
1909
+ #: frontend/templates/store-listings-below.php:29 inc/wpsl-functions.php:103
1910
  msgid "Results"
1911
  msgstr ""
1912
 
1913
+ #: admin/templates/map-settings.php:397 admin/upgrade.php:218
1914
+ #: inc/wpsl-functions.php:117
1915
  msgid "Category filter"
1916
  msgstr ""
1917
 
1918
+ #: admin/templates/map-settings.php:398 frontend/class-frontend.php:1107
1919
  msgid "Category"
1920
  msgstr ""
1921
 
1922
+ #: admin/templates/map-settings.php:401 admin/templates/map-settings.php:402
1923
+ #: admin/upgrade.php:66 frontend/class-frontend.php:1333
1924
  #: frontend/underscore-functions.php:114 frontend/underscore-functions.php:141
1925
+ #: inc/wpsl-functions.php:104
1926
  msgid "More info"
1927
  msgstr ""
1928
 
1929
+ #: admin/templates/map-settings.php:405 admin/templates/map-settings.php:406
1930
+ #: frontend/class-frontend.php:673 frontend/underscore-functions.php:29
1931
+ #: frontend/underscore-functions.php:121 inc/wpsl-functions.php:112
1932
  msgid "Phone"
1933
  msgstr ""
1934
 
1935
+ #: admin/templates/map-settings.php:425 admin/templates/map-settings.php:426
1936
+ #: frontend/class-frontend.php:1338 inc/wpsl-functions.php:97
1937
  msgid "Start location"
1938
  msgstr ""
1939
 
1940
+ #: admin/templates/map-settings.php:429
1941
  msgid "Get directions"
1942
  msgstr ""
1943
 
1944
+ #: admin/templates/map-settings.php:430 frontend/class-frontend.php:1336
1945
+ #: inc/wpsl-functions.php:105
1946
  msgid "Directions"
1947
  msgstr ""
1948
 
1949
+ #: admin/templates/map-settings.php:433
1950
  msgid "No directions found"
1951
  msgstr ""
1952
 
1953
+ #: admin/templates/map-settings.php:434 admin/upgrade.php:163
1954
+ #: frontend/class-frontend.php:1337 inc/wpsl-functions.php:106
1955
  msgid "No route could be found between the origin and destination"
1956
  msgstr ""
1957
 
1958
+ #: admin/templates/map-settings.php:437 admin/templates/map-settings.php:438
1959
+ #: admin/upgrade.php:87 frontend/class-frontend.php:1339
1960
+ #: inc/wpsl-functions.php:107
1961
  msgid "Back"
1962
  msgstr ""
1963
 
1964
+ #: admin/templates/map-settings.php:441 admin/templates/map-settings.php:442
1965
+ #: admin/upgrade.php:155 frontend/class-frontend.php:1340
1966
+ #: inc/wpsl-functions.php:108
1967
  msgid "Street view"
1968
  msgstr ""
1969
 
1970
+ #: admin/templates/map-settings.php:445 admin/templates/map-settings.php:446
1971
+ #: admin/upgrade.php:159 frontend/class-frontend.php:1341
1972
+ #: inc/wpsl-functions.php:109
1973
  msgid "Zoom here"
1974
  msgstr ""
1975
 
1976
+ #: admin/templates/map-settings.php:449
1977
  msgid "General error"
1978
  msgstr ""
1979
 
1980
+ #: admin/templates/map-settings.php:450 frontend/class-frontend.php:1334
1981
+ #: inc/wpsl-functions.php:110
1982
  msgid "Something went wrong, please try again!"
1983
  msgstr ""
1984
 
1985
+ #: admin/templates/map-settings.php:453
1986
  msgid "Query limit error"
1987
  msgstr ""
1988
 
1989
+ #: admin/templates/map-settings.php:453
1990
  #, php-format
1991
  msgid ""
1992
  "You can raise the %susage limit%s by obtaining an API %skey%s, and fill in "
1993
  "the \"API key\" field at the top of this page."
1994
  msgstr ""
1995
 
1996
+ #: admin/templates/map-settings.php:454 frontend/class-frontend.php:1335
1997
+ #: inc/wpsl-functions.php:111
1998
  msgid "API usage limit reached"
1999
  msgstr ""
2000
 
2001
+ #: admin/templates/map-settings.php:467
2002
  msgid "Tools"
2003
  msgstr ""
2004
 
2005
+ #: admin/templates/map-settings.php:470
2006
  msgid "Enable store locator debug?"
2007
  msgstr ""
2008
 
2009
+ #: admin/templates/map-settings.php:470
2010
  #, php-format
2011
  msgid ""
2012
  "This disables the WPSL transient cache. %sThe transient cache is only used "
2013
  "if the %sLoad locations on page load%s option is enabled."
2014
  msgstr ""
2015
 
2016
+ #: admin/templates/map-settings.php:474
2017
  msgid "WPSL transients"
2018
  msgstr ""
2019
 
2020
+ #: admin/templates/map-settings.php:475
2021
  msgid "Clear store locator transient cache"
2022
  msgstr ""
2023
 
2029
  msgid "Reset"
2030
  msgstr ""
2031
 
2032
+ #: admin/upgrade.php:186 inc/wpsl-functions.php:92
2033
  msgid "stores"
2034
  msgstr ""
2035
 
2036
+ #: admin/upgrade.php:190 inc/wpsl-functions.php:93
2037
  msgid "store-category"
2038
  msgstr ""
2039
 
2040
+ #: admin/upgrade.php:384
2041
  #, php-format
2042
  msgid ""
2043
  "Because you updated WP Store Locator from version 1.x, the %s current store "
2044
  "locations need to be %sconverted%s to custom post types."
2045
  msgstr ""
2046
 
2047
+ #: admin/upgrade.php:405
2048
  #, php-format
2049
  msgid ""
2050
  "The script converting the locations timed out. %s You can click the \"Start "
2055
  "but if you are reading this then that failed."
2056
  msgstr ""
2057
 
2058
+ #: admin/upgrade.php:426
2059
  msgid "Store locations to convert:"
2060
  msgstr ""
2061
 
2062
+ #: admin/upgrade.php:428
2063
  msgid "Start Converting"
2064
  msgstr ""
2065
 
2066
+ #: admin/upgrade.php:550
2067
  #, php-format
2068
  msgid ""
2069
  "All the store locations are now converted to custom post types. %s You can "
2070
  "view them on the %sAll Stores%s page."
2071
  msgstr ""
2072
 
2073
+ #: frontend/class-frontend.php:610
2074
  msgid ""
2075
  "If you use the [wpsl_address] shortcode outside a store page you need to set "
2076
  "the ID attribute."
2077
  msgstr ""
2078
 
2079
+ #: frontend/class-frontend.php:722
2080
  msgid ""
2081
  "If you use the [wpsl_hours] shortcode outside a store page you need to set "
2082
  "the ID attribute."
2083
  msgstr ""
2084
 
2085
+ #: frontend/class-frontend.php:790
2086
  msgid ""
2087
  "If you use the [wpsl_map] shortcode outside a store page you need to set the "
2088
  "ID attribute."
2089
  msgstr ""
2090
 
2091
+ #: frontend/class-frontend.php:1109
2092
  msgid "Any"
2093
  msgstr ""
2094
 
2095
+ #: frontend/class-frontend.php:1234
2096
  msgid "The application does not have permission to use the Geolocation API."
2097
  msgstr ""
2098
 
2099
+ #: frontend/class-frontend.php:1235
2100
  msgid "Location information is unavailable."
2101
  msgstr ""
2102
 
2103
+ #: frontend/class-frontend.php:1236
2104
  msgid "The geolocation request timed out."
2105
  msgstr ""
2106
 
2107
+ #: frontend/class-frontend.php:1237
2108
  msgid "An unknown error occurred."
2109
  msgstr ""
2110
 
2214
  msgid "Zip"
2215
  msgstr ""
2216
 
2217
+ #: inc/wpsl-functions.php:186
2218
  msgid "Show the store list below the map"
2219
  msgstr ""
2220
 
2221
+ #: inc/wpsl-functions.php:203
2222
  msgid "Monday"
2223
  msgstr ""
2224
 
2225
+ #: inc/wpsl-functions.php:204
2226
  msgid "Tuesday"
2227
  msgstr ""
2228
 
2229
+ #: inc/wpsl-functions.php:205
2230
  msgid "Wednesday"
2231
  msgstr ""
2232
 
2233
+ #: inc/wpsl-functions.php:206
2234
  msgid "Thursday"
2235
  msgstr ""
2236
 
2237
+ #: inc/wpsl-functions.php:207
2238
  msgid "Friday"
2239
  msgstr ""
2240
 
2241
+ #: inc/wpsl-functions.php:208
2242
  msgid "Saturday"
2243
  msgstr ""
2244
 
2245
+ #: inc/wpsl-functions.php:209
2246
  msgid "Sunday"
2247
  msgstr ""
2248
 
2249
+ #: inc/wpsl-functions.php:239
2250
  #, php-format
2251
  msgid "Mon %sTue %sWed %sThu %sFri %sSat Closed %sSun Closed"
2252
  msgstr ""
2253
 
2254
+ #: inc/wpsl-functions.php:255
2255
  msgid "Satellite"
2256
  msgstr ""
2257
 
2258
+ #: inc/wpsl-functions.php:256
2259
  msgid "Hybrid"
2260
  msgstr ""
2261
 
2262
+ #: inc/wpsl-functions.php:257
2263
  msgid "Terrain"
2264
  msgstr ""
2265
 
2266
+ #: inc/wpsl-functions.php:272
2267
  msgid "(city) (state) (zip code)"
2268
  msgstr ""
2269
 
2270
+ #: inc/wpsl-functions.php:273
2271
  msgid "(city), (state) (zip code)"
2272
  msgstr ""
2273
 
2274
+ #: inc/wpsl-functions.php:274
2275
  msgid "(city) (zip code)"
2276
  msgstr ""
2277
 
2278
+ #: inc/wpsl-functions.php:275
2279
  msgid "(city), (zip code)"
2280
  msgstr ""
2281
 
2282
+ #: inc/wpsl-functions.php:276
2283
  msgid "(zip code) (city) (state)"
2284
  msgstr ""
2285
 
2286
+ #: inc/wpsl-functions.php:277
2287
  msgid "(zip code) (city)"
2288
  msgstr ""
readme.txt CHANGED
@@ -5,7 +5,7 @@ Donate link: https://www.paypal.me/tijmensmit
5
  Tags: google maps, store locator, business locations, geocoding, stores, geo, zipcode locator, dealer locater, geocode, gmaps, google map, google map plugin, location finder, map tools, shop locator, wp google map
6
  Requires at least: 3.7
7
  Tested up to: 4.3
8
- Stable tag: 2.0.3
9
  License: GPLv3
10
  License URI: http://www.gnu.org/licenses/gpl.html
11
 
@@ -80,9 +80,9 @@ Add this shortcode [wpsl] to the page where you want to display the store locato
80
 
81
  Make sure you have defined a start point for the map under settings -> Map Settings.
82
 
83
- = I get an error saying the 'sensor' parameter specified in the request must be set to either 'true' or 'false' =
84
 
85
- Make sure you don't have any security plugins, or custom functions running that strip away version numbers from file paths.
86
 
87
  = Why does it show the location I searched for in the wrong country? =
88
 
@@ -107,6 +107,14 @@ If you find a plugin or theme that causes a conflict, please report it on the [s
107
 
108
  == Changelog ==
109
 
 
 
 
 
 
 
 
 
110
  = 2.0.3, October 27, 2015 =
111
  * Fixed: The default search radius is no longer ignored if the Geolocation API is used. Via [xeyefex](https://wordpress.org/support/profile/xeyefex).
112
  * Changed: Replaced get_page ( deprecated ) with get_post.
5
  Tags: google maps, store locator, business locations, geocoding, stores, geo, zipcode locator, dealer locater, geocode, gmaps, google map, google map plugin, location finder, map tools, shop locator, wp google map
6
  Requires at least: 3.7
7
  Tested up to: 4.3
8
+ Stable tag: 2.0.4
9
  License: GPLv3
10
  License URI: http://www.gnu.org/licenses/gpl.html
11
 
80
 
81
  Make sure you have defined a start point for the map under settings -> Map Settings.
82
 
83
+ = The map doesn't work anymore after installing the latest update =
84
 
85
+ If you use a caching plugin, or a service like Cloudflare, then make sure to flush the cache.
86
 
87
  = Why does it show the location I searched for in the wrong country? =
88
 
107
 
108
  == Changelog ==
109
 
110
+ = 2.0.4, November 23, 2015 =
111
+ * Fixed: HTML entity encoding issue in the marker tooltip, via [momo-fr](https://wordpress.org/support/profile/momo-fr) and [js-enigma](https://wordpress.org/support/profile/js-enigma).
112
+ * Fixed: Missing tooltip text for the start marker, and the info window for the start marker breaking when the Geolocation API successfully determined the users location.
113
+ * Fixed: Multiple shortcode attributes ignoring the "false" value, via [dynamitepets](https://wordpress.org/support/profile/dynamitepets) and [drfoxg](https://profiles.wordpress.org/drfoxg/).
114
+ * Changed: If a WPML compatible plugin is detected, a notice is shown above the label section explaining that the "String Translations" section in the used multilingual plugin should be used to change the labels.
115
+ * Changed: Removed the "sensor" parameter from the Google Maps JavaScript API. It triggered a 'SensorNotRequired' [warning](https://developers.google.com/maps/documentation/javascript/error-messages).
116
+ * Changed: Updated translation files.
117
+
118
  = 2.0.3, October 27, 2015 =
119
  * Fixed: The default search radius is no longer ignored if the Geolocation API is used. Via [xeyefex](https://wordpress.org/support/profile/xeyefex).
120
  * Changed: Replaced get_page ( deprecated ) with get_post.
uninstall.php CHANGED
@@ -3,7 +3,7 @@ if ( !defined( 'ABSPATH' ) && !defined( 'WP_UNINSTALL_PLUGIN ') ) {
3
  exit;
4
  }
5
 
6
- /* Check if we need to run the uninstall for a single or mu installation */
7
  if ( !is_multisite() ) {
8
  wpsl_uninstall();
9
  } else {
@@ -25,16 +25,15 @@ if ( !is_multisite() ) {
25
  * Delete the table ( users who upgraded from 1.x only ), options, store locations and taxonomies from the db.
26
  *
27
  * @todo Make the removal of db data optional through a checkbox on the settings page.
28
- *
29
  */
30
  function wpsl_uninstall() {
31
 
32
  global $wpdb, $current_user;
33
 
34
- /* If the 1.x table still exists we remove it */
35
  $wpdb->query( 'DROP TABLE IF EXISTS ' . $wpdb->prefix . 'wpsl_stores' );
36
 
37
- /* Check if we need to delete the autoload transients */
38
  $option_names = $wpdb->get_results( "SELECT option_name AS transient_name FROM " . $wpdb->options . " WHERE option_name LIKE ('\_transient\_wpsl\_autoload\_%')" );
39
 
40
  if ( $option_names ) {
@@ -45,7 +44,7 @@ function wpsl_uninstall() {
45
  }
46
  }
47
 
48
- /* Delete the options used by the plugin */
49
  $options = array( 'wpsl_version', 'wpsl_settings', 'wpsl_notices', 'wpsl_legacy_support', 'wpsl_flush_rewrite', 'wpsl_delete_transient', 'wpsl_convert_cpt' );
50
 
51
  foreach ( $options as $option ) {
@@ -55,13 +54,13 @@ function wpsl_uninstall() {
55
  delete_user_meta( $current_user->ID, 'wpsl_disable_location_warning' );
56
  delete_user_meta( $current_user->ID, 'wpsl_stores_per_page' );
57
 
58
- /* Disable the time limit before we start removing all the store location posts */
59
  @set_time_limit( 0 );
60
 
61
- /* 'any' ignores trashed or auto-draft store location posts, so we make sure they are removed as well */
62
  $post_statuses = array( 'any', 'trash', 'auto-draft' );
63
 
64
- /* Delete the 'wpsl_stores' custom post types */
65
  foreach ( $post_statuses as $post_status ) {
66
  $posts = get_posts( array( 'post_type' => 'wpsl_stores', 'post_status' => $post_status, 'posts_per_page' => -1, 'fields' => 'ids' ) );
67
 
@@ -72,7 +71,7 @@ function wpsl_uninstall() {
72
  }
73
  }
74
 
75
- /* Delete the terms, taxonomy and term relationships for the wpsl_store_category */
76
  $sql = "DELETE t,tt,tr FROM $wpdb->terms AS t
77
  LEFT JOIN $wpdb->term_taxonomy AS tt ON t.term_id = tt.term_id
78
  LEFT JOIN $wpdb->term_relationships AS tr ON tr.term_taxonomy_id = tt.term_taxonomy_id
3
  exit;
4
  }
5
 
6
+ // Check if we need to run the uninstall for a single or mu installation.
7
  if ( !is_multisite() ) {
8
  wpsl_uninstall();
9
  } else {
25
  * Delete the table ( users who upgraded from 1.x only ), options, store locations and taxonomies from the db.
26
  *
27
  * @todo Make the removal of db data optional through a checkbox on the settings page.
 
28
  */
29
  function wpsl_uninstall() {
30
 
31
  global $wpdb, $current_user;
32
 
33
+ // If the 1.x table still exists we remove it.
34
  $wpdb->query( 'DROP TABLE IF EXISTS ' . $wpdb->prefix . 'wpsl_stores' );
35
 
36
+ // Check if we need to delete the autoload transients.
37
  $option_names = $wpdb->get_results( "SELECT option_name AS transient_name FROM " . $wpdb->options . " WHERE option_name LIKE ('\_transient\_wpsl\_autoload\_%')" );
38
 
39
  if ( $option_names ) {
44
  }
45
  }
46
 
47
+ // Delete the options used by the plugin.
48
  $options = array( 'wpsl_version', 'wpsl_settings', 'wpsl_notices', 'wpsl_legacy_support', 'wpsl_flush_rewrite', 'wpsl_delete_transient', 'wpsl_convert_cpt' );
49
 
50
  foreach ( $options as $option ) {
54
  delete_user_meta( $current_user->ID, 'wpsl_disable_location_warning' );
55
  delete_user_meta( $current_user->ID, 'wpsl_stores_per_page' );
56
 
57
+ // Disable the time limit before we start removing all the store location posts.
58
  @set_time_limit( 0 );
59
 
60
+ // 'any' ignores trashed or auto-draft store location posts, so we make sure they are removed as well.
61
  $post_statuses = array( 'any', 'trash', 'auto-draft' );
62
 
63
+ // Delete the 'wpsl_stores' custom post types.
64
  foreach ( $post_statuses as $post_status ) {
65
  $posts = get_posts( array( 'post_type' => 'wpsl_stores', 'post_status' => $post_status, 'posts_per_page' => -1, 'fields' => 'ids' ) );
66
 
71
  }
72
  }
73
 
74
+ // Delete the terms, taxonomy and term relationships for the wpsl_store_category.
75
  $sql = "DELETE t,tt,tr FROM $wpdb->terms AS t
76
  LEFT JOIN $wpdb->term_taxonomy AS tt ON t.term_id = tt.term_id
77
  LEFT JOIN $wpdb->term_relationships AS tr ON tr.term_taxonomy_id = tt.term_taxonomy_id
wp-store-locator.php CHANGED
@@ -4,7 +4,7 @@ Plugin Name: WP Store Locator
4
  Description: An easy to use location management system that enables users to search for nearby physical stores
5
  Author: Tijmen Smit
6
  Author URI: http://wpstorelocator.co/
7
- Version: 2.0.3
8
  Text Domain: wpsl
9
  Domain Path: /languages/
10
  License: GPL v3
@@ -28,7 +28,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
28
  @package WP_Store_locator
29
  @category Core
30
  @author Tijmen Smit
31
- @version 2.0
32
  */
33
 
34
  if ( !class_exists( 'WP_Store_locator' ) ) {
@@ -51,15 +50,15 @@ if ( !class_exists( 'WP_Store_locator' ) ) {
51
  }
52
 
53
  /**
54
- * Setup plugin constants
55
  *
56
- * @since 1.0
57
  * @return void
58
  */
59
  public function define_constants() {
60
 
61
  if ( !defined( 'WPSL_VERSION_NUM' ) )
62
- define( 'WPSL_VERSION_NUM', '2.0.3' );
63
 
64
  if ( !defined( 'WPSL_URL' ) )
65
  define( 'WPSL_URL', plugin_dir_url( __FILE__ ) );
@@ -72,9 +71,9 @@ if ( !class_exists( 'WP_Store_locator' ) ) {
72
  }
73
 
74
  /**
75
- * Include the required files
76
  *
77
- * @since 2.0
78
  * @return void
79
  */
80
  public function includes() {
@@ -91,9 +90,9 @@ if ( !class_exists( 'WP_Store_locator' ) ) {
91
  }
92
 
93
  /**
94
- * Setup the plugin settings
95
  *
96
- * @since 2.0
97
  * @return void
98
  */
99
  public function plugin_settings() {
@@ -105,9 +104,9 @@ if ( !class_exists( 'WP_Store_locator' ) ) {
105
  }
106
 
107
  /**
108
- * Install the plugin data
109
  *
110
- * @since 2.0
111
  * @return void
112
  */
113
  public function install( $network_wide ) {
4
  Description: An easy to use location management system that enables users to search for nearby physical stores
5
  Author: Tijmen Smit
6
  Author URI: http://wpstorelocator.co/
7
+ Version: 2.0.4
8
  Text Domain: wpsl
9
  Domain Path: /languages/
10
  License: GPL v3
28
  @package WP_Store_locator
29
  @category Core
30
  @author Tijmen Smit
 
31
  */
32
 
33
  if ( !class_exists( 'WP_Store_locator' ) ) {
50
  }
51
 
52
  /**
53
+ * Setup plugin constants.
54
  *
55
+ * @since 1.0.0
56
  * @return void
57
  */
58
  public function define_constants() {
59
 
60
  if ( !defined( 'WPSL_VERSION_NUM' ) )
61
+ define( 'WPSL_VERSION_NUM', '2.0.4' );
62
 
63
  if ( !defined( 'WPSL_URL' ) )
64
  define( 'WPSL_URL', plugin_dir_url( __FILE__ ) );
71
  }
72
 
73
  /**
74
+ * Include the required files.
75
  *
76
+ * @since 2.0.0
77
  * @return void
78
  */
79
  public function includes() {
90
  }
91
 
92
  /**
93
+ * Setup the plugin settings.
94
  *
95
+ * @since 2.0.0
96
  * @return void
97
  */
98
  public function plugin_settings() {
104
  }
105
 
106
  /**
107
+ * Install the plugin data.
108
  *
109
+ * @since 2.0.0
110
  * @return void
111
  */
112
  public function install( $network_wide ) {