Ajax Search for WooCommerce - Version 1.4.0

Version Description

Download this release

Release Info

Developer damian-gora
Plugin Icon 128x128 Ajax Search for WooCommerce
Version 1.4.0
Comparing to
See all releases

Code changes from version 1.3.3 to 1.4.0

Files changed (46) hide show
  1. ajax-search-for-woocommerce.php +61 -17
  2. assets/css/admin-style.css +29 -2
  3. assets/css/style.css +159 -94
  4. assets/css/style.min.css +1 -1
  5. assets/js/admin.js +12 -0
  6. assets/js/admin.min.js +1 -1
  7. assets/js/search.js +116 -20
  8. assets/js/search.min.js +1 -1
  9. composer/composer.json +3 -0
  10. composer/composer.lock +70 -0
  11. includes/Admin/Install.php +78 -46
  12. includes/Admin/Requirements.php +34 -16
  13. includes/Conflicts/Solver.php +52 -0
  14. includes/Personalization.php +4 -2
  15. includes/Scripts.php +1 -0
  16. includes/Settings.php +55 -17
  17. includes/Setup.php +22 -5
  18. languages/ajax-search-for-woocommerce-es_ES.mo +0 -0
  19. languages/ajax-search-for-woocommerce-es_ES.po +1288 -0
  20. languages/ajax-search-for-woocommerce-it_IT.mo +0 -0
  21. languages/ajax-search-for-woocommerce-it_IT.po +1370 -0
  22. languages/ajax-search-for-woocommerce-pl_PL.mo +0 -0
  23. languages/ajax-search-for-woocommerce-pl_PL.po +1151 -275
  24. languages/ajax-search-for-woocommerce.pot +1042 -158
  25. partials/storefront.php +25 -23
  26. readme.txt +11 -2
  27. vendor/autoload.php +1 -1
  28. vendor/composer/ClassLoader.php +2 -2
  29. vendor/composer/autoload_classmap.php +1 -0
  30. vendor/composer/autoload_namespaces.php +1 -0
  31. vendor/composer/autoload_real.php +4 -4
  32. vendor/composer/autoload_static.php +19 -3
  33. vendor/composer/installed.json +56 -1
  34. vendor/mobiledetect/mobiledetectlib/LICENSE.txt +48 -0
  35. vendor/mobiledetect/mobiledetectlib/Mobile_Detect.json +1 -0
  36. vendor/mobiledetect/mobiledetectlib/Mobile_Detect.php +1473 -0
  37. vendor/mobiledetect/mobiledetectlib/README.md +344 -0
  38. vendor/mobiledetect/mobiledetectlib/composer.json +31 -0
  39. vendor/mobiledetect/mobiledetectlib/composer.lock +983 -0
  40. vendor/mobiledetect/mobiledetectlib/docs/CONTRIBUTING.md +48 -0
  41. vendor/mobiledetect/mobiledetectlib/docs/HISTORY.md +11 -0
  42. vendor/mobiledetect/mobiledetectlib/docs/ISSUE_TEMPLATE.md +15 -0
  43. vendor/mobiledetect/mobiledetectlib/docs/KNOWN_LIMITATIONS.md +11 -0
  44. vendor/mobiledetect/mobiledetectlib/export/exportToJSON.php +67 -0
  45. vendor/mobiledetect/mobiledetectlib/namespaced/Detection/MobileDetect.php +22 -0
  46. vendor/mobiledetect/mobiledetectlib/phpcs.xml +20 -0
ajax-search-for-woocommerce.php CHANGED
@@ -4,13 +4,13 @@
4
  * Plugin Name: AJAX Search for WooCommerce
5
  * Plugin URI: https://wordpress.org/plugins/ajax-search-for-woocommerce/
6
  * Description: Allows your customers to search products easily and quickly. It will display the results instantly while typing in an inputbox.
7
- * Version: 1.3.3
8
  * Author: Damian Góra
9
  * Author URI: http://damiangora.com
10
  * Text Domain: ajax-search-for-woocommerce
11
- * Domain Path: /languages/
12
  * WC requires at least: 3.0
13
- * WC tested up to: 3.5
14
  *
15
  */
16
  // Exit if accessed directly
@@ -34,17 +34,21 @@ if ( !class_exists( 'DGWT_WC_Ajax_Search' ) && !function_exists( 'dgoraAsfwFs' )
34
  public $nativeSearch ;
35
  public $tntsearch ;
36
  public $tntsearchValid = false ;
37
- public static function get_instance()
 
 
 
38
  {
39
 
40
  if ( !isset( self::$instance ) && !self::$instance instanceof DGWT_WC_Ajax_Search ) {
41
  self::$instance = new DGWT_WC_Ajax_Search();
42
  self::$instance->constants();
43
- self::$instance->load_textdomain();
44
- if ( !self::$instance->check_requirements() ) {
45
  return;
46
  }
47
  self::$instance->autoload();
 
48
  $setup = new \DgoraWcas\Setup();
49
  $setup->init();
50
  self::$instance->settings = new \DgoraWcas\Settings();
@@ -67,6 +71,7 @@ if ( !class_exists( 'DGWT_WC_Ajax_Search' ) && !function_exists( 'dgoraAsfwFs' )
67
  new \DgoraWcas\Admin\Requirements();
68
  }
69
 
 
70
  self::$instance->backwardCompatibility = new \DgoraWcas\BackwardCompatibility();
71
  }
72
 
@@ -84,16 +89,18 @@ if ( !class_exists( 'DGWT_WC_Ajax_Search' ) && !function_exists( 'dgoraAsfwFs' )
84
 
85
  /**
86
  * Check requirements
 
 
87
  */
88
- private function check_requirements()
89
  {
90
  if ( version_compare( PHP_VERSION, '5.5.0' ) < 0 ) {
91
 
92
  if ( version_compare( PHP_VERSION, '5.3.0' ) < 0 ) {
93
- add_action( 'admin_notices', array( $this, 'admin_notice_req_php_53' ) );
94
  return false;
95
  } else {
96
- add_action( 'admin_notices', array( $this, 'admin_notice_req_php_55' ) );
97
  }
98
 
99
  }
@@ -110,7 +117,7 @@ if ( !class_exists( 'DGWT_WC_Ajax_Search' ) && !function_exists( 'dgoraAsfwFs' )
110
  * Notice: PHP version less than 5.3
111
  * @return void
112
  */
113
- public function admin_notice_req_php_53()
114
  {
115
  ?>
116
  <div class="error">
@@ -126,8 +133,10 @@ if ( !class_exists( 'DGWT_WC_Ajax_Search' ) && !function_exists( 'dgoraAsfwFs' )
126
 
127
  /**
128
  * Notice: PHP version less than 5.5
 
 
129
  */
130
- public function admin_notice_req_php_55()
131
  {
132
  if ( defined( 'DISABLE_NAG_NOTICES' ) && DISABLE_NAG_NOTICES ) {
133
  return;
@@ -166,6 +175,8 @@ if ( !class_exists( 'DGWT_WC_Ajax_Search' ) && !function_exists( 'dgoraAsfwFs' )
166
 
167
  /**
168
  * Notice: requires WooCommerce
 
 
169
  */
170
  public function admin_notice_no_woocommerce()
171
  {
@@ -182,6 +193,8 @@ if ( !class_exists( 'DGWT_WC_Ajax_Search' ) && !function_exists( 'dgoraAsfwFs' )
182
 
183
  /**
184
  * Setup plugin constants
 
 
185
  */
186
  private function constants()
187
  {
@@ -205,6 +218,8 @@ if ( !class_exists( 'DGWT_WC_Ajax_Search' ) && !function_exists( 'dgoraAsfwFs' )
205
  *
206
  * @param string $name
207
  * @param string|bool $value
 
 
208
  */
209
  private function define( $name, $value )
210
  {
@@ -215,6 +230,8 @@ if ( !class_exists( 'DGWT_WC_Ajax_Search' ) && !function_exists( 'dgoraAsfwFs' )
215
 
216
  /**
217
  * PSR-4 autoload
 
 
218
  */
219
  public function autoload()
220
  {
@@ -227,16 +244,20 @@ if ( !class_exists( 'DGWT_WC_Ajax_Search' ) && !function_exists( 'dgoraAsfwFs' )
227
 
228
  /**
229
  * Actions and filters
 
 
230
  */
231
  private function hooks()
232
  {
233
- add_action( 'admin_init', array( $this, 'admin_scripts' ), 8 );
234
  }
235
 
236
- /*
237
  * Enqueue admin sripts
 
 
238
  */
239
- public function admin_scripts()
240
  {
241
  // Register CSS
242
  wp_register_style(
@@ -267,20 +288,43 @@ if ( !class_exists( 'DGWT_WC_Ajax_Search' ) && !function_exists( 'dgoraAsfwFs' )
267
  }
268
  }
269
 
270
- /*
271
  * Register text domain
 
 
272
  */
273
- private function load_textdomain()
274
  {
275
  $lang_dir = dirname( plugin_basename( DGWT_WCAS_FILE ) ) . '/languages/';
276
  load_plugin_textdomain( 'ajax-search-for-woocommerce', false, $lang_dir );
277
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
278
 
279
  }
280
  // Init the plugin
281
  function DGWT_WCAS()
282
  {
283
- return DGWT_WC_Ajax_Search::get_instance();
284
  }
285
 
286
  add_action( 'plugins_loaded', 'DGWT_WCAS' );
4
  * Plugin Name: AJAX Search for WooCommerce
5
  * Plugin URI: https://wordpress.org/plugins/ajax-search-for-woocommerce/
6
  * Description: Allows your customers to search products easily and quickly. It will display the results instantly while typing in an inputbox.
7
+ * Version: 1.4.0
8
  * Author: Damian Góra
9
  * Author URI: http://damiangora.com
10
  * Text Domain: ajax-search-for-woocommerce
11
+ * Domain Path: /languages
12
  * WC requires at least: 3.0
13
+ * WC tested up to: 3.6
14
  *
15
  */
16
  // Exit if accessed directly
34
  public $nativeSearch ;
35
  public $tntsearch ;
36
  public $tntsearchValid = false ;
37
+ public $tntsearchMySql ;
38
+ public $tntsearchMySqlValid = false ;
39
+ public $mobileDetect ;
40
+ public static function getInstance()
41
  {
42
 
43
  if ( !isset( self::$instance ) && !self::$instance instanceof DGWT_WC_Ajax_Search ) {
44
  self::$instance = new DGWT_WC_Ajax_Search();
45
  self::$instance->constants();
46
+ self::$instance->loadTextdomain();
47
+ if ( !self::$instance->checkRequirements() ) {
48
  return;
49
  }
50
  self::$instance->autoload();
51
+ self::$instance->mobileDetect = new \Detection\MobileDetect();
52
  $setup = new \DgoraWcas\Setup();
53
  $setup->init();
54
  self::$instance->settings = new \DgoraWcas\Settings();
71
  new \DgoraWcas\Admin\Requirements();
72
  }
73
 
74
+ new \DgoraWcas\Conflicts\Solver();
75
  self::$instance->backwardCompatibility = new \DgoraWcas\BackwardCompatibility();
76
  }
77
 
89
 
90
  /**
91
  * Check requirements
92
+ *
93
+ * @return void
94
  */
95
+ private function checkRequirements()
96
  {
97
  if ( version_compare( PHP_VERSION, '5.5.0' ) < 0 ) {
98
 
99
  if ( version_compare( PHP_VERSION, '5.3.0' ) < 0 ) {
100
+ add_action( 'admin_notices', array( $this, 'adminNoticeReqPhp53' ) );
101
  return false;
102
  } else {
103
+ add_action( 'admin_notices', array( $this, 'adminNoticeReqPhp55' ) );
104
  }
105
 
106
  }
117
  * Notice: PHP version less than 5.3
118
  * @return void
119
  */
120
+ public function adminNoticeReqPhp53()
121
  {
122
  ?>
123
  <div class="error">
133
 
134
  /**
135
  * Notice: PHP version less than 5.5
136
+ *
137
+ * @return void
138
  */
139
+ public function adminNoticeReqPhp55()
140
  {
141
  if ( defined( 'DISABLE_NAG_NOTICES' ) && DISABLE_NAG_NOTICES ) {
142
  return;
175
 
176
  /**
177
  * Notice: requires WooCommerce
178
+ *
179
+ * @return void
180
  */
181
  public function admin_notice_no_woocommerce()
182
  {
193
 
194
  /**
195
  * Setup plugin constants
196
+ *
197
+ * @return void
198
  */
199
  private function constants()
200
  {
218
  *
219
  * @param string $name
220
  * @param string|bool $value
221
+ *
222
+ * @return void
223
  */
224
  private function define( $name, $value )
225
  {
230
 
231
  /**
232
  * PSR-4 autoload
233
+ *
234
+ * @return void
235
  */
236
  public function autoload()
237
  {
244
 
245
  /**
246
  * Actions and filters
247
+ *
248
+ * @return void
249
  */
250
  private function hooks()
251
  {
252
+ add_action( 'admin_init', array( $this, 'adminScripts' ), 8 );
253
  }
254
 
255
+ /**
256
  * Enqueue admin sripts
257
+ *
258
+ * @return void
259
  */
260
+ public function adminScripts()
261
  {
262
  // Register CSS
263
  wp_register_style(
288
  }
289
  }
290
 
291
+ /**
292
  * Register text domain
293
+ *
294
+ * @return void
295
  */
296
+ private function loadTextdomain()
297
  {
298
  $lang_dir = dirname( plugin_basename( DGWT_WCAS_FILE ) ) . '/languages/';
299
  load_plugin_textdomain( 'ajax-search-for-woocommerce', false, $lang_dir );
300
  }
301
+
302
+ /**
303
+ * Index database provider
304
+ *
305
+ * @TODO Remove the SQLIte support in the future
306
+ *
307
+ * @return string
308
+ */
309
+ public function getDatabaseProvider()
310
+ {
311
+ $provider = 'mysql';
312
+ $opt = $this->settings->get_opt( 'search_engine_provider', 'mysql' );
313
+
314
+ if ( $opt === 'sqlite' ) {
315
+ $provider = 'sqlite';
316
+ } elseif ( $opt === 'mysql' ) {
317
+ $provider = 'mysql';
318
+ }
319
+
320
+ return $provider;
321
+ }
322
 
323
  }
324
  // Init the plugin
325
  function DGWT_WCAS()
326
  {
327
+ return DGWT_WC_Ajax_Search::getInstance();
328
  }
329
 
330
  add_action( 'plugins_loaded', 'DGWT_WCAS' );
assets/css/admin-style.css CHANGED
@@ -100,8 +100,13 @@
100
  display: none;
101
  }
102
 
103
- .dgwt_wcas_settings-group label {
104
  width: 100%;
 
 
 
 
 
105
  }
106
 
107
  .dgwt_wcas_settings-group > table > tbody > tr > td {
@@ -646,11 +651,21 @@ input[type=checkbox].dgwt-wcas-check:checked ~ .dgwt-wcas-switch {
646
 
647
  .dgwt-wcas-indexer-logs {
648
  margin: 10px 0;
 
 
 
 
 
 
649
  }
650
 
651
  .dgwt-wcas-indexer-log {
652
  display: block;
653
  }
 
 
 
 
654
 
655
  .dgwt-wcas-indexer-logs__error {
656
  color: #db6564;
@@ -738,7 +753,19 @@ input[type=checkbox].dgwt-wcas-check:checked ~ .dgwt-wcas-switch {
738
  align-items: flex-end;
739
  margin-top: 15px;
740
  }
741
-
 
 
 
 
 
 
 
 
 
 
 
 
742
  .button.ajax-build-index-primary {
743
  background: #a36597;
744
  border-color: #a36597;
100
  display: none;
101
  }
102
 
103
+ .dgwt_wcas_settings-group .form-table td fieldset label {
104
  width: 100%;
105
+ display: flex;
106
+ align-items: center;
107
+ }
108
+ .dgwt_wcas_settings-group label input[type="checkbox"] {
109
+ margin: 0;
110
  }
111
 
112
  .dgwt_wcas_settings-group > table > tbody > tr > td {
651
 
652
  .dgwt-wcas-indexer-logs {
653
  margin: 10px 0;
654
+ font-family: monospace;
655
+ background: #fff;
656
+ border: 1px solid #ccc;
657
+ padding: 10px;
658
+ color: #888;
659
+ font-size: 11px;
660
  }
661
 
662
  .dgwt-wcas-indexer-log {
663
  display: block;
664
  }
665
+ .dgwt-wcas-indexer-log code {
666
+ padding: 1px 5px 1px 5px;
667
+ font-size: 11px;
668
+ }
669
 
670
  .dgwt-wcas-indexer-logs__error {
671
  color: #db6564;
753
  align-items: flex-end;
754
  margin-top: 15px;
755
  }
756
+ .dgwt-wcas-indexing-header__troubleshooting {
757
+ font-size: 13px;
758
+ border: 2px dashed #e7e7e7;
759
+ padding: 10px;
760
+ line-height: 144%;
761
+ }
762
+ .dgwt-wcas-indexing-header__troubleshooting a {
763
+ text-decoration: none;
764
+ }
765
+ .wcas-ajax-build-index-wait {
766
+ opacity: 0.5;
767
+ pointer-events: none;
768
+ }
769
  .button.ajax-build-index-primary {
770
  background: #a36597;
771
  border-color: #a36597;
assets/css/style.css CHANGED
@@ -31,12 +31,12 @@
31
  margin: 0 0 0 15px !important;
32
  }
33
 
34
-
35
  .dgwt-wcas-preloader-wrapp img {
36
  margin: 10px auto 0 auto;
37
  display: block;
38
  max-width: 200px;
39
  }
 
40
  .dgwt-wcas-preloader-wrapp img.dgwt-wcas-placeholder-preloader {
41
  display: block;
42
  width: 100%;
@@ -55,6 +55,7 @@
55
  box-sizing: border-box;
56
  overflow-y: auto;
57
  }
 
58
  .dgwt-wcas-suggestions-wrapp.dgwt-wcas-suggestions-wrapp--top {
59
  border: 1px solid #ddd;
60
  border-bottom: none;
@@ -83,15 +84,20 @@
83
  font-size: 12px;
84
  line-height: 110%;
85
  text-align: left;
86
- padding: 7px 0;
87
  position: relative;
88
  border-bottom: 1px solid #dfdfdf;
89
  display: flex;
90
- flex-direction: column;
91
- justify-content: center;
 
92
  resize: vertical;
93
  }
94
 
 
 
 
 
95
  .dgwt-wcas-suggestion.dgwt-wcas-suggestion-no-border-bottom {
96
  border-bottom: none;
97
  }
@@ -108,10 +114,11 @@
108
  }
109
 
110
  .dgwt-wcas-has-img .dgwt-wcas-suggestion.dgwt-wcas-suggestion-product {
111
- padding: 12px 0;
 
 
112
  }
113
 
114
-
115
  .dgwt-wcas-suggestion.dgwt-wcas-suggestion-more,
116
  .dgwt-wcas-is-details .dgwt-wcas-has-img .dgwt-wcas-suggestion.dgwt-wcas-suggestion-more {
117
  min-height: 30px;
@@ -123,12 +130,20 @@
123
  text-align: center;
124
  }
125
 
126
-
127
  .dgwt-wcas-st {
128
- padding-left: 10px;
129
  display: block;
130
  color: #444;
131
  font-size: 15px;
 
 
 
 
 
 
 
 
 
 
132
  }
133
 
134
  .dgwt-wcas-st > span.dgwt-wcas-st--tax {
@@ -152,66 +167,29 @@
152
  width: 100%;
153
  padding-right: 10px;
154
  }
155
-
156
- .dgwt-wcas-has-price .dgwt-wcas-suggestion:not(.dgwt-wcas-suggestion-cat) .dgwt-wcas-st {
157
- padding-right: 80px;
158
- }
159
-
160
- .rtl .dgwt-wcas-has-price .dgwt-wcas-suggestion:not(.dgwt-wcas-suggestion-cat) .dgwt-wcas-st {
161
  padding-right: 0;
162
- padding-left: 80px;
163
- }
164
-
165
-
166
- .dgwt-wcas-has-img .dgwt-wcas-content-wrapp {
167
- padding-left: 60px;
168
- }
169
-
170
- .rtl .dgwt-wcas-has-img .dgwt-wcas-content-wrapp {
171
- padding-right: 70px;
172
- padding-left: 0;
173
- }
174
-
175
- .rtl.dgwt-wcas-is-details .dgwt-wcas-has-img .dgwt-wcas-content-wrapp {
176
- padding-right: 50px;
177
- padding-left: 0;
178
  }
179
 
180
  .dgwt-wcas-sku {
181
  font-size: 80%;
182
- margin-left: 6px;
183
- }
184
-
185
- .dgwt-wcas-st > span {
186
- display: inline-block;
187
- vertical-align: middle;
188
  }
189
 
190
  .dgwt-wcas-si {
191
- position: absolute;
192
- left: 10px;
193
- top: 0;
194
  width: 50px;
195
  display: block;
196
  height: 100%;
197
- min-height: 50px;
198
- }
199
-
200
- .rtl .dgwt-wcas-si {
201
- left: auto;
202
- right: 10px;
203
  }
204
 
205
  .dgwt-wcas-si img {
206
  background: #fff none repeat scroll 0 0;
207
  border: 1px solid #e8e8e8;
208
  border-radius: 3px;
209
- bottom: 0;
210
  display: block;
211
  margin: auto;
212
  padding: 2px;
213
- position: absolute;
214
- top: 0;
215
  height: auto;
216
  width: auto;
217
  max-height: 90%;
@@ -219,23 +197,31 @@
219
  }
220
 
221
  .dgwt-wcas-content-wrapp {
222
- padding-left: 60px;
 
 
 
 
 
 
 
 
 
 
 
223
  }
224
 
225
  .dgwt-wcas-sp {
226
  color: #555;
227
  font-size: 14px;
228
- position: absolute;
229
- right: 10px;
230
- top: 5px;
231
- vertical-align: middle;
232
  line-height: 120%;
233
  text-align: right;
 
 
234
  }
235
 
236
- .rtl .dgwt-wcas-sp {
237
- right: auto;
238
- left: 10px;
239
  }
240
 
241
  .dgwt-wcas-search-form {
@@ -251,15 +237,10 @@
251
  .dgwt-wcas-sd {
252
  color: #777;
253
  display: block;
254
- padding-left: 11px;
255
  line-height: 14px;
256
- padding-right: 60px;
257
  margin-top: 5px;
258
- }
259
-
260
- .rtl .dgwt-wcas-sd {
261
- padding-left: 60px;
262
- padding-right: 0;
263
  }
264
 
265
  .dgwt-wcas-suggestion-selected {
@@ -414,20 +395,22 @@
414
  justify-content: center;
415
  display: flex;
416
  flex-direction: column;
417
- max-width: 190px;
418
  width: 100%;
 
419
  }
 
420
  .dgwt-wcas-pd-rest .product-title {
421
  display: block;
422
  line-height: 100%;
423
  font-weight: 500;
424
  margin-bottom: 5px;
425
  }
 
426
  .dgwt-wcas-tpd-rest {
427
  max-width: 200px;
428
  }
429
 
430
- .dgwt-wcas-tpd-rest .product-title{
431
  display: block;
432
  line-height: 100%;
433
  font-size: 13px;
@@ -525,7 +508,7 @@
525
 
526
  .dgwt-wcas-pd-details {
527
  display: flex;
528
- justify-content: space-between;
529
  }
530
 
531
  .dgwt-wcas-tpd-image, .dgwt-wcas-pd-image {
@@ -596,7 +579,7 @@ input[type="text"].dgwt-cas-search-input {
596
  }
597
 
598
  .dgwt-wcas-pd-addtc .add_to_cart_inline,
599
- .dgwt-wcas-pd-addtc .add_to_cart_button{
600
  margin: 0;
601
  }
602
 
@@ -765,7 +748,7 @@ input[type="submit"].dgwt-wcas-search-submit, button.dgwt-wcas-search-submit {
765
  -o-transition: all 250ms ease-in-out;
766
  transition: all 250ms ease-in-out;
767
  text-transform: uppercase;
768
- background-color: #96588A;
769
  border-radius: 0 2px 2px 0;
770
  -webkit-border-radius: 0 2px 2px 0;
771
  text-shadow: 0 -1px 0 rgba(0, 0, 0, .3);
@@ -798,7 +781,7 @@ input[type="submit"].dgwt-wcas-search-submit, button.dgwt-wcas-search-submit {
798
  position: absolute;
799
  border-width: 8px 8px 8px 0;
800
  border-style: solid solid solid none;
801
- border-color: transparent #96588A transparent;
802
  top: 12px;
803
  left: -6px;
804
  -webkit-transition: all 250ms ease-in-out;
@@ -816,12 +799,12 @@ input[type="submit"].dgwt-wcas-search-submit, button.dgwt-wcas-search-submit {
816
  }
817
 
818
  .dgwt-wcas-sf-wrapp .dgwt-wcas-search-submit:hover:before {
819
- border-right-color: #96588A;
820
  }
821
 
822
  .dgwt-wcas-sf-wrapp .dgwt-wcas-search-submit:focus:before,
823
  .dgwt-wcas-sf-wrapp .dgwt-wcas-search-submit:active:before {
824
- border-right-color: #96588A;
825
  }
826
 
827
  .dgwt-wcas-sf-wrapp .dgwt-wcas-search-submit::-moz-focus-inner { /* remove extra button spacing for Mozilla Firefox */
@@ -833,10 +816,6 @@ input[type="submit"].dgwt-wcas-search-submit, button.dgwt-wcas-search-submit {
833
  fill: #fff;
834
  }
835
 
836
- .dgwt-wcas-has-img .dgwt-wcas-suggestion.dgwt-wcas-suggestion-product {
837
- min-height: 60px;
838
- }
839
-
840
  .dgwt-wcas-details-inner .added_to_cart {
841
  display: block;
842
  }
@@ -849,22 +828,9 @@ input[type="submit"].dgwt-wcas-search-submit, button.dgwt-wcas-search-submit {
849
  display: block;
850
  }
851
 
852
- .dgwt-wcas-has-img .dgwt-wcas-sp,
853
- .dgwt-wcas-has-desc .dgwt-wcas-sp {
854
- top: 12px;
855
- }
856
-
857
  /*------------------------------------------------------
858
  Specific styles for details box
859
  ---------------------------------------------------------*/
860
- .dgwt-wcas-is-details .dgwt-wcas-content-wrapp {
861
- display: flex;
862
- flex-direction: column;
863
- height: 100%;
864
- justify-content: center;
865
- resize: vertical;
866
- padding-left: 20px;
867
- }
868
 
869
  .dgwt-wcas-is-details .dgwt-wcas-suggestions-wrapp {
870
  min-height: 340px;
@@ -878,19 +844,13 @@ body:not(.dgwt-wcas-is-details) .dgwt-wcas-suggestion:last-child {
878
  min-height: 40px;
879
  }
880
 
881
- .dgwt-wcas-is-details .dgwt-wcas-has-img .dgwt-wcas-content-wrapp {
882
- padding-left: 40px;
883
- }
884
-
885
  .dgwt-wcas-is-details .dgwt-wcas-suggestions-wrapp {
886
  overflow: visible;
887
  }
888
 
889
  .dgwt-wcas-is-details .dgwt-wcas-si {
890
- min-height: 40px;
891
  width: 30px;
892
  max-width: 100%;
893
- max-width: 100%;
894
  box-sizing: border-box;
895
  }
896
 
@@ -934,6 +894,111 @@ body:not(.dgwt-wcas-is-details) .dgwt-wcas-suggestion:last-child {
934
  padding: 10px 15px 10px 40px;
935
  }
936
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
937
  /* compatibility with external plugins and themes */
938
  body .dgwt-wcas-content-wrapp .zwave,
939
  body .dgwt-wcas-content-wrapp .rood {
31
  margin: 0 0 0 15px !important;
32
  }
33
 
 
34
  .dgwt-wcas-preloader-wrapp img {
35
  margin: 10px auto 0 auto;
36
  display: block;
37
  max-width: 200px;
38
  }
39
+
40
  .dgwt-wcas-preloader-wrapp img.dgwt-wcas-placeholder-preloader {
41
  display: block;
42
  width: 100%;
55
  box-sizing: border-box;
56
  overflow-y: auto;
57
  }
58
+
59
  .dgwt-wcas-suggestions-wrapp.dgwt-wcas-suggestions-wrapp--top {
60
  border: 1px solid #ddd;
61
  border-bottom: none;
84
  font-size: 12px;
85
  line-height: 110%;
86
  text-align: left;
87
+ padding: 7px 10px;
88
  position: relative;
89
  border-bottom: 1px solid #dfdfdf;
90
  display: flex;
91
+ flex-direction: row;
92
+ justify-content: space-between;
93
+ align-items: center;
94
  resize: vertical;
95
  }
96
 
97
+ .dgwt-wcas-suggestion.dgwt-wcas-suggestion-more {
98
+ justify-content: center;
99
+ }
100
+
101
  .dgwt-wcas-suggestion.dgwt-wcas-suggestion-no-border-bottom {
102
  border-bottom: none;
103
  }
114
  }
115
 
116
  .dgwt-wcas-has-img .dgwt-wcas-suggestion.dgwt-wcas-suggestion-product {
117
+ padding-top: 8px;
118
+ padding-bottom: 8px;
119
+ min-height: 60px;
120
  }
121
 
 
122
  .dgwt-wcas-suggestion.dgwt-wcas-suggestion-more,
123
  .dgwt-wcas-is-details .dgwt-wcas-has-img .dgwt-wcas-suggestion.dgwt-wcas-suggestion-more {
124
  min-height: 30px;
130
  text-align: center;
131
  }
132
 
 
133
  .dgwt-wcas-st {
 
134
  display: block;
135
  color: #444;
136
  font-size: 15px;
137
+ width: 100%;
138
+ }
139
+
140
+ .dgwt-wcas-st > span {
141
+ display: inline-block;
142
+ vertical-align: middle;
143
+ }
144
+
145
+ .dgwt-wcas-has-sku .dgwt-wcas-st-title {
146
+ margin-right: 6px;
147
  }
148
 
149
  .dgwt-wcas-st > span.dgwt-wcas-st--tax {
167
  width: 100%;
168
  padding-right: 10px;
169
  }
170
+ .rtl .dgwt-wcas-st-breadcrumbs {
 
 
 
 
 
171
  padding-right: 0;
172
+ padding-left: 10px;
173
+ text-align: right;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
174
  }
175
 
176
  .dgwt-wcas-sku {
177
  font-size: 80%;
 
 
 
 
 
 
178
  }
179
 
180
  .dgwt-wcas-si {
 
 
 
181
  width: 50px;
182
  display: block;
183
  height: 100%;
 
 
 
 
 
 
184
  }
185
 
186
  .dgwt-wcas-si img {
187
  background: #fff none repeat scroll 0 0;
188
  border: 1px solid #e8e8e8;
189
  border-radius: 3px;
 
190
  display: block;
191
  margin: auto;
192
  padding: 2px;
 
 
193
  height: auto;
194
  width: auto;
195
  max-height: 90%;
197
  }
198
 
199
  .dgwt-wcas-content-wrapp {
200
+ display: flex;
201
+ height: 100%;
202
+ width: 100%;
203
+ justify-content: space-between;
204
+ align-items: center;
205
+ resize: vertical;
206
+ padding-left: 10px;
207
+ }
208
+
209
+ .rtl .dgwt-wcas-content-wrapp {
210
+ padding-left: 0;
211
+ padding-right: 10px;
212
  }
213
 
214
  .dgwt-wcas-sp {
215
  color: #555;
216
  font-size: 14px;
 
 
 
 
217
  line-height: 120%;
218
  text-align: right;
219
+ line-height: 4px;
220
+ padding-left: 10px;
221
  }
222
 
223
+ .dgwt-wcas-sp * {
224
+ line-height: 130%;
 
225
  }
226
 
227
  .dgwt-wcas-search-form {
237
  .dgwt-wcas-sd {
238
  color: #777;
239
  display: block;
 
240
  line-height: 14px;
241
+ width: 100%;
242
  margin-top: 5px;
243
+ font-size: 0.8em;
 
 
 
 
244
  }
245
 
246
  .dgwt-wcas-suggestion-selected {
395
  justify-content: center;
396
  display: flex;
397
  flex-direction: column;
 
398
  width: 100%;
399
+ padding-left: 10px;
400
  }
401
+
402
  .dgwt-wcas-pd-rest .product-title {
403
  display: block;
404
  line-height: 100%;
405
  font-weight: 500;
406
  margin-bottom: 5px;
407
  }
408
+
409
  .dgwt-wcas-tpd-rest {
410
  max-width: 200px;
411
  }
412
 
413
+ .dgwt-wcas-tpd-rest .product-title {
414
  display: block;
415
  line-height: 100%;
416
  font-size: 13px;
508
 
509
  .dgwt-wcas-pd-details {
510
  display: flex;
511
+ justify-content: left;
512
  }
513
 
514
  .dgwt-wcas-tpd-image, .dgwt-wcas-pd-image {
579
  }
580
 
581
  .dgwt-wcas-pd-addtc .add_to_cart_inline,
582
+ .dgwt-wcas-pd-addtc .add_to_cart_button {
583
  margin: 0;
584
  }
585
 
748
  -o-transition: all 250ms ease-in-out;
749
  transition: all 250ms ease-in-out;
750
  text-transform: uppercase;
751
+ background-color: #333;
752
  border-radius: 0 2px 2px 0;
753
  -webkit-border-radius: 0 2px 2px 0;
754
  text-shadow: 0 -1px 0 rgba(0, 0, 0, .3);
781
  position: absolute;
782
  border-width: 8px 8px 8px 0;
783
  border-style: solid solid solid none;
784
+ border-color: transparent #333 transparent;
785
  top: 12px;
786
  left: -6px;
787
  -webkit-transition: all 250ms ease-in-out;
799
  }
800
 
801
  .dgwt-wcas-sf-wrapp .dgwt-wcas-search-submit:hover:before {
802
+ border-right-color: #333;
803
  }
804
 
805
  .dgwt-wcas-sf-wrapp .dgwt-wcas-search-submit:focus:before,
806
  .dgwt-wcas-sf-wrapp .dgwt-wcas-search-submit:active:before {
807
+ border-right-color: #333;
808
  }
809
 
810
  .dgwt-wcas-sf-wrapp .dgwt-wcas-search-submit::-moz-focus-inner { /* remove extra button spacing for Mozilla Firefox */
816
  fill: #fff;
817
  }
818
 
 
 
 
 
819
  .dgwt-wcas-details-inner .added_to_cart {
820
  display: block;
821
  }
828
  display: block;
829
  }
830
 
 
 
 
 
 
831
  /*------------------------------------------------------
832
  Specific styles for details box
833
  ---------------------------------------------------------*/
 
 
 
 
 
 
 
 
834
 
835
  .dgwt-wcas-is-details .dgwt-wcas-suggestions-wrapp {
836
  min-height: 340px;
844
  min-height: 40px;
845
  }
846
 
 
 
 
 
847
  .dgwt-wcas-is-details .dgwt-wcas-suggestions-wrapp {
848
  overflow: visible;
849
  }
850
 
851
  .dgwt-wcas-is-details .dgwt-wcas-si {
 
852
  width: 30px;
853
  max-width: 100%;
 
854
  box-sizing: border-box;
855
  }
856
 
894
  padding: 10px 15px 10px 40px;
895
  }
896
 
897
+ .dgwt-wcas-overlay-mobile-on {
898
+ overflow: hidden;
899
+ }
900
+
901
+ .dgwt-wcas-om-bar {
902
+ display: flex;
903
+ height: 45px;
904
+ width: 100%;
905
+ }
906
+
907
+ .dgwt-wcas-om-bar .dgwt-wcas-om-return {
908
+ width: 45px;
909
+ height: 100%;
910
+ display: block;
911
+ background: #ccc;
912
+ cursor: pointer;
913
+ position: relative;
914
+ }
915
+
916
+ .dgwt-wcas-om-bar .dgwt-wcas-om-return svg {
917
+ width: 23px;
918
+ height: 23px;
919
+ position: absolute;
920
+ left: 12px;
921
+ top: 12px;
922
+ }
923
+
924
+ .rtl .dgwt-wcas-om-bar .dgwt-wcas-om-return svg {
925
+ left: 11px;
926
+ top: 9px;
927
+ -moz-transform: rotate(180deg);
928
+ -webkit-transform: rotate(180deg);
929
+ -o-transform: rotate(180deg);
930
+ -ms-transform: rotate(180deg);
931
+ transform: rotate(180deg);
932
+ }
933
+
934
+ .dgwt-wcas-om-bar .dgwt-wcas-has-submit-off .dgwt-wcas-preloader {
935
+ right: 0 !important;
936
+ }
937
+
938
+ .rtl .dgwt-wcas-om-bar .dgwt-wcas-has-submit-off .dgwt-wcas-preloader {
939
+ left: 4px !important;
940
+ right: auto !important;
941
+ }
942
+
943
+ .dgwt-wcas-om-bar .dgwt-wcas-sf-wrapp button.dgwt-wcas-search-submit {
944
+ display: none;
945
+ }
946
+
947
+ .dgwt-wcas-om-bar .dgwt-wcas-search-wrapp-mobile {
948
+ width: calc(100% - 45px);
949
+ max-width: none;
950
+ }
951
+
952
+ .dgwt-wcas-overlay-mobile {
953
+ position: absolute;
954
+ left: 0;
955
+ right: 0;
956
+ top: 0;
957
+ bottom: 0;
958
+ width: 100%;
959
+ background: #fff;
960
+ }
961
+
962
+ .dgwt-wcas-overlay-mobile * {
963
+ box-sizing: border-box;
964
+ }
965
+
966
+ .dgwt-wcas-search-wrapp-mobile input[type="search"].dgwt-wcas-search-input {
967
+ height: 45px !important;
968
+ border-top: none;
969
+ border-right: none;
970
+ border-left: none;
971
+ border-radius: 0;
972
+ font-size: 16px !important;
973
+ }
974
+
975
+ .dgwt-wcas-overlay-mobile-on .dgwt-wcas-suggestions-wrapp {
976
+ left: 0 !important;
977
+ top: 45px !important;
978
+ width: 100% !important;
979
+ height: calc(100% - 45px) !important;
980
+ position: absolute;
981
+ overflow-y: auto;
982
+ border: none;
983
+ }
984
+ .dgwt-wcas-overlay-mobile-on.dgwt-wcas-is-ios .dgwt-wcas-suggestions-wrapp {
985
+ height: calc(100% - 45px) !important;
986
+ }
987
+
988
+ .dgwt-wcas-overlay-mobile-on.dgwt-wcas-is-ios {
989
+ overflow: visible;
990
+ overflow-x: hidden;
991
+ }
992
+
993
+ .dgwt-wcas-overlay-mobile-on.dgwt-wcas-is-ios .dgwt-wcas-suggestions-wrapp {
994
+ max-height: none !important;
995
+ height: auto !important;
996
+ }
997
+
998
+ .dgwt-wcas-overlay-mobile-on.dgwt-wcas-is-ios > *:not(.dgwt-wcas-overlay-mobile) {
999
+ display: none;
1000
+ }
1001
+
1002
  /* compatibility with external plugins and themes */
1003
  body .dgwt-wcas-content-wrapp .zwave,
1004
  body .dgwt-wcas-content-wrapp .rood {
assets/css/style.min.css CHANGED
@@ -1 +1 @@
1
- .dgwt-wcas-search-wrapp,.dgwt-wcas-suggestions-wrapp{-webkit-box-sizing:border-box;-moz-box-sizing:border-box}.dgwt-wcas-pd-rating:after,.dgwt-wcas-suggestion:after,.dgwt-wcas-tax-product-details:after{content:'';clear:both}.dgwt-wcas-block-scroll{overflow:hidden}.dgwt-wcas-search-wrapp{position:relative;display:block;color:#444;min-width:230px;width:100%;text-align:left;margin:0 auto;box-sizing:border-box}.dgwt-wcas-search-wrapp .product-title{color:#333;display:block;line-height:110%;margin:0}.dgwt-wcas-tpd-image img{margin:0 15px 0 0!important;display:block}.rtl .dgwt-wcas-tpd-image img{margin:0 0 0 15px!important}.dgwt-wcas-preloader-wrapp img{margin:10px auto 0;display:block;max-width:200px}.dgwt-wcas-preloader-wrapp img.dgwt-wcas-placeholder-preloader{display:block;width:100%;height:auto;max-width:300px;margin:0}.dgwt-wcas-suggestions-wrapp{background:#fff;border:1px solid #ddd;border-top:none;padding:0;box-sizing:border-box;overflow-y:auto}.dgwt-wcas-suggestions-wrapp.dgwt-wcas-suggestions-wrapp--top{border:1px solid #ddd;border-bottom:none}.dgwt-wcas-is-detail-box .dgwt-wcas-suggestions-wrapp{max-width:550px}.dgwt-wcas-full-width.dgwt-wcas-is-detail-box .dgwt-wcas-suggestion{padding:8px 15px}.dgwt-wcas-details-left .dgwt-wcas-suggestions-wrapp{border-radius:0 0 5px;border-left-color:#eee}.dgwt-wcas-details-right .dgwt-wcas-suggestions-wrapp{border-radius:0 0 0 5px;border-right-color:#eee}.dgwt-wcas-suggestion{cursor:pointer;font-size:12px;line-height:110%;text-align:left;padding:7px 0;position:relative;border-bottom:1px solid #dfdfdf;display:flex;flex-direction:column;justify-content:center;resize:vertical}.dgwt-wcas-si,.dgwt-wcas-si img{position:absolute;display:block}.dgwt-wcas-suggestion.dgwt-wcas-suggestion-no-border-bottom{border-bottom:none}.dgwt-wcas-suggestion:after{display:block}.dgwt-wcas-suggestion.dgwt-wcas-nores{cursor:default;opacity:.5}.dgwt-wcas-has-img .dgwt-wcas-suggestion.dgwt-wcas-suggestion-product{padding:12px 0}.dgwt-wcas-is-details .dgwt-wcas-has-img .dgwt-wcas-suggestion.dgwt-wcas-suggestion-more,.dgwt-wcas-suggestion.dgwt-wcas-suggestion-more{min-height:30px;text-transform:uppercase}.dgwt-wcas-suggestion.dgwt-wcas-suggestion-more .dgwt-wcas-st-more{padding:0 10px;text-align:center}.dgwt-wcas-st{padding-left:10px;display:block;color:#444;font-size:15px}.dgwt-wcas-st>span.dgwt-wcas-st--tax{display:block;font-style:italic;font-size:10px;text-transform:uppercase;opacity:.4;line-height:10px;margin-bottom:1px;letter-spacing:2px}.dgwt-wcas-st-breadcrumbs{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:80%;text-align:left;opacity:.6;width:100%;padding-right:10px}.dgwt-wcas-has-price .dgwt-wcas-suggestion:not(.dgwt-wcas-suggestion-cat) .dgwt-wcas-st{padding-right:80px}.rtl .dgwt-wcas-has-price .dgwt-wcas-suggestion:not(.dgwt-wcas-suggestion-cat) .dgwt-wcas-st{padding-right:0;padding-left:80px}.dgwt-wcas-has-img .dgwt-wcas-content-wrapp{padding-left:60px}.rtl .dgwt-wcas-has-img .dgwt-wcas-content-wrapp{padding-right:70px;padding-left:0}.rtl.dgwt-wcas-is-details .dgwt-wcas-has-img .dgwt-wcas-content-wrapp{padding-right:50px;padding-left:0}.dgwt-wcas-sku{font-size:80%;margin-left:6px}.dgwt-wcas-st>span{display:inline-block;vertical-align:middle}.dgwt-wcas-si{left:10px;top:0;width:50px;height:100%;min-height:50px}.rtl .dgwt-wcas-si{left:auto;right:10px}.dgwt-wcas-si img{background:#fff;border:1px solid #e8e8e8;border-radius:3px;bottom:0;margin:auto;padding:2px;top:0;height:auto;width:auto;max-height:90%;max-width:100%}.dgwt-wcas-content-wrapp{padding-left:60px}.dgwt-wcas-sp{color:#555;font-size:14px;position:absolute;right:10px;top:5px;vertical-align:middle;line-height:120%;text-align:right}.rtl .dgwt-wcas-sp{right:auto;left:10px}.dgwt-wcas-search-form{margin:0;padding:0}.dgwt-wcas-sp del{opacity:.5;font-size:12px}.dgwt-wcas-sd{color:#777;display:block;padding-left:11px;line-height:14px;padding-right:60px;margin-top:5px}.rtl .dgwt-wcas-sd{padding-left:60px;padding-right:0}.dgwt-wcas-suggestion-selected{background-color:#eee}.dgwt-wcas-suggestion-selected:first-child{border-top:none}.rtl .dgwt-wcas-suggestion{padding-left:0;padding-right:15px;text-align:right}.dgwt-wcas-details-wrapp{background:#fff;border:1px solid #ddd;border-top:none;border-left:none;padding:0;width:300px;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;z-index:100;min-height:340px}.rtl .dgwt-wcas-details-wrapp{border-left:1px solid #ddd;border-right:none}.dgwt-wcas-details-outside .dgwt-wcas-details-wrapp,.dgwt-wcas-details-outside.dgwt-wcas-is-details .dgwt-wcas-suggestions-wrapp{margin-top:-1px;border-top:1px solid #ddd}.dgwt-wcas-details-right .dgwt-wcas-details-wrapp{border-left:none;border-right:1px solid #ddd;border-radius:0 5px 5px 0}.dgwt-wcas-details-left .dgwt-wcas-details-wrapp{border-right:none;border-left:1px solid #ddd;border-radius:5px 0 0 5px}.dgwt-wcas-details-notfit .dgwt-wcas-details-wrapp{display:none}.dgwt-wcas-full-width .dgwt-wcas-suggestions-wrapp{border-radius:0 0 0 5px}.dgwt-wcas-full-width .dgwt-wcas-details-wrapp,.rtl.dgwt-wcas-full-width .dgwt-wcas-suggestions-wrapp{border-radius:0 0 5px}.rtl.dgwt-wcas-full-width .dgwt-wcas-details-wrapp{border-radius:0 0 0 5px}.dgwt-wcas-details-inner{padding:15px 10px;height:100%}.dgwt-wcas-datails-title,.dgwt-wcas-pd-title{border-bottom:1px dashed #eee;padding-bottom:5px}.woocommerce .dgwt-wcas-pd-rating .star-rating{float:left;margin-right:5px;font-size:12px;color:#CCAE72}.rtl .dgwt-wcas-pd-rating .star-rating{float:right;margin-left:5px;margin-right:0}.dgwt-wcas-datails-title{margin-bottom:15px;font-size:14px}.dgwt-wcas-pd-title{color:#202020}.dgwt-wcas-pd-title .product-title{color:#202020;margin:0}.dgwt-wcas-tax-product-details{margin-bottom:15px;text-decoration:none;display:flex;align-items:center;justify-content:left}.dgwt-wcas-tax-product-details:after{display:block}.dgwt-wcas-details-wrapp .dgwt-wcas-pd-title{margin-bottom:8px}.dgwt-wcas-tpd-image{margin-right:15px}.dgwt-wcas-pd-rest{justify-content:center;display:flex;flex-direction:column;max-width:190px;width:100%}.dgwt-wcas-pd-price,.dgwt-wcas-tpd-rest .product-title{text-overflow:ellipsis;white-space:nowrap;width:145px;overflow:hidden}.dgwt-wcas-pd-rest .product-title{display:block;line-height:100%;font-weight:500;margin-bottom:5px}.dgwt-wcas-tpd-rest{max-width:200px}.dgwt-wcas-tpd-rest .product-title{display:block;line-height:100%;font-size:13px;font-weight:500;letter-spacing:0;margin:0 0 8px;text-transform:uppercase}.dgwt-wcas-suggestion-nores{pointer-events:none;opacity:.45}.dgwt-wcas-pd-price{font-size:14px;line-height:13px;color:#777;margin-top:3px;font-weight:lighter}.dgwt-wcas-pd-price del .amount{font-weight:lighter;background:0 0;font-size:90%;opacity:.6}.dgwt-wcas-details-title-tax,.dgwt-wcas-pd-title .product-title{font-weight:900;letter-spacing:-1px;text-transform:uppercase}.dgwt-wcas-pd-price ins{background:0 0;text-decoration:none}.dgwt-wcas-pd-rating{font-size:13px;line-height:13px}.dgwt-wcas-pd-rating:after{display:block}.dgwt-wcas-pd-review{color:#777;font-size:11px;line-height:11px}.dgwt-wcas-datails-title{display:block;margin:5px 0 15px}.dgwt-wcas-pd-title{margin-bottom:15px;display:block;text-decoration:none}.dgwt-wcas-details-title-tax{margin-right:3px}.rtl .dgwt-wcas-details-title-tax{margin:0 0 0 3px;float:right}.dgwt-wcas-pd-details{display:flex;justify-content:space-between}.dgwt-wcas-pd-image,.dgwt-wcas-tpd-image{width:70px;padding:4px;background-color:#fff;border:1px solid #e8e8e8;border-radius:4px}.dgwt-wcas-pd-image img,.dgwt-wcas-tpd-image img{display:block;max-width:100%;width:100%}.rtl .dgwt-wcas-pd-image,.rtl .dgwt-wcas-tpd-image{float:right;margin-right:0;margin-left:15px}.rtl .dgwt-wcas-pd-rest,.rtl .dgwt-wcas-tpd-rest{float:right;max-width:190px}input[type=search].dgwt-wcas-search-input,input[type=text].dgwt-cas-search-input{-webkit-transition:none;-moz-transition:none;-ms-transition:none;-o-transition:none;transition:none;-webkit-box-shadow:none;box-shadow:none;margin:0;-webkit-appearance:textfield}[type=search].dgwt-wcas-search-input::-ms-clear{display:none}[type=search].dgwt-wcas-search-input::-webkit-search-decoration{-webkit-appearance:none}[type=search].dgwt-wcas-search-input::-webkit-search-cancel-button{display:none}.dgwt-wcas-pd-desc{font-size:13px;line-height:157%;margin:12px 0}.dgwt-wcas-pd-addtc{margin:10px 0;display:flex;align-items:center;justify-content:flex-end}.dgwt-wcas-pd-addtc>.quantity{margin-right:10px}.dgwt-wcas-pd-addtc .add_to_cart_button,.dgwt-wcas-pd-addtc .add_to_cart_inline{margin:0}button.dgwt-wcas-search-submit,input[type=submit].dgwt-wcas-search-submit{position:relative}.dgwt-wcas-ico-magnifier{bottom:0;left:0;margin:auto;position:absolute;right:0;top:0;height:65%;display:block;fill:#fff}.dgwt-wcas-preloader{height:100%;position:absolute;right:0;top:0;width:40px;z-index:1;background-repeat:no-repeat;background-position:right 15px center;background-size:auto 44%}.rtl .dgwt-wcas-preloader{right:auto;left:35px}.dgwt-wcas-inner-preloader{background-image:url(../img/preloader.png);background-repeat:no-repeat;background-position:right 13px center;background-size:auto 22px}@media all and (-ms-high-contrast:none),(-ms-high-contrast:active){.dgwt-wcas-inner-preloader{background-image:url(../img/preloader.gif)}}.dgwt-wcas-close:not(.dgwt-wcas-inner-preloader){cursor:pointer;background-image:url(../img/close.png);background-repeat:no-repeat;background-position:right 15px center;background-size:auto 18px;opacity:.6;-webkit-transition:all 160ms ease-in-out;-moz-transition:all 160ms ease-in-out;-ms-transition:all 160ms ease-in-out;-o-transition:all 160ms ease-in-out;transition:all 160ms ease-in-out}.dgwt-wcas-close:hover{opacity:.3}@media screen and (max-width:992px){.dgwt-wcas-is-detail-box .dgwt-wcas-suggestions-wrapp{max-width:none}}.dgwt-wcas-suggestion strong{font-weight:700}.screen-reader-text{clip:rect(1px,1px,1px,1px);height:1px;overflow:hidden;position:absolute!important;width:1px}.dgwt-wcas-sf-wrapp:after,.dgwt-wcas-sf-wrapp:before{content:"";display:table}.dgwt-wcas-sf-wrapp:after{clear:both}.dgwt-wcas-sf-wrapp{zoom:1;width:100%;margin:0;position:relative;background:0 0}.dgwt-wcas-sf-wrapp input[type=search].dgwt-wcas-search-input{width:100%;height:40px;font-size:14px;line-height:100%;padding:10px 15px;background:#fff;border:1px solid #ddd;border-radius:3px;-webkit-border-radius:3px;-webkit-appearance:none}.dgwt-wcas-open .dgwt-wcas-sf-wrapp input[type=search].dgwt-wcas-search-input{border-radius:3px 3px 0 0}.dgwt-wcas-sf-wrapp input[type=search].dgwt-wcas-search-input:focus{outline:0;background:#fff;box-shadow:0 0 9px 1px rgba(0,0,0,.06)}.dgwt-wcas-sf-wrapp input[type=search].dgwt-wcas-search-input::-webkit-input-placeholder{color:#999;font-weight:400;font-style:italic}.dgwt-wcas-sf-wrapp input[type=search].dgwt-wcas-search-input:-moz-placeholder{color:#999;font-weight:400;font-style:italic}.dgwt-wcas-sf-wrapp input[type=search].dgwt-wcas-search-input::-moz-placeholder{color:#999;font-weight:400;font-style:italic}.dgwt-wcas-sf-wrapp input[type=search].dgwt-wcas-search-input:-ms-input-placeholder{color:#999;font-weight:400;font-style:italic}.dgwt-wcas-sf-wrapp button.dgwt-wcas-search-submit{overflow:visible;position:absolute;border:0;margin:0;cursor:pointer;height:40px;min-width:50px;right:0;top:0;padding:0 15px;color:#fff;-webkit-transition:all 250ms ease-in-out;-moz-transition:all 250ms ease-in-out;-ms-transition:all 250ms ease-in-out;-o-transition:all 250ms ease-in-out;transition:all 250ms ease-in-out;text-transform:uppercase;background-color:#96588A;border-radius:0 2px 2px 0;-webkit-border-radius:0 2px 2px 0;text-shadow:0 -1px 0 rgba(0,0,0,.3);-webkit-box-shadow:none;box-shadow:none;-webkit-appearance:none}.rtl .dgwt-wcas-sf-wrapp button.dgwt-wcas-search-submit{left:0;right:auto}.dgwt-wcas-open .dgwt-wcas-sf-wrapp .dgwt-wcas-search-submit{border-radius:0 2px 0 0}.dgwt-wcas-sf-wrapp .dgwt-wcas-search-submit:hover{opacity:.7}.dgwt-wcas-sf-wrapp .dgwt-wcas-search-submit:active,.dgwt-wcas-sf-wrapp .dgwt-wcas-search-submit:focus{opacity:.7;outline:0}.dgwt-wcas-sf-wrapp .dgwt-wcas-search-submit:before{content:'';position:absolute;border-width:8px 8px 8px 0;border-style:solid solid solid none;border-color:transparent #96588A;top:12px;left:-6px;-webkit-transition:all 250ms ease-in-out;-moz-transition:all 250ms ease-in-out;-ms-transition:all 250ms ease-in-out;-o-transition:all 250ms ease-in-out;transition:all 250ms ease-in-out}.rtl .dgwt-wcas-sf-wrapp .dgwt-wcas-search-submit:before{left:auto;right:-6px;border-width:8px 0 8px 8px;border-style:solid none solid solid}.dgwt-wcas-sf-wrapp .dgwt-wcas-search-submit:active:before,.dgwt-wcas-sf-wrapp .dgwt-wcas-search-submit:focus:before,.dgwt-wcas-sf-wrapp .dgwt-wcas-search-submit:hover:before{border-right-color:#96588A}.dgwt-wcas-sf-wrapp .dgwt-wcas-search-submit::-moz-focus-inner{border:0;padding:0}.dgwt-wcas-has-img .dgwt-wcas-suggestion.dgwt-wcas-suggestion-product{min-height:60px}.dgwt-wcas-details-inner .added_to_cart,.dgwt-wcas-has-desc .dgwt-wcas-sp>*,.dgwt-wcas-has-img .dgwt-wcas-sp>*{display:block}.dgwt-wcas-has-desc .dgwt-wcas-sp,.dgwt-wcas-has-img .dgwt-wcas-sp{top:12px}.dgwt-wcas-is-details .dgwt-wcas-content-wrapp{display:flex;flex-direction:column;height:100%;justify-content:center;resize:vertical;padding-left:20px}.dgwt-wcas-is-details .dgwt-wcas-suggestions-wrapp{min-height:340px;overflow:visible}body:not(.dgwt-wcas-is-details) .dgwt-wcas-suggestion:last-child{border-bottom:none}.dgwt-wcas-is-details .dgwt-wcas-has-img .dgwt-wcas-suggestion{min-height:40px}.dgwt-wcas-is-details .dgwt-wcas-has-img .dgwt-wcas-content-wrapp{padding-left:40px}.dgwt-wcas-is-details .dgwt-wcas-si{min-height:40px;width:30px;max-width:100%;box-sizing:border-box}.dgwt-wcas-is-details .dgwt-wcas-sp{display:flex;top:0;flex-direction:column;height:100%;justify-content:center;resize:vertical}.dgwt-wcas-is-details .dgwt-wcas-sd{font-size:11px;line-height:100%}.dgwt-wcas-has-img .dgwt-wcas-suggestion[data-taxonomy=product_cat],.dgwt-wcas-has-img .dgwt-wcas-suggestion[data-taxonomy=product_tag]{padding-left:15px;min-height:0}.dgwt-wcas-has-img .dgwt-wcas-suggestion[data-taxonomy=product_cat] .dgwt-wcas-st,.dgwt-wcas-has-img .dgwt-wcas-suggestion[data-taxonomy=product_tag] .dgwt-wcas-st{padding-left:0}.dgwt-wcas-no-submit .dgwt-wcas-ico-magnifier{height:50%;max-height:20px;width:100%;max-width:20px;left:12px;right:auto;opacity:.5;fill:#000}.dgwt-wcas-no-submit .dgwt-wcas-sf-wrapp input[type=search].dgwt-wcas-search-input{padding:10px 15px 10px 40px}body .dgwt-wcas-content-wrapp .rood,body .dgwt-wcas-content-wrapp .zwave{display:none}
1
+ .dgwt-wcas-block-scroll{overflow:hidden}.dgwt-wcas-search-wrapp{position:relative;display:block;color:#444;min-width:230px;width:100%;text-align:left;margin:0 auto;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.dgwt-wcas-search-wrapp .product-title{color:#333;display:block;line-height:110%;margin:0}.dgwt-wcas-tpd-image img{margin:0 15px 0 0!important;display:block}.rtl .dgwt-wcas-tpd-image img{margin:0 0 0 15px!important}.dgwt-wcas-preloader-wrapp img{margin:10px auto 0 auto;display:block;max-width:200px}.dgwt-wcas-preloader-wrapp img.dgwt-wcas-placeholder-preloader{display:block;width:100%;height:auto;max-width:300px;margin:0}.dgwt-wcas-suggestions-wrapp{background:#fff none repeat scroll 0 0;border:1px solid #ddd;border-top:none;padding:0;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;overflow-y:auto}.dgwt-wcas-suggestions-wrapp.dgwt-wcas-suggestions-wrapp--top{border:1px solid #ddd;border-bottom:none}.dgwt-wcas-is-detail-box .dgwt-wcas-suggestions-wrapp{max-width:550px}.dgwt-wcas-full-width.dgwt-wcas-is-detail-box .dgwt-wcas-suggestion{padding:8px 15px}.dgwt-wcas-details-left .dgwt-wcas-suggestions-wrapp{border-radius:0 0 5px 0;border-left-color:#eee}.dgwt-wcas-details-right .dgwt-wcas-suggestions-wrapp{border-radius:0 0 0 5px;border-right-color:#eee}.dgwt-wcas-suggestion{cursor:pointer;font-size:12px;line-height:110%;text-align:left;padding:7px 10px;position:relative;border-bottom:1px solid #dfdfdf;display:flex;flex-direction:row;justify-content:space-between;align-items:center;resize:vertical}.dgwt-wcas-suggestion.dgwt-wcas-suggestion-more{justify-content:center}.dgwt-wcas-suggestion.dgwt-wcas-suggestion-no-border-bottom{border-bottom:none}.dgwt-wcas-suggestion:after{clear:both;display:block;content:''}.dgwt-wcas-suggestion.dgwt-wcas-nores{cursor:default;opacity:.5}.dgwt-wcas-has-img .dgwt-wcas-suggestion.dgwt-wcas-suggestion-product{padding-top:8px;padding-bottom:8px;min-height:60px}.dgwt-wcas-is-details .dgwt-wcas-has-img .dgwt-wcas-suggestion.dgwt-wcas-suggestion-more,.dgwt-wcas-suggestion.dgwt-wcas-suggestion-more{min-height:30px;text-transform:uppercase}.dgwt-wcas-suggestion.dgwt-wcas-suggestion-more .dgwt-wcas-st-more{padding:0 10px;text-align:center}.dgwt-wcas-st{display:block;color:#444;font-size:15px;width:100%}.dgwt-wcas-st>span{display:inline-block;vertical-align:middle}.dgwt-wcas-has-sku .dgwt-wcas-st-title{margin-right:6px}.dgwt-wcas-st>span.dgwt-wcas-st--tax{display:block;font-style:italic;font-size:10px;text-transform:uppercase;opacity:.4;line-height:10px;margin-bottom:1px;letter-spacing:2px}.dgwt-wcas-st-breadcrumbs{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:80%;text-align:left;opacity:.6;width:100%;padding-right:10px}.rtl .dgwt-wcas-st-breadcrumbs{padding-right:0;padding-left:10px;text-align:right}.dgwt-wcas-sku{font-size:80%}.dgwt-wcas-si{width:50px;display:block;height:100%}.dgwt-wcas-si img{background:#fff none repeat scroll 0 0;border:1px solid #e8e8e8;border-radius:3px;display:block;margin:auto;padding:2px;height:auto;width:auto;max-height:90%;max-width:100%}.dgwt-wcas-content-wrapp{display:flex;height:100%;width:100%;justify-content:space-between;align-items:center;resize:vertical;padding-left:10px}.rtl .dgwt-wcas-content-wrapp{padding-left:0;padding-right:10px}.dgwt-wcas-sp{color:#555;font-size:14px;line-height:120%;text-align:right;line-height:4px;padding-left:10px}.dgwt-wcas-sp *{line-height:130%}.dgwt-wcas-search-form{margin:0;padding:0}.dgwt-wcas-sp del{opacity:.5;font-size:12px}.dgwt-wcas-sd{color:#777;display:block;line-height:14px;width:100%;margin-top:5px;font-size:.8em}.dgwt-wcas-suggestion-selected{background-color:#eee}.dgwt-wcas-suggestion-selected:first-child{border-top:none}.rtl .dgwt-wcas-suggestion{padding-left:0;padding-right:15px;text-align:right}.dgwt-wcas-details-wrapp{background:#fff none repeat scroll 0 0;border:1px solid #ddd;border-top:none;border-left:none;padding:0;width:300px;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;z-index:100;min-height:340px}.rtl .dgwt-wcas-details-wrapp{border-left:1px solid #ddd;border-right:none}.dgwt-wcas-details-outside .dgwt-wcas-details-wrapp{margin-top:-1px;border-top:1px solid #ddd}.dgwt-wcas-details-outside.dgwt-wcas-is-details .dgwt-wcas-suggestions-wrapp{margin-top:-1px;border-top:1px solid #ddd}.dgwt-wcas-details-right .dgwt-wcas-details-wrapp{border-left:none;border-right:1px solid #ddd;border-radius:0 5px 5px 0}.dgwt-wcas-details-left .dgwt-wcas-details-wrapp{border-right:none;border-left:1px solid #ddd;border-radius:5px 0 0 5px}.dgwt-wcas-details-notfit .dgwt-wcas-details-wrapp{display:none}.dgwt-wcas-full-width .dgwt-wcas-suggestions-wrapp{border-radius:0 0 0 5px}.dgwt-wcas-full-width .dgwt-wcas-details-wrapp{border-radius:0 0 5px 0}.rtl.dgwt-wcas-full-width .dgwt-wcas-suggestions-wrapp{border-radius:0 0 5px 0}.rtl.dgwt-wcas-full-width .dgwt-wcas-details-wrapp{border-radius:0 0 0 5px}.dgwt-wcas-details-inner{padding:15px 10px;height:100%}.woocommerce .dgwt-wcas-pd-rating .star-rating{float:left;margin-right:5px;font-size:12px;color:#ccae72}.rtl .dgwt-wcas-pd-rating .star-rating{float:right;margin-left:5px;margin-right:0}.dgwt-wcas-datails-title{border-bottom:1px dashed #eee;display:block;margin-bottom:15px;padding-bottom:5px;font-size:14px}.dgwt-wcas-pd-title{border-bottom:1px dashed #eee;margin-bottom:15px;padding-bottom:5px;display:block;color:#202020;text-decoration:none}.dgwt-wcas-pd-title .product-title{font-weight:900;color:#202020;text-transform:uppercase;letter-spacing:-1px;margin:0}.dgwt-wcas-details-title-tax{text-transform:uppercase;font-weight:900;letter-spacing:-1px;margin-right:3px}.dgwt-wcas-tax-product-details{margin-bottom:15px;text-decoration:none;display:flex;align-items:center;justify-content:left}.dgwt-wcas-tax-product-details:after{content:'';clear:both;display:block}.dgwt-wcas-details-wrapp .dgwt-wcas-pd-title{margin-bottom:8px}.dgwt-wcas-tpd-image{width:60px;margin-right:15px}.dgwt-wcas-pd-rest{justify-content:center;display:flex;flex-direction:column;width:100%;padding-left:10px}.dgwt-wcas-pd-rest .product-title{display:block;line-height:100%;font-weight:500;margin-bottom:5px}.dgwt-wcas-tpd-rest{max-width:200px}.dgwt-wcas-tpd-rest .product-title{display:block;line-height:100%;font-size:13px;font-weight:500;letter-spacing:0;margin:0 0 8px;overflow:hidden;text-overflow:ellipsis;text-transform:uppercase;white-space:nowrap;width:145px}.dgwt-wcas-suggestion-nores{pointer-events:none;opacity:.45}.dgwt-wcas-pd-price{font-size:14px;line-height:13px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;width:145px;color:#777;margin-top:3px;font-weight:lighter}.dgwt-wcas-pd-price del .amount{font-weight:lighter;background:0 0;font-size:90%;opacity:.6}.dgwt-wcas-pd-price ins{background:0 0;text-decoration:none}.dgwt-wcas-pd-rating{font-size:13px;line-height:13px}.dgwt-wcas-pd-rating:after{content:'';clear:both;display:block}.dgwt-wcas-pd-review{color:#777;font-size:11px;line-height:11px}.dgwt-wcas-datails-title{border-bottom:1px dashed #eee;display:block;margin:5px 0 15px 0;padding-bottom:5px}.dgwt-wcas-pd-title{border-bottom:1px dashed #eee;margin-bottom:15px;padding-bottom:5px;display:block;text-decoration:none}.dgwt-wcas-pd-title .product-title{font-weight:900;text-transform:uppercase;letter-spacing:-1px}.dgwt-wcas-details-title-tax{text-transform:uppercase;font-weight:900;letter-spacing:-1px;margin-right:3px}.rtl .dgwt-wcas-details-title-tax{margin:0 0 0 3px;float:right}.dgwt-wcas-pd-details{display:flex;justify-content:left}.dgwt-wcas-pd-image,.dgwt-wcas-tpd-image{width:70px;padding:4px;background-color:#fff;border:1px solid #e8e8e8;border-radius:4px}.dgwt-wcas-pd-image img,.dgwt-wcas-tpd-image img{display:block;max-width:100%;width:100%}.rtl .dgwt-wcas-pd-image,.rtl .dgwt-wcas-tpd-image{float:right;margin-right:0;margin-left:15px}.rtl .dgwt-wcas-pd-rest,.rtl .dgwt-wcas-tpd-rest{float:right;max-width:190px}input[type=search].dgwt-wcas-search-input,input[type=text].dgwt-cas-search-input{-webkit-transition:none;-moz-transition:none;-ms-transition:none;-o-transition:none;transition:none;-webkit-box-shadow:none;box-shadow:none;margin:0;-webkit-appearance:textfield}[type=search].dgwt-wcas-search-input::-ms-clear{display:none}[type=search].dgwt-wcas-search-input::-webkit-search-decoration{-webkit-appearance:none}[type=search].dgwt-wcas-search-input::-webkit-search-cancel-button{display:none}.dgwt-wcas-pd-desc{font-size:13px;line-height:157%;margin:12px 0}.dgwt-wcas-pd-addtc{margin:10px 0;display:flex;align-items:center;justify-content:flex-end}.dgwt-wcas-pd-addtc>.quantity{margin-right:10px}.dgwt-wcas-pd-addtc .add_to_cart_button,.dgwt-wcas-pd-addtc .add_to_cart_inline{margin:0}button.dgwt-wcas-search-submit,input[type=submit].dgwt-wcas-search-submit{position:relative}.dgwt-wcas-ico-magnifier{bottom:0;left:0;margin:auto;position:absolute;right:0;top:0;height:65%;display:block}.dgwt-wcas-preloader{height:100%;position:absolute;right:0;top:0;width:40px;z-index:1;background-repeat:no-repeat;background-position:right 15px center;background-size:auto 44%}.rtl .dgwt-wcas-preloader{right:auto;left:35px}.dgwt-wcas-inner-preloader{background-image:url(../img/preloader.png);background-repeat:no-repeat;background-position:right 13px center;background-size:auto 22px}@media all and (-ms-high-contrast:none),(-ms-high-contrast:active){.dgwt-wcas-inner-preloader{background-image:url(../img/preloader.gif)}}.dgwt-wcas-close:not(.dgwt-wcas-inner-preloader){cursor:pointer;background-image:url(../img/close.png);background-repeat:no-repeat;background-position:right 15px center;background-size:auto 18px;opacity:.6;-webkit-transition:all 160ms ease-in-out;-moz-transition:all 160ms ease-in-out;-ms-transition:all 160ms ease-in-out;-o-transition:all 160ms ease-in-out;transition:all 160ms ease-in-out}.dgwt-wcas-close:hover{opacity:.3}@media screen and (max-width:992px){.dgwt-wcas-is-detail-box .dgwt-wcas-suggestions-wrapp{max-width:none}}.dgwt-wcas-suggestion strong{font-weight:700}.screen-reader-text{clip:rect(1px,1px,1px,1px);height:1px;overflow:hidden;position:absolute!important;width:1px}.dgwt-wcas-sf-wrapp:after,.dgwt-wcas-sf-wrapp:before{content:"";display:table}.dgwt-wcas-sf-wrapp:after{clear:both}.dgwt-wcas-sf-wrapp{zoom:1;width:100%;margin:0;position:relative;background:0 0}.dgwt-wcas-sf-wrapp input[type=search].dgwt-wcas-search-input{width:100%;height:40px;font-size:14px;line-height:100%;padding:10px 15px;background:#fff;border:1px solid #ddd;border-radius:3px;-webkit-border-radius:3px;-webkit-appearance:none}.dgwt-wcas-open .dgwt-wcas-sf-wrapp input[type=search].dgwt-wcas-search-input{border-radius:3px 3px 0 0}.dgwt-wcas-sf-wrapp input[type=search].dgwt-wcas-search-input:focus{outline:0;background:#fff;box-shadow:0 0 9px 1px rgba(0,0,0,.06)}.dgwt-wcas-sf-wrapp input[type=search].dgwt-wcas-search-input::-webkit-input-placeholder{color:#999;font-weight:400;font-style:italic}.dgwt-wcas-sf-wrapp input[type=search].dgwt-wcas-search-input:-moz-placeholder{color:#999;font-weight:400;font-style:italic}.dgwt-wcas-sf-wrapp input[type=search].dgwt-wcas-search-input::-moz-placeholder{color:#999;font-weight:400;font-style:italic}.dgwt-wcas-sf-wrapp input[type=search].dgwt-wcas-search-input:-ms-input-placeholder{color:#999;font-weight:400;font-style:italic}.dgwt-wcas-sf-wrapp button.dgwt-wcas-search-submit{overflow:visible;position:absolute;border:0;padding:0;margin:0;cursor:pointer;height:40px;min-width:50px;right:0;top:0;padding:0 15px;color:#fff;-webkit-transition:all 250ms ease-in-out;-moz-transition:all 250ms ease-in-out;-ms-transition:all 250ms ease-in-out;-o-transition:all 250ms ease-in-out;transition:all 250ms ease-in-out;text-transform:uppercase;background-color:#333;border-radius:0 2px 2px 0;-webkit-border-radius:0 2px 2px 0;text-shadow:0 -1px 0 rgba(0,0,0,.3);-webkit-box-shadow:none;box-shadow:none;-webkit-appearance:none}.rtl .dgwt-wcas-sf-wrapp button.dgwt-wcas-search-submit{left:0;right:auto}.dgwt-wcas-open .dgwt-wcas-sf-wrapp .dgwt-wcas-search-submit{border-radius:0 2px 0 0}.dgwt-wcas-sf-wrapp .dgwt-wcas-search-submit:hover{opacity:.7}.dgwt-wcas-sf-wrapp .dgwt-wcas-search-submit:active,.dgwt-wcas-sf-wrapp .dgwt-wcas-search-submit:focus{opacity:.7;outline:0}.dgwt-wcas-sf-wrapp .dgwt-wcas-search-submit:before{content:'';position:absolute;border-width:8px 8px 8px 0;border-style:solid solid solid none;border-color:transparent #333 transparent;top:12px;left:-6px;-webkit-transition:all 250ms ease-in-out;-moz-transition:all 250ms ease-in-out;-ms-transition:all 250ms ease-in-out;-o-transition:all 250ms ease-in-out;transition:all 250ms ease-in-out}.rtl .dgwt-wcas-sf-wrapp .dgwt-wcas-search-submit:before{left:auto;right:-6px;border-width:8px 0 8px 8px;border-style:solid none solid solid}.dgwt-wcas-sf-wrapp .dgwt-wcas-search-submit:hover:before{border-right-color:#333}.dgwt-wcas-sf-wrapp .dgwt-wcas-search-submit:active:before,.dgwt-wcas-sf-wrapp .dgwt-wcas-search-submit:focus:before{border-right-color:#333}.dgwt-wcas-sf-wrapp .dgwt-wcas-search-submit::-moz-focus-inner{border:0;padding:0}.dgwt-wcas-ico-magnifier{fill:#fff}.dgwt-wcas-details-inner .added_to_cart{display:block}.dgwt-wcas-has-desc .dgwt-wcas-sp>*,.dgwt-wcas-has-img .dgwt-wcas-sp>*{display:block}.dgwt-wcas-is-details .dgwt-wcas-suggestions-wrapp{min-height:340px}body:not(.dgwt-wcas-is-details) .dgwt-wcas-suggestion:last-child{border-bottom:none}.dgwt-wcas-is-details .dgwt-wcas-has-img .dgwt-wcas-suggestion{min-height:40px}.dgwt-wcas-is-details .dgwt-wcas-suggestions-wrapp{overflow:visible}.dgwt-wcas-is-details .dgwt-wcas-si{width:30px;max-width:100%;box-sizing:border-box}.dgwt-wcas-is-details .dgwt-wcas-sp{display:flex;top:0;flex-direction:column;height:100%;justify-content:center;resize:vertical}.dgwt-wcas-is-details .dgwt-wcas-sd{font-size:11px;line-height:100%}.dgwt-wcas-has-img .dgwt-wcas-suggestion[data-taxonomy=product_cat],.dgwt-wcas-has-img .dgwt-wcas-suggestion[data-taxonomy=product_tag]{padding-left:15px;min-height:0}.dgwt-wcas-has-img .dgwt-wcas-suggestion[data-taxonomy=product_cat] .dgwt-wcas-st,.dgwt-wcas-has-img .dgwt-wcas-suggestion[data-taxonomy=product_tag] .dgwt-wcas-st{padding-left:0}.dgwt-wcas-no-submit .dgwt-wcas-ico-magnifier{height:50%;max-height:20px;width:100%;max-width:20px;left:12px;right:auto;opacity:.5;fill:#000}.dgwt-wcas-no-submit .dgwt-wcas-sf-wrapp input[type=search].dgwt-wcas-search-input{padding:10px 15px 10px 40px}.dgwt-wcas-overlay-mobile-on{overflow:hidden}.dgwt-wcas-om-bar{display:flex;height:45px;width:100%}.dgwt-wcas-om-bar .dgwt-wcas-om-return{width:45px;height:100%;display:block;background:#ccc;cursor:pointer;position:relative}.dgwt-wcas-om-bar .dgwt-wcas-om-return svg{width:23px;height:23px;position:absolute;left:12px;top:12px}.rtl .dgwt-wcas-om-bar .dgwt-wcas-om-return svg{left:11px;top:9px;-moz-transform:rotate(180deg);-webkit-transform:rotate(180deg);-o-transform:rotate(180deg);-ms-transform:rotate(180deg);transform:rotate(180deg)}.dgwt-wcas-om-bar .dgwt-wcas-has-submit-off .dgwt-wcas-preloader{right:0!important}.rtl .dgwt-wcas-om-bar .dgwt-wcas-has-submit-off .dgwt-wcas-preloader{left:4px!important;right:auto!important}.dgwt-wcas-om-bar .dgwt-wcas-sf-wrapp button.dgwt-wcas-search-submit{display:none}.dgwt-wcas-om-bar .dgwt-wcas-search-wrapp-mobile{width:calc(100% - 45px);max-width:none}.dgwt-wcas-overlay-mobile{position:absolute;left:0;right:0;top:0;bottom:0;width:100%;background:#fff}.dgwt-wcas-overlay-mobile *{box-sizing:border-box}.dgwt-wcas-search-wrapp-mobile input[type=search].dgwt-wcas-search-input{height:45px!important;border-top:none;border-right:none;border-left:none;border-radius:0;font-size:16px!important}.dgwt-wcas-overlay-mobile-on .dgwt-wcas-suggestions-wrapp{left:0!important;top:45px!important;width:100%!important;height:calc(100% - 45px)!important;position:absolute;overflow-y:auto;border:none}.dgwt-wcas-overlay-mobile-on.dgwt-wcas-is-ios .dgwt-wcas-suggestions-wrapp{height:calc(100% - 45px)!important}.dgwt-wcas-overlay-mobile-on.dgwt-wcas-is-ios{overflow:visible;overflow-x:hidden}.dgwt-wcas-overlay-mobile-on.dgwt-wcas-is-ios .dgwt-wcas-suggestions-wrapp{max-height:none!important;height:auto!important}.dgwt-wcas-overlay-mobile-on.dgwt-wcas-is-ios>:not(.dgwt-wcas-overlay-mobile){display:none}body .dgwt-wcas-content-wrapp .rood,body .dgwt-wcas-content-wrapp .zwave{display:none}
assets/js/admin.js CHANGED
@@ -127,8 +127,16 @@
127
 
128
  $btn.attr('disabled', 'disabled');
129
 
 
 
130
  var emergency = $btn.hasClass('js-ajax-build-index-emergency') ? true : false;
131
 
 
 
 
 
 
 
132
  $.ajax({
133
  url: ajaxurl,
134
  type: 'post',
@@ -144,6 +152,10 @@
144
  },
145
  complete: function () {
146
  $btn.removeAttr('disabled');
 
 
 
 
147
  }
148
  });
149
  })
127
 
128
  $btn.attr('disabled', 'disabled');
129
 
130
+ $('.dgwt-wcas-settings-info').addClass('wcas-ajax-build-index-wait');
131
+
132
  var emergency = $btn.hasClass('js-ajax-build-index-emergency') ? true : false;
133
 
134
+ if(emergency){
135
+
136
+ $('.dgwt-wcas-indexing-header__title').text('[Emergency mode] Wait... Indexing in progress');
137
+ $('.dgwt-wcas-indexing-header__troubleshooting, .dgwt-wcas-indexing-header__actions, .js-dgwt-wcas-indexer-details').hide();
138
+ }
139
+
140
  $.ajax({
141
  url: ajaxurl,
142
  type: 'post',
152
  },
153
  complete: function () {
154
  $btn.removeAttr('disabled');
155
+ $('.dgwt-wcas-settings-info').removeClass('wcas-ajax-build-index-wait');
156
+ if(emergency){
157
+ window.location.reload();
158
+ }
159
  }
160
  });
161
  })
assets/js/admin.min.js CHANGED
@@ -1 +1 @@
1
- !function(s){var e={inputSel:"dgwt-wcas-options-toggle input[type=radio]",groupSel:"dgwt_wcas_settings-group",reloadChoices:function(e){var t=s('[name="'+e+'"]').closest("."+this.groupSel),a=s('[name="'+e+'"]:checked').val(),i="";this.hideAll(t),(a=a.replace("_","-")).length>0&&(i="wcas-opt-"+a),s("."+i).length>0&&s("."+i).fadeIn()},hideAll:function(s){s.find('tr[class*="wcas-opt-"]').hide()},registerListeners:function(){var e=this;s("."+e.inputSel).on("change",function(){e.reloadChoices(s(this).attr("name"))})},init:function(){var e=this,t=s("."+e.inputSel+":checked");t.length>0&&(e.registerListeners(),t.each(function(){e.reloadChoices(s(this).attr("name"))}))}},t={inputSel:"dgwt-wcas-options-cb-toggle input[type=checkbox]",groupSel:"dgwt_wcas_settings-group",reloadChoices:function(e){var t=e.closest("."+this.groupSel),a=e.is(":checked"),i="";this.hideAll(t);var c=e.attr("name");c=(c=(c=c.replace("dgwt_wcas_settings[","")).replace("]","")).replace(new RegExp("_","g"),"-"),a&&(i="wcas-opt-"+c),i.length>0&&s("."+i).length>0&&s("."+i).fadeIn()},hideAll:function(s){s.find('tr[class*="wcas-opt-"]').hide()},registerListeners:function(){var e=this;s("."+e.inputSel).on("change",function(){e.reloadChoices(s(this))})},init:function(){var e=this,t=s("."+e.inputSel);t.length>0&&(e.registerListeners(),t.each(function(){e.reloadChoices(s(this))}))}},a={actionTriggerClass:"js-ajax-build-index",actionStopTriggerClass:"js-ajax-stop-build-index",indexingWrappoerClass:"js-dgwt-wcas-indexing-wrapper",getWrapper:function(){return s("."+this.indexingWrappoerClass).closest(".dgwt-wcas-settings-info")},registerListeners:function(){var e=this;s(document).on("click","."+e.actionTriggerClass,function(t){t.preventDefault();var a=s(this);a.attr("disabled","disabled");var i=!!a.hasClass("js-ajax-build-index-emergency");s.ajax({url:ajaxurl,type:"post",data:{action:"dgwt_wcas_build_index",emergency:i},success:function(s){void 0!==s&&s.success&&(e.getWrapper().html(s.data.html),e.heartbeat())},complete:function(){a.removeAttr("disabled")}})}),s(document).on("click","."+e.actionStopTriggerClass,function(t){t.preventDefault();var a=s(this);a.attr("disabled","disabled"),s.ajax({url:ajaxurl,type:"post",data:{action:"dgwt_wcas_stop_build_index"},success:function(s){void 0!==s&&s.success&&(e.getWrapper().html(s.data.html),e.heartbeat())},complete:function(){a.removeAttr("disabled")}})})},heartbeat:function(){var e=this;setTimeout(function(){s.ajax({url:ajaxurl,type:"post",data:{action:"dgwt_wcas_build_index_heartbeat"},success:function(s){void 0!==s&&s.success&&(e.getWrapper().html(s.data.html),s.data.loop&&e.heartbeat())}})},1e3)},detailsToggle:function(){var e;s(document).on("click",".js-dgwt-wcas-indexing-details-trigger",function(t){t.preventDefault();var a=s(".js-dgwt-wcas-indexer-details");a.hasClass("show")?(a.removeClass("show"),a.addClass("hide"),s(".js-dgwt-wcas-indexing__showd").addClass("show").removeClass("hide"),s(".js-dgwt-wcas-indexing__hided").addClass("hide").removeClass("show"),e=!1):(a.addClass("show"),a.removeClass("hide"),s(".js-dgwt-wcas-indexing__showd").addClass("hide").removeClass("show"),s(".js-dgwt-wcas-indexing__hided").addClass("show").removeClass("hide"),e=!0),s.ajax({url:ajaxurl,type:"post",data:{action:"dgwt_wcas_index_details_toggle",display:e}})})},init:function(){var e=this;e.registerListeners(),s("."+e.indexingWrappoerClass).length>0&&e.heartbeat(),e.detailsToggle()}},i={actionTriggerClass:"js-dgwt-wcas-bc-wipe-all",switchLeftLabelClass:"js-dgwt-wcas-switch-left",switchRightLabelClass:"js-dgwt-wcas-switch-right",switcherClass:"js-dgwt-wcas-switcher",remindMeLaterClass:"js-dgwt-wcas-bc-remind-me",applyChanges:function(){jQuery(document).on("click","."+this.actionTriggerClass,function(e){e.preventDefault();var t=s(this);t.attr("disabled","disabled"),jQuery.ajax({url:ajaxurl,type:"post",data:{action:"dgwt_wcas_bc_keep_latest"},success:function(e){void 0!==e.success&&e.success&&(s(".dgwt_wcas_basic-tab").click(),s(".js-dgwt-wcas-bc-notice").fadeOut(400,function(){s(this).remove()}))},complete:function(){t.removeAttr("disabled")}})})},switchAjaxRequest:function(e,t){var a=this,i=s(".dgwt-wcas-bc-switcher"),c=s(".dgwt-wcas-bc-error"),n=s(".dgwt-wcas-bc-success"),d=s(".js-dgwt-wcas-bc-spinner");i.addClass("dgwt-wcas-non-events"),d.removeClass("dgwt-wcas-hidden"),c.addClass("dgwt-wcas-hidden"),n.addClass("dgwt-wcas-hidden"),e="enable"===e?"enable":"disable",jQuery.ajax({url:ajaxurl,type:"post",data:{action:"dgwt_wcas_bc_toggle",state:e},success:function(s){void 0!==s.success&&s.success?(t(),"disable"===e&&a.flashStepsContainer(),setTimeout(function(){n.removeClass("dgwt-wcas-hidden")},500),setTimeout(function(){n.addClass("dgwt-wcas-hidden")},2e3)):(i.removeClass("dgwt-wcas-non-events"),d.addClass("dgwt-wcas-hidden"),c.removeClass("dgwt-wcas-hidden"))},error:function(){c.removeClass("dgwt-wcas-hidden")},complete:function(){i.removeClass("dgwt-wcas-non-events"),d.addClass("dgwt-wcas-hidden")}})},enableBC:function(){var e=this;e.switchAjaxRequest("enable",function(){s("."+e.switcherClass).attr("checked",!0),s("."+e.switchLeftLabelClass).addClass("dgwt-wcas-toggler--is-active"),s("."+e.switchRightLabelClass).removeClass("dgwt-wcas-toggler--is-active"),s(".dgwt-wcas-toggle").addClass("dgwt-wcas-toggle--mute"),s(".js-dgwt-wcas-todo-old").removeClass("dgwt-wcas-hidden"),s(".js-dgwt-wcas-todo-latest").addClass("dgwt-wcas-hidden")})},disableBC:function(){var e=this;e.switchAjaxRequest("disable",function(){s("."+e.switcherClass).attr("checked",!1),s("."+e.switchRightLabelClass).addClass("dgwt-wcas-toggler--is-active"),s("."+e.switchLeftLabelClass).removeClass("dgwt-wcas-toggler--is-active"),s(".dgwt-wcas-toggle").removeClass("dgwt-wcas-toggle--mute"),s(".js-dgwt-wcas-todo-old").addClass("dgwt-wcas-hidden"),s(".js-dgwt-wcas-todo-latest").removeClass("dgwt-wcas-hidden")})},remindMeLater:function(){jQuery.ajax({url:ajaxurl,type:"post",data:{action:"dgwt_wcas_bc_remind_me_later"},success:function(e){void 0!==e.success&&e.success&&s(".js-dgwt-wcas-bc-notice").fadeOut(400,function(){s(this).remove()})}})},flashStepsContainer:function(){var e=s(".dgwt-wcas-bc-todo-wrapp");e.addClass("dgwt-wcas-anim-shake"),setTimeout(function(){e.removeClass("dgwt-wcas-anim-shake")},2e3)},switchListeners:function(){var e=this;s("."+e.switchLeftLabelClass).on("click",function(){e.enableBC()}),s("."+e.switchRightLabelClass).on("click",function(){e.disableBC()}),s("."+e.switcherClass).on("click",function(t){t.preventDefault(),s("."+e.switcherClass).is(":checked")?e.enableBC():e.disableBC()}),s("."+e.remindMeLaterClass).on("click",function(s){s.preventDefault(),e.remindMeLater()})},init:function(){this.applyChanges(),this.switchListeners()}};s(document).ready(function(){var c;e.init(),t.init(),(c=s(".js-dgwt-wcas-sgs-autocolspan")).length>0&&c.find("td").attr("colspan",2),i.init(),a.init()})}(jQuery);
1
+ !function(s){var e={inputSel:"dgwt-wcas-options-toggle input[type=radio]",groupSel:"dgwt_wcas_settings-group",reloadChoices:function(e){var t=s('[name="'+e+'"]').closest("."+this.groupSel),a=s('[name="'+e+'"]:checked').val(),i="";this.hideAll(t),(a=a.replace("_","-")).length>0&&(i="wcas-opt-"+a),s("."+i).length>0&&s("."+i).fadeIn()},hideAll:function(s){s.find('tr[class*="wcas-opt-"]').hide()},registerListeners:function(){var e=this;s("."+e.inputSel).on("change",function(){e.reloadChoices(s(this).attr("name"))})},init:function(){var e=this,t=s("."+e.inputSel+":checked");t.length>0&&(e.registerListeners(),t.each(function(){e.reloadChoices(s(this).attr("name"))}))}},t={inputSel:"dgwt-wcas-options-cb-toggle input[type=checkbox]",groupSel:"dgwt_wcas_settings-group",reloadChoices:function(e){var t=e.closest("."+this.groupSel),a=e.is(":checked"),i="";this.hideAll(t);var n=e.attr("name");n=(n=(n=n.replace("dgwt_wcas_settings[","")).replace("]","")).replace(new RegExp("_","g"),"-"),a&&(i="wcas-opt-"+n),i.length>0&&s("."+i).length>0&&s("."+i).fadeIn()},hideAll:function(s){s.find('tr[class*="wcas-opt-"]').hide()},registerListeners:function(){var e=this;s("."+e.inputSel).on("change",function(){e.reloadChoices(s(this))})},init:function(){var e=this,t=s("."+e.inputSel);t.length>0&&(e.registerListeners(),t.each(function(){e.reloadChoices(s(this))}))}},a={actionTriggerClass:"js-ajax-build-index",actionStopTriggerClass:"js-ajax-stop-build-index",indexingWrappoerClass:"js-dgwt-wcas-indexing-wrapper",getWrapper:function(){return s("."+this.indexingWrappoerClass).closest(".dgwt-wcas-settings-info")},registerListeners:function(){var e=this;s(document).on("click","."+e.actionTriggerClass,function(t){t.preventDefault();var a=s(this);a.attr("disabled","disabled"),s(".dgwt-wcas-settings-info").addClass("wcas-ajax-build-index-wait");var i=!!a.hasClass("js-ajax-build-index-emergency");i&&(s(".dgwt-wcas-indexing-header__title").text("[Emergency mode] Wait... Indexing in progress"),s(".dgwt-wcas-indexing-header__troubleshooting, .dgwt-wcas-indexing-header__actions, .js-dgwt-wcas-indexer-details").hide()),s.ajax({url:ajaxurl,type:"post",data:{action:"dgwt_wcas_build_index",emergency:i},success:function(s){void 0!==s&&s.success&&(e.getWrapper().html(s.data.html),e.heartbeat())},complete:function(){a.removeAttr("disabled"),s(".dgwt-wcas-settings-info").removeClass("wcas-ajax-build-index-wait"),i&&window.location.reload()}})}),s(document).on("click","."+e.actionStopTriggerClass,function(t){t.preventDefault();var a=s(this);a.attr("disabled","disabled"),s.ajax({url:ajaxurl,type:"post",data:{action:"dgwt_wcas_stop_build_index"},success:function(s){void 0!==s&&s.success&&(e.getWrapper().html(s.data.html),e.heartbeat())},complete:function(){a.removeAttr("disabled")}})})},heartbeat:function(){var e=this;setTimeout(function(){s.ajax({url:ajaxurl,type:"post",data:{action:"dgwt_wcas_build_index_heartbeat"},success:function(s){void 0!==s&&s.success&&(e.getWrapper().html(s.data.html),s.data.loop&&e.heartbeat())}})},1e3)},detailsToggle:function(){var e;s(document).on("click",".js-dgwt-wcas-indexing-details-trigger",function(t){t.preventDefault();var a=s(".js-dgwt-wcas-indexer-details");a.hasClass("show")?(a.removeClass("show"),a.addClass("hide"),s(".js-dgwt-wcas-indexing__showd").addClass("show").removeClass("hide"),s(".js-dgwt-wcas-indexing__hided").addClass("hide").removeClass("show"),e=!1):(a.addClass("show"),a.removeClass("hide"),s(".js-dgwt-wcas-indexing__showd").addClass("hide").removeClass("show"),s(".js-dgwt-wcas-indexing__hided").addClass("show").removeClass("hide"),e=!0),s.ajax({url:ajaxurl,type:"post",data:{action:"dgwt_wcas_index_details_toggle",display:e}})})},init:function(){this.registerListeners(),s("."+this.indexingWrappoerClass).length>0&&this.heartbeat(),this.detailsToggle()}},i={actionTriggerClass:"js-dgwt-wcas-bc-wipe-all",switchLeftLabelClass:"js-dgwt-wcas-switch-left",switchRightLabelClass:"js-dgwt-wcas-switch-right",switcherClass:"js-dgwt-wcas-switcher",remindMeLaterClass:"js-dgwt-wcas-bc-remind-me",applyChanges:function(){jQuery(document).on("click","."+this.actionTriggerClass,function(e){e.preventDefault();var t=s(this);t.attr("disabled","disabled"),jQuery.ajax({url:ajaxurl,type:"post",data:{action:"dgwt_wcas_bc_keep_latest"},success:function(e){void 0!==e.success&&e.success&&(s(".dgwt_wcas_basic-tab").click(),s(".js-dgwt-wcas-bc-notice").fadeOut(400,function(){s(this).remove()}))},complete:function(){t.removeAttr("disabled")}})})},switchAjaxRequest:function(e,t){var a=this,i=s(".dgwt-wcas-bc-switcher"),n=s(".dgwt-wcas-bc-error"),c=s(".dgwt-wcas-bc-success"),d=s(".js-dgwt-wcas-bc-spinner");i.addClass("dgwt-wcas-non-events"),d.removeClass("dgwt-wcas-hidden"),n.addClass("dgwt-wcas-hidden"),c.addClass("dgwt-wcas-hidden"),e="enable"===e?"enable":"disable",jQuery.ajax({url:ajaxurl,type:"post",data:{action:"dgwt_wcas_bc_toggle",state:e},success:function(s){void 0!==s.success&&s.success?(t(),"disable"===e&&a.flashStepsContainer(),setTimeout(function(){c.removeClass("dgwt-wcas-hidden")},500),setTimeout(function(){c.addClass("dgwt-wcas-hidden")},2e3)):(i.removeClass("dgwt-wcas-non-events"),d.addClass("dgwt-wcas-hidden"),n.removeClass("dgwt-wcas-hidden"))},error:function(){n.removeClass("dgwt-wcas-hidden")},complete:function(){i.removeClass("dgwt-wcas-non-events"),d.addClass("dgwt-wcas-hidden")}})},enableBC:function(){var e=this;e.switchAjaxRequest("enable",function(){s("."+e.switcherClass).attr("checked",!0),s("."+e.switchLeftLabelClass).addClass("dgwt-wcas-toggler--is-active"),s("."+e.switchRightLabelClass).removeClass("dgwt-wcas-toggler--is-active"),s(".dgwt-wcas-toggle").addClass("dgwt-wcas-toggle--mute"),s(".js-dgwt-wcas-todo-old").removeClass("dgwt-wcas-hidden"),s(".js-dgwt-wcas-todo-latest").addClass("dgwt-wcas-hidden")})},disableBC:function(){var e=this;e.switchAjaxRequest("disable",function(){s("."+e.switcherClass).attr("checked",!1),s("."+e.switchRightLabelClass).addClass("dgwt-wcas-toggler--is-active"),s("."+e.switchLeftLabelClass).removeClass("dgwt-wcas-toggler--is-active"),s(".dgwt-wcas-toggle").removeClass("dgwt-wcas-toggle--mute"),s(".js-dgwt-wcas-todo-old").addClass("dgwt-wcas-hidden"),s(".js-dgwt-wcas-todo-latest").removeClass("dgwt-wcas-hidden")})},remindMeLater:function(){jQuery.ajax({url:ajaxurl,type:"post",data:{action:"dgwt_wcas_bc_remind_me_later"},success:function(e){void 0!==e.success&&e.success&&s(".js-dgwt-wcas-bc-notice").fadeOut(400,function(){s(this).remove()})}})},flashStepsContainer:function(){var e=s(".dgwt-wcas-bc-todo-wrapp");e.addClass("dgwt-wcas-anim-shake"),setTimeout(function(){e.removeClass("dgwt-wcas-anim-shake")},2e3)},switchListeners:function(){var e=this;s("."+e.switchLeftLabelClass).on("click",function(){e.enableBC()}),s("."+e.switchRightLabelClass).on("click",function(){e.disableBC()}),s("."+e.switcherClass).on("click",function(t){t.preventDefault(),s("."+e.switcherClass).is(":checked")?e.enableBC():e.disableBC()}),s("."+e.remindMeLaterClass).on("click",function(s){s.preventDefault(),e.remindMeLater()})},init:function(){this.applyChanges(),this.switchListeners()}};s(document).ready(function(){var n;e.init(),t.init(),(n=s(".js-dgwt-wcas-sgs-autocolspan")).length>0&&n.find("td").attr("colspan",2),i.init(),a.init()})}(jQuery);
assets/js/search.js CHANGED
@@ -104,7 +104,7 @@
104
  params: {},
105
  formatResult: Autocomplete.formatResult,
106
  delimiter: null,
107
- zIndex: 9999,
108
  type: 'GET',
109
  noCache: false,
110
  isRtl: false,
@@ -123,6 +123,7 @@
123
  currentRequest: null,
124
  triggerSelectOnValidInput: true,
125
  isPremium: false,
 
126
  preventBadQueries: true,
127
  lookupFilter: function (suggestion, originalQuery, queryLowerCase) {
128
  return suggestion.value.toLowerCase().indexOf(queryLowerCase) !== -1;
@@ -164,6 +165,7 @@
164
  that.hint = null;
165
  that.hintValue = '';
166
  that.selection = null;
 
167
 
168
  // Initialize and set options:
169
  that.initialize();
@@ -187,6 +189,9 @@
187
  .replace(/</g, '&lt;')
188
  .replace(/>/g, '&gt;')
189
  .replace(/"/g, '&quot;')
 
 
 
190
  .replace(/&lt;(\/?strong)&gt;/g, '<$1>');
191
  };
192
 
@@ -321,10 +326,20 @@
321
  },
322
  onFocus: function () {
323
  var that = this;
 
 
 
 
 
 
 
 
 
324
  that.fixPositionCapture();
325
  if (that.el.val().length >= that.options.minChars) {
326
  that.onValueChange();
327
  }
 
328
  },
329
  onBlur: function () {
330
  this.enableKillerFn();
@@ -500,29 +515,30 @@
500
  return false;
501
  }
502
 
503
- $('.' + options.containerClass).css('height', 'auto');
504
- $('.' + options.containerDetailsClass).css('height', 'auto');
 
 
 
505
 
506
- var contSuggestions = $('.' + options.containerClass),
507
- contDetails = $('.' + options.containerDetailsClass),
508
- sH = contSuggestions.outerHeight(),
509
- dH = contDetails.outerHeight(),
510
  minHeight = 340;
511
 
512
- contSuggestions.find('.dgwt-wcas-suggestion:last-child').removeClass('dgwt-wcas-suggestion-no-border-bottom');
513
 
514
  if (sH <= minHeight && dH <= minHeight) {
515
  return false;
516
  }
517
 
518
- contSuggestions.find('.dgwt-wcas-suggestion:last-child').addClass('dgwt-wcas-suggestion-no-border-bottom');
519
 
520
  if (dH < sH) {
521
- contDetails.css('height', (sH) + 'px');
522
  }
523
 
524
  if (sH < dH) {
525
- contSuggestions.css('height', dH + 'px');
526
  }
527
 
528
  return false;
@@ -1106,11 +1122,18 @@
1106
 
1107
  // Title
1108
  html += '<span class="dgwt-wcas-st">';
1109
- html += '<span>' + formatResult(suggestion.value, value) + parent + '</span>'
 
1110
  // SKU
1111
  if (options.showSKU === true && typeof suggestion.sku != 'undefined' && suggestion.sku.length > 0) {
1112
  html += '<span class="dgwt-wcas-sku">(' + dgwt_wcas.t.sku_label + ' ' + formatResult(suggestion.sku, value) + ')</span>';
1113
  }
 
 
 
 
 
 
1114
  html += '</span>';
1115
 
1116
  // Price
@@ -1118,11 +1141,6 @@
1118
  html += '<span class="dgwt-wcas-sp">' + suggestion.price + '</span>';
1119
  }
1120
 
1121
- // Description
1122
- if (options.showDescription === true && typeof suggestion.desc != 'undefined' && suggestion.desc) {
1123
- html += '<span class="dgwt-wcas-sd">' + formatResult(suggestion.desc, value) + '</span>';
1124
- }
1125
-
1126
  // On sale product badge
1127
  if (options.showFeaturedBadge === true && suggestion.on_sale === true) {
1128
  html += '<span class="dgwt-wcas-badge dgwt-wcas-badge-os">' + options.saleBadgeText + '</span>';
@@ -1282,7 +1300,7 @@
1282
  },
1283
  /*
1284
  * Manages preloader
1285
- *
1286
  * @param action (show or hide)
1287
  * @param container (parent selector)
1288
  * @param cssClass
@@ -1539,6 +1557,83 @@
1539
  $(window).off('resize.autocomplete', that.fixPositionCapture);
1540
  $('.' + that.options.containerClass).remove();
1541
  $('.' + that.options.containerDetailsClass).remove();
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1542
  }
1543
  };
1544
 
@@ -1583,7 +1678,7 @@
1583
 
1584
  var $preloader = $(this).closest('.dgwt-wcas-search-wrapp').find('.dgwt-wcas-preloader');
1585
 
1586
- if (dgwt_wcas.isRtl == 1) {
1587
  $preloader.css('left', (6 + $(this).outerWidth()) + 'px');
1588
  } else {
1589
  $preloader.css('right', $(this).outerWidth() + 'px');
@@ -1623,7 +1718,8 @@
1623
  saleBadgeText: dgwt_wcas.t.sale_badge,
1624
  featuredBadgeText: dgwt_wcas.t.featured_badge,
1625
  isRtl: dgwt_wcas.is_rtl == 1 ? true : false,
1626
- isPremium: dgwt_wcas.is_premium == 1 ? true : false
 
1627
  });
1628
 
1629
  });
104
  params: {},
105
  formatResult: Autocomplete.formatResult,
106
  delimiter: null,
107
+ zIndex: 999999999,
108
  type: 'GET',
109
  noCache: false,
110
  isRtl: false,
123
  currentRequest: null,
124
  triggerSelectOnValidInput: true,
125
  isPremium: false,
126
+ overlayMobile: false,
127
  preventBadQueries: true,
128
  lookupFilter: function (suggestion, originalQuery, queryLowerCase) {
129
  return suggestion.value.toLowerCase().indexOf(queryLowerCase) !== -1;
165
  that.hint = null;
166
  that.hintValue = '';
167
  that.selection = null;
168
+ that.overlayMobileState = 'off';
169
 
170
  // Initialize and set options:
171
  that.initialize();
189
  .replace(/</g, '&lt;')
190
  .replace(/>/g, '&gt;')
191
  .replace(/"/g, '&quot;')
192
+ .replace(/&lt;sup/g, '<sup')
193
+ .replace(/&lt;\/sup/g, '</sup')
194
+ .replace(/sup&gt;/g, 'sup>')
195
  .replace(/&lt;(\/?strong)&gt;/g, '<$1>');
196
  };
197
 
326
  },
327
  onFocus: function () {
328
  var that = this;
329
+
330
+ if(
331
+ that.options.overlayMobile
332
+ && $(window).width() < 992
333
+ && ( 'ontouchend' in document )
334
+ ){
335
+ that.enableOverlayMobile();
336
+ }
337
+
338
  that.fixPositionCapture();
339
  if (that.el.val().length >= that.options.minChars) {
340
  that.onValueChange();
341
  }
342
+
343
  },
344
  onBlur: function () {
345
  this.enableKillerFn();
515
  return false;
516
  }
517
 
518
+ var $suggestionsWrapp = that.getSuggestionsContainer(),
519
+ $detailsWrapp = that.getDetailsContainer();
520
+
521
+ $suggestionsWrapp.css('height', 'auto');
522
+ $detailsWrapp.css('height', 'auto');
523
 
524
+ var sH = $suggestionsWrapp.outerHeight(),
525
+ dH = $detailsWrapp.outerHeight(),
 
 
526
  minHeight = 340;
527
 
528
+ $suggestionsWrapp.find('.dgwt-wcas-suggestion:last-child').removeClass('dgwt-wcas-suggestion-no-border-bottom');
529
 
530
  if (sH <= minHeight && dH <= minHeight) {
531
  return false;
532
  }
533
 
534
+ $suggestionsWrapp.find('.dgwt-wcas-suggestion:last-child').addClass('dgwt-wcas-suggestion-no-border-bottom');
535
 
536
  if (dH < sH) {
537
+ $detailsWrapp.css('height', (sH) + 'px');
538
  }
539
 
540
  if (sH < dH) {
541
+ $suggestionsWrapp.css('height', dH + 'px');
542
  }
543
 
544
  return false;
1122
 
1123
  // Title
1124
  html += '<span class="dgwt-wcas-st">';
1125
+ html += '<span class="dgwt-wcas-st-title">' + formatResult(suggestion.value, value) + parent + '</span>';
1126
+
1127
  // SKU
1128
  if (options.showSKU === true && typeof suggestion.sku != 'undefined' && suggestion.sku.length > 0) {
1129
  html += '<span class="dgwt-wcas-sku">(' + dgwt_wcas.t.sku_label + ' ' + formatResult(suggestion.sku, value) + ')</span>';
1130
  }
1131
+
1132
+ // Description
1133
+ if (options.showDescription === true && typeof suggestion.desc != 'undefined' && suggestion.desc) {
1134
+ html += '<span class="dgwt-wcas-sd">' + formatResult(suggestion.desc, value) + '</span>';
1135
+ }
1136
+
1137
  html += '</span>';
1138
 
1139
  // Price
1141
  html += '<span class="dgwt-wcas-sp">' + suggestion.price + '</span>';
1142
  }
1143
 
 
 
 
 
 
1144
  // On sale product badge
1145
  if (options.showFeaturedBadge === true && suggestion.on_sale === true) {
1146
  html += '<span class="dgwt-wcas-badge dgwt-wcas-badge-os">' + options.saleBadgeText + '</span>';
1300
  },
1301
  /*
1302
  * Manages preloader
1303
+ *
1304
  * @param action (show or hide)
1305
  * @param container (parent selector)
1306
  * @param cssClass
1557
  $(window).off('resize.autocomplete', that.fixPositionCapture);
1558
  $('.' + that.options.containerClass).remove();
1559
  $('.' + that.options.containerDetailsClass).remove();
1560
+ },
1561
+ enableOverlayMobile: function () {
1562
+ var that = this;
1563
+
1564
+ if (that.overlayMobileState === 'on') {
1565
+ return;
1566
+ }
1567
+
1568
+ that.overlayMobileState = 'on';
1569
+
1570
+ var zIndex = 999999,
1571
+ $wrapper = that.getFormWrapper(),
1572
+ $suggestionsWrapp = that.getSuggestionsContainer(),
1573
+ $overlayWrap,
1574
+ html = '';
1575
+
1576
+ $('body').addClass('dgwt-wcas-overlay-mobile-on');
1577
+ html += '<div class="js-dgwt-wcas-overlay-mobile dgwt-wcas-overlay-mobile">';
1578
+ html += '<div class="dgwt-wcas-om-bar js-dgwt-wcas-om-bar">';
1579
+ html += '<span class="dgwt-wcas-om-return js-dgwt-wcas-om-return">';
1580
+ html += '<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 16 16" color="#FFF">';
1581
+ html += '<path fill="#FFF" d="M14 6.125H3.351l4.891-4.891L7 0 0 7l7 7 1.234-1.234L3.35 7.875H14z" fill-rule="evenodd"></path>';
1582
+ html += '</svg>';
1583
+ html += '</span>';
1584
+ html += '</div>';
1585
+ html += '</div>';
1586
+
1587
+ // Create overlay
1588
+ $('body').append(html);
1589
+ $overlayWrap = $('.js-dgwt-wcas-overlay-mobile');
1590
+ $overlayWrap.css('zIndex', zIndex);
1591
+
1592
+ $wrapper.after('<span class="js-dgwt-wcas-om-hook"></span>');
1593
+ $wrapper.appendTo('.js-dgwt-wcas-om-bar');
1594
+ $suggestionsWrapp.appendTo('.js-dgwt-wcas-om-bar');
1595
+ $wrapper.addClass('dgwt-wcas-search-wrapp-mobile');
1596
+
1597
+ if($wrapper.hasClass('dgwt-wcas-has-submit')){
1598
+ $wrapper.addClass('dgwt-wcas-has-submit-off');
1599
+ $wrapper.removeClass('dgwt-wcas-has-submit');
1600
+ }
1601
+
1602
+ $wrapper.find('.' + that.options.searchInputClass).focus();
1603
+
1604
+ $(document).on('click', '.js-dgwt-wcas-om-return', function (e) {
1605
+ that.disableOverlayMobile($overlayWrap);
1606
+ });
1607
+ },
1608
+ disableOverlayMobile: function($overlayWrap){
1609
+ var that = this;
1610
+
1611
+ var $suggestionsWrapp = that.getSuggestionsContainer();
1612
+
1613
+ that.killSuggestions();
1614
+ that.disableKillerFn();
1615
+
1616
+ var $clonedForm = $('.js-dgwt-wcas-om-bar').find('.' + that.options.searchFormClass);
1617
+
1618
+ if($clonedForm.hasClass('dgwt-wcas-has-submit-off')){
1619
+ $clonedForm.removeClass('dgwt-wcas-has-submit-off');
1620
+ $clonedForm.addClass('dgwt-wcas-has-submit');
1621
+ }
1622
+
1623
+ $clonedForm.removeClass('dgwt-wcas-search-wrapp-mobile');
1624
+ $('body').removeClass('dgwt-wcas-overlay-mobile-on');
1625
+ $suggestionsWrapp.appendTo('body');
1626
+ $suggestionsWrapp.removeAttr('body-scroll-lock-ignore');
1627
+ $('.js-dgwt-wcas-om-hook').after($clonedForm);
1628
+ $('.js-dgwt-wcas-overlay-mobile').remove();
1629
+ $('.js-dgwt-wcas-om-hook').remove();
1630
+
1631
+ setTimeout(function(){
1632
+ $clonedForm.find('.' + that.options.searchInputClass).val('');
1633
+ }, 150);
1634
+
1635
+
1636
+ that.overlayMobileState = 'off';
1637
  }
1638
  };
1639
 
1678
 
1679
  var $preloader = $(this).closest('.dgwt-wcas-search-wrapp').find('.dgwt-wcas-preloader');
1680
 
1681
+ if (dgwt_wcas.is_rtl == 1) {
1682
  $preloader.css('left', (6 + $(this).outerWidth()) + 'px');
1683
  } else {
1684
  $preloader.css('right', $(this).outerWidth() + 'px');
1718
  saleBadgeText: dgwt_wcas.t.sale_badge,
1719
  featuredBadgeText: dgwt_wcas.t.featured_badge,
1720
  isRtl: dgwt_wcas.is_rtl == 1 ? true : false,
1721
+ isPremium: dgwt_wcas.is_premium == 1 ? true : false,
1722
+ overlayMobile: dgwt_wcas.overlay_mobile == 1 ? true : false
1723
  });
1724
 
1725
  });
assets/js/search.min.js CHANGED
@@ -1 +1 @@
1
- !function(e){"use strict";"function"==typeof define&&define.amd?define(["jquery"],e):"object"==typeof exports&&"function"==typeof require?e(require("jquery")):e(jQuery)}(function(e){"use strict";var t={escapeRegExChars:function(e){return e.replace(/[|\\{}()[\]^$+*?.]/g,"\\$&")},createNode:function(e){var t=document.createElement("div");return t.className=e,t.style.position="absolute",t.style.display="none",t},highlight:function(e,s){if(dgwt_wcas.is_premium){var o,n=s.split(/ /);if(n)for(n=n.sort(function(e,t){return t.length-e.length}),o=0;o<n.length;o++)if(n[o]&&n[o].length>1){var a="("+t.escapeRegExChars(n[o].trim())+")";e=e.replace(new RegExp(a,"gi"),"<strong>$1</strong>")}}else a="("+t.escapeRegExChars(s)+")",e=e.replace(new RegExp(a,"gi"),"<strong>$1</strong>");return e}},s=27,o=9,n=13,a=38,i=39,l=40;function r(t,s){var o=e.noop,n=this,a={ajaxSettings:{},autoSelectFirst:!1,appendTo:document.body,serviceUrl:null,lookup:null,onSelect:null,onMouseOver:null,onMouseLeave:null,width:"auto",containerDetailsWidth:"auto",showDetailsPanel:!1,showImage:!1,showPrice:!1,showSKU:!1,showDescription:!1,showSaleBadge:!1,showFeaturedBadge:!1,saleBadgeText:"sale",featuredBadgeText:"featured",minChars:3,maxHeight:600,deferRequestBy:0,params:{},formatResult:r.formatResult,delimiter:null,zIndex:9999,type:"GET",noCache:!1,isRtl:!1,onSearchStart:o,onSearchComplete:o,onSearchError:o,preserveInput:!1,searchFormClass:"dgwt-wcas-search-wrapp",containerClass:"dgwt-wcas-suggestions-wrapp",containerDetailsClass:"dgwt-wcas-details-wrapp",searchInputClass:"dgwt-wcas-search-input",preloaderClass:"dgwt-wcas-preloader",closeTrigger:"dgwt-wcas-close",tabDisabled:!1,dataType:"text",currentRequest:null,triggerSelectOnValidInput:!0,isPremium:!1,preventBadQueries:!0,lookupFilter:function(e,t,s){return-1!==e.value.toLowerCase().indexOf(s)},paramName:"query",transformResult:function(t){return"string"==typeof t?e.parseJSON(t):t},showNoSuggestionNotice:!1,noSuggestionNotice:"No results",orientation:"bottom",forceFixPosition:!1,positionFixed:!1};n.element=t,n.el=e(t),n.suggestions=[],n.badQueries=[],n.selectedIndex=-1,n.currentValue=n.element.value,n.intervalId=0,n.cachedResponse={},n.cachedDetails={},n.detailsRequestsSent=[],n.onChangeInterval=null,n.onChange=null,n.isLocal=!1,n.suggestionsContainer=null,n.detailsContainer=null,n.noSuggestionsContainer=null,n.options=e.extend({},a,s),n.classes={selected:"dgwt-wcas-suggestion-selected",suggestion:"dgwt-wcas-suggestion",suggestionsContainerOrientTop:"dgwt-wcas-suggestions-wrapp--top"},n.hint=null,n.hintValue="",n.selection=null,n.initialize(),n.setOptions(s)}r.utils=t,e.Autocomplete=r,r.formatResult=function(e,s){return s?(e=t.highlight(e,s)).replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/>/g,"&gt;").replace(/"/g,"&quot;").replace(/&lt;(\/?strong)&gt;/g,"<$1>"):e},r.prototype={killerFn:null,initialize:function(){var t,s,o=this,n="."+o.classes.suggestion,a=(o.classes.selected,o.options),i="."+a.closeTrigger;o.element.setAttribute("autocomplete","off"),o.killerFn=function(t){0===e(t.target).closest("."+o.options.containerClass).length&&0===e(t.target).closest("."+o.options.containerDetailsClass).length&&(o.killSuggestions(),o.disableKillerFn())};var l=o.el.closest("."+a.searchFormClass).data("wcas-context");o.noSuggestionsContainer=e('<div class="dgwt-wcas-no-suggestion"></div>').html(this.options.noSuggestionNotice).get(0),o.suggestionsContainer=r.utils.createNode(a.containerClass),(t=e(o.suggestionsContainer)).attr("data-wcas-context",l),t.addClass("woocommerce"),t.appendTo("body"),!0===a.showImage&&t.addClass("dgwt-wcas-has-img"),!0===a.showPrice&&t.addClass("dgwt-wcas-has-price"),!0===a.showDescription&&t.addClass("dgwt-wcas-has-desc"),!0===a.showSKU&&t.addClass("dgwt-wcas-has-sku"),"auto"!==a.width&&t.width(a.width),!0===a.showDetailsPanel&&(o.detailsContainer=r.utils.createNode(a.containerDetailsClass),(s=e(o.detailsContainer)).attr("data-wcas-context",l),s.addClass("woocommerce"),s.appendTo("body")),t.on("mouseover.autocomplete",n,function(){o.onMouseOver(e(this).data("index")),o.activate(e(this).data("index"))}),t.on("mouseout.autocomplete",function(){}),e(document).on("click.autocomplete",i,function(t){o.killerFn(t),o.clear(!1),e(this).removeClass(a.closeTrigger),e(this).closest("."+a.searchFormClass).find("."+a.searchInputClass).val("").focus()}),t.on("click.autocomplete",n,function(){return o.select(e(this).data("index")),!1}),e(document).on("change",'[name="js-dgwt-wcas-quantity"]',function(t){e(this).closest(".js-dgwt-wcas-pd-addtc").find("[data-quantity]").attr("data-quantity",e(this).val())}),o.fixPositionCapture=function(){o.adjustContainerWidth(),o.visible&&o.fixPosition()},e(window).on("resize.autocomplete",o.fixPositionCapture),o.el.on("keydown.autocomplete",function(e){o.onKeyPress(e)}),o.el.on("keyup.autocomplete",function(e){o.onKeyUp(e)}),o.el.on("blur.autocomplete",function(){o.onBlur()}),o.el.on("focus.autocomplete",function(){o.onFocus()}),o.el.on("change.autocomplete",function(e){o.onKeyUp(e)}),o.el.on("input.autocomplete",function(e){o.onKeyUp(e)})},onFocus:function(){var e=this;e.fixPositionCapture(),e.el.val().length>=e.options.minChars&&e.onValueChange()},onBlur:function(){this.enableKillerFn()},abortAjax:function(){var e=this;e.currentRequest&&(e.currentRequest.abort(),e.currentRequest=null)},setOptions:function(t){var s=this,o=s.getSuggestionsContainer(),n=s.options;(e.extend(n,t),s.isLocal=e.isArray(n.lookup),s.isLocal&&(n.lookup=s.verifySuggestionsFormat(n.lookup)),n.orientation=s.validateOrientation(n.orientation,"bottom"),o.css({"max-height":s.canShowDetailsBox()?"none":n.maxHeight+"px",width:n.width+"px","z-index":n.zIndex}),!0===n.showDetailsPanel)&&(s.getDetailsContainer().css({"z-index":n.zIndex-1}),e("body").addClass("dgwt-wcas-is-details"));s.options.onSearchComplete=function(){s.preloader("hide","form","dgwt-wcas-inner-preloader"),s.preloader("show","form",n.closeTrigger)}},clearCache:function(){this.cachedResponse={},this.cachedDetails={},this.badQueries=[]},clear:function(e){e&&this.clearCache(),this.currentValue="",this.suggestions=[]},disable:function(){var e=this;e.disabled=!0,clearInterval(e.onChangeInterval),e.abortAjax()},enable:function(){this.disabled=!1},fixPosition:function(){var t=this,s=e("."+t.options.containerClass+'[data-wcas-context="'+t.getContext()+'"]'),o=t.getFormOffset();s.css(o),t.canShowDetailsBox()&&t.fixPositionDetailsBox()},fixPositionDetailsBox:function(){var t=this,s=t.el.closest("[data-wcas-context]"),o=e("."+t.options.containerDetailsClass+'[data-wcas-context="'+t.getContext()+'"]'),n=e("."+t.options.containerClass+'[data-wcas-context="'+t.getContext()+'"]'),a=t.getFormOffset(),i=a.left;if(0==o.length)return!1;var l=!0===t.options.isRtl?1:2,r=Math.round(a.left);if(a.left=r+Math.round(n.width()+l),o.css(a),s.width()>=550)return e("body").removeClass("dgwt-wcas-details-outside"),e("body").removeClass("dgwt-wcas-details-right"),e("body").removeClass("dgwt-wcas-details-left"),void(!0===t.options.isRtl&&(n.css("left",r+Math.round(o.width()+l)+"px"),o.css("left",i+"px")));var c=e(window).width(),d=o.width(),u=o.offset();e("body").addClass("dgwt-wcas-details-outside"),!0===t.options.isRtl&&(a.left=a.left+1);var g=!1,h=!1;c<u.left+d&&(g=!0,e("body").removeClass("dgwt-wcas-details-right"),e("body").addClass("dgwt-wcas-details-left"),o.css("left",Math.round(parseFloat(n.css("left").replace("px","")))-o.outerWidth()+"px")),(u=o.offset()).left<1&&(h=!0,e("body").removeClass("dgwt-wcas-details-left"),e("body").addClass("dgwt-wcas-details-right")),h&&g?(e("body").removeClass("dgwt-wcas-details-left"),e("body").removeClass("dgwt-wcas-details-right"),e("body").addClass("dgwt-wcas-details-notfit")):e("body").removeClass("dgwt-wcas-details-notfit")},fixHeight:function(){var t=this.options;if(1!=t.showDetailsPanel)return!1;e("."+t.containerClass).css("height","auto"),e("."+t.containerDetailsClass).css("height","auto");var s=e("."+t.containerClass),o=e("."+t.containerDetailsClass),n=s.outerHeight(),a=o.outerHeight();return s.find(".dgwt-wcas-suggestion:last-child").removeClass("dgwt-wcas-suggestion-no-border-bottom"),!(n<=340&&a<=340)&&(s.find(".dgwt-wcas-suggestion:last-child").addClass("dgwt-wcas-suggestion-no-border-bottom"),a<n&&o.css("height",n+"px"),n<a&&s.css("height",a+"px"),!1)},getFormOffset:function(){var t=this,s=t.getFormWrapper(),o=t.getSuggestionsContainer(),n=t.options.orientation,a=s.outerHeight(),i=t.el.outerHeight(),l=t.el.offset(),r={top:l.top,left:l.left};if("auto"===n){var c=e(window).height(),d=e(window).scrollTop(),u=-d+l.top-a,g=d+c-(l.top+i+a);n=Math.max(u,g)===u?"top":"bottom"}if("top"===n){o[0].getBoundingClientRect().top;var h=s[0].getBoundingClientRect().top;o.css("height","auto"),h<o.height()&&o.height(h-10),r.top+=-o.outerHeight()}else r.top+=i;return r},getContext:function(){var e=this.el.closest("[data-wcas-context]"),t="";return e.length>0&&(t=e.data("wcas-context")),t},getFormWrapper:function(){return this.el.closest("[data-wcas-context]")},getSuggestionsContainer:function(){return e("."+this.options.containerClass+'[data-wcas-context="'+this.getContext()+'"]')},getDetailsContainer:function(){return e("."+this.options.containerDetailsClass+'[data-wcas-context="'+this.getContext()+'"]')},scrollDownSuggestions:function(){var e=this.getSuggestionsContainer();e[0].scrollTop=e[0].scrollHeight},enableKillerFn:function(){e(document).on("click.autocomplete",this.killerFn)},disableKillerFn:function(){e(document).off("click.autocomplete",this.killerFn)},killSuggestions:function(){var e=this;e.stopKillSuggestions(),e.intervalId=window.setInterval(function(){e.visible&&(e.options.preserveInput||e.el.val(e.currentValue),e.hide()),e.stopKillSuggestions()},50)},stopKillSuggestions:function(){window.clearInterval(this.intervalId)},isCursorAtEnd:function(){var e,t=this.el.val().length,s=this.element.selectionStart;return"number"==typeof s?s===t:!document.selection||((e=document.selection.createRange()).moveStart("character",-t),t===e.text.length)},onKeyPress:function(e){var t=this;if(t.disabled||t.visible||e.which!==l||!t.currentValue){if(!t.disabled&&t.visible){switch(e.which){case s:t.el.val(t.currentValue),t.hide();break;case i:if(t.hint&&t.options.onHint&&t.isCursorAtEnd()){t.selectHint();break}return;case o:if(t.hint&&t.options.onHint)return void t.selectHint();if(-1===t.selectedIndex)return void t.hide();if(t.select(t.selectedIndex),!1===t.options.tabDisabled)return;break;case n:if(-1===t.selectedIndex)return void t.hide();t.select(t.selectedIndex);break;case a:t.moveUp();break;case l:t.moveDown();break;default:return}e.stopImmediatePropagation(),e.preventDefault()}}else t.suggest()},onKeyUp:function(e){var t=this;if(!t.disabled){switch(e.which){case a:case l:return}clearInterval(t.onChangeInterval),t.currentValue!==t.el.val()&&(t.findBestHint(),t.options.deferRequestBy>0?t.onChangeInterval=setInterval(function(){t.onValueChange()},t.options.deferRequestBy):t.onValueChange())}},onValueChange:function(){var t=this,s=t.options,o=t.el.val(),n=t.getQuery(o);t.selection&&t.currentValue!==n&&(t.selection=null,(s.onInvalidateSelection||e.noop).call(t.element)),clearInterval(t.onChangeInterval),t.currentValue=o,t.selectedIndex=-1,s.triggerSelectOnValidInput&&t.isExactMatch(n)?t.select(0):n.length<s.minChars?(e("."+t.options.closeTrigger).removeClass(t.options.closeTrigger),t.hide()):t.getSuggestions(n)},isExactMatch:function(e){var t=this.suggestions;return 1===t.length&&t[0].value.toLowerCase()===e.toLowerCase()},canShowDetailsBox:function(){return 1==this.options.showDetailsPanel&&e(window).width()>=992&&!("ontouchend"in document)},getQuery:function(t){var s,o=this.options.delimiter;return o?(s=t.split(o),e.trim(s[s.length-1])):t},getSuggestionsLocal:function(t){var s,o=this.options,n=t.toLowerCase(),a=o.lookupFilter,i=parseInt(o.lookupLimit,10);return s={suggestions:e.grep(o.lookup,function(e){return a(e,t,n)})},i&&s.suggestions.length>i&&(s.suggestions=s.suggestions.slice(0,i)),s},getSuggestions:function(t){var s,o,n,a,i=this,l=i.options,r=l.serviceUrl;l.params[l.paramName]=t,o=l.ignoreParams?null:l.params,i.preloader("show","form","dgwt-wcas-inner-preloader"),!1!==l.onSearchStart.call(i.element,l.params)&&(e.isFunction(l.lookup)?l.lookup(t,function(e){i.suggestions=e.suggestions,i.suggest(),i.getDetails(e.suggestions[0]),l.onSearchComplete.call(i.element,t,e.suggestions)}):(i.isLocal?s=i.getSuggestionsLocal(t):(e.isFunction(r)&&(r=r.call(i.element,t)),n=r+"?"+e.param(o||{}),s=i.cachedResponse[n]),s&&e.isArray(s.suggestions)?(i.suggestions=s.suggestions,i.suggest(),i.getDetails(s.suggestions[0]),l.onSearchComplete.call(i.element,t,s.suggestions)):i.isBadQuery(t)?l.onSearchComplete.call(i.element,t,[]):(i.abortAjax(),a={url:r,data:o,type:l.type,dataType:l.dataType},e.extend(a,l.ajaxSettings),i.currentRequest=e.ajax(a).done(function(e){var s;i.currentRequest=null,void 0!==(s=l.transformResult(e,t)).suggestions&&(i.processResponse(s,t,n),i.getDetails(s.suggestions[0])),i.fixPositionCapture(),l.onSearchComplete.call(i.element,t,s.suggestions)}).fail(function(e,s,o){l.onSearchError.call(i.element,t,e,s,o)}))))},getDetails:function(t){var s=this,o=s.options;if(!s.canShowDetailsBox())return!1;if(null!=t&&("string"!=typeof t.more_products||"more_products"!==t.more_products)){var n,a,i=e("."+o.containerDetailsClass);s.fixHeight();var l={action:dgwt_wcas.action_result_details,post_id:null!=t.post_id?t.post_id:0,term_id:null!=t.term_id?t.term_id:0,taxonomy:null!=t.taxonomy?t.taxonomy:"",value:null!=t.value?t.value:""};if(n=l.action+l.post_id+l.term_id+l.taxonomy,null!=(a=s.cachedDetails[n]))i.html(a.details),s.fixHeight(),s.fixPositionCapture();else{if(i.html(""),s.preloader("show","details","",!0),-1!=e.inArray(n,s.detailsRequestsSent))return;s.detailsRequestsSent.push(n),e.ajax({data:l,type:"post",url:dgwt_wcas.ajax_details_endpoint,success:function(e){var t="string"==typeof e?jQuery.parseJSON(e):e;s.cachedDetails[n]=t,s.preloader("hide","details","",!0),null!=t.details?i.html(t.details):i.html(""),s.fixPositionCapture(),s.fixHeight()},error:function(e,t){s.preloader("hide","details","",!0),i.html(e),s.fixPositionCapture(),s.fixHeight()}})}}},isBadQuery:function(e){if(!this.options.preventBadQueries)return!1;for(var t=this.badQueries,s=t.length;s--;)if(0===e.indexOf(t[s]))return!0;return!1},hide:function(){var t=this,s=t.getSuggestionsContainer(),o=t.getDetailsContainer();e.isFunction(t.options.onHide)&&t.visible&&t.options.onHide.call(t.element,container),t.visible=!1,t.selectedIndex=-1,clearInterval(t.onChangeInterval),s.hide(),s.removeClass(t.classes.suggestionsContainerOrientTop),o.hide(),e("body").removeClass("dgwt-wcas-open"),e("body").removeClass("dgwt-wcas-block-scroll"),t.signalHint(null)},suggest:function(){if(this.suggestions.length){var t,s=this,o=s.options,n=o.groupBy,a=o.formatResult,i=s.getQuery(s.currentValue),l=s.classes.suggestion,r=s.classes.selected,c=s.getSuggestionsContainer(),d=s.getDetailsContainer(),u=e(s.noSuggestionsContainer),g=o.beforeRender,h="";o.triggerSelectOnValidInput&&s.isExactMatch(i)?s.select(0):(e.each(s.suggestions,function(e,s){var r,c="",d=!1;if(n&&(h+=(r=s.data[n],t===r?"":'<div class="autocomplete-group"><strong>'+(t=r)+"</strong></div>")),void 0===s.post_id){var u=l,g="dgwt-wcas-st",p="",w="",f="";"product_cat"===s.taxonomy?(u+=" dgwt-wcas-suggestion-cat",p+='<span class="dgwt-wcas-st--tax">'+dgwt_wcas.t.category+"</span>",void 0!==s.breadcrumbs&&s.breadcrumbs&&(f=s.breadcrumbs+" &gt; "+s.value,w+='<span class="dgwt-wcas-st-breadcrumbs">'+dgwt_wcas.copy_in_category+" "+s.breadcrumbs+"</span>")):"product_tag"===s.taxonomy?(u+=" dgwt-wcas-suggestion-tag",p+='<span class="dgwt-wcas-st--tax">'+dgwt_wcas.t.tag+"</span>"):void 0!==s.type&&"more_products"===s.type?(u+=" js-dgwt-wcas-suggestion-more dgwt-wcas-suggestion-more",g="dgwt-wcas-st-more",s.value=dgwt_wcas.copy_show_more+" ("+s.total+")"):(u+=" dgwt-wcas-suggestion-nores",s.value=dgwt_wcas.copy_no_result),f=f.length>0?' title="'+f+'"':"",h+='<div class="'+u+'" data-index="'+e+'">',h+="<span"+f+' class="'+g+'">'+p+a(s.value,i)+w+"</span>",h+="</div>"}else!0===o.showImage&&void 0!==s.thumb_html&&(d=!0),c+=void 0!==s.post_id?'data-post-id="'+s.post_id+'" ':"",c+=void 0!==s.taxonomy?'data-taxonomy="'+s.taxonomy+'" ':"",c+=void 0!==s.term_id?'data-term-id="'+s.term_id+'" ':"",h+='<div class="'+l+' dgwt-wcas-suggestion-product" data-index="'+e+'" '+c+">",d&&(h+='<span class="dgwt-wcas-si">'+s.thumb_html+"</span>"),h+=d?'<div class="dgwt-wcas-content-wrapp">':"",h+='<span class="dgwt-wcas-st">',h+="<span>"+a(s.value,i)+"</span>",!0===o.showSKU&&void 0!==s.sku&&s.sku.length>0&&(h+='<span class="dgwt-wcas-sku">('+dgwt_wcas.t.sku_label+" "+a(s.sku,i)+")</span>"),h+="</span>",!0===o.showPrice&&void 0!==s.price&&(h+='<span class="dgwt-wcas-sp">'+s.price+"</span>"),!0===o.showDescription&&void 0!==s.desc&&s.desc&&(h+='<span class="dgwt-wcas-sd">'+a(s.desc,i)+"</span>"),!0===o.showFeaturedBadge&&!0===s.on_sale&&(h+='<span class="dgwt-wcas-badge dgwt-wcas-badge-os">'+o.saleBadgeText+"</span>"),!0===o.showFeaturedBadge&&!0===s.featured&&(h+='<span class="dgwt-wcas-badge dgwt-wcas-badge-f">'+o.featuredBadgeText+"</span>"),h+=d?"</div>":"",h+="</div>"}),this.adjustContainerWidth(),u.detach(),c.html(h),e.isFunction(g)&&g.call(s.element,c,s.suggestions),s.fixPositionCapture(),c.show(),e("body").addClass("dgwt-wcas-open"),!0===o.showDetailsPanel&&(d.show(),s.fixHeight()),o.autoSelectFirst&&(s.selectedIndex=0,c.scrollTop(0),c.children("."+l).first().addClass(r)),s.visible=!0,"top"===s.options.orientation&&(s.getSuggestionsContainer().addClass(s.classes.suggestionsContainerOrientTop),e("body").addClass("dgwt-wcas-block-scroll"),setTimeout(function(){s.scrollDownSuggestions()},300)),s.findBestHint())}else this.options.showNoSuggestionNotice?this.noSuggestions():this.hide()},noSuggestions:function(){var t=this.getSuggestionsContainer(),s=e(this.noSuggestionsContainer);s.detach(),t.empty(),t.append(s),this.fixPositionCapture(),t.show(),this.visible=!0},adjustContainerWidth:function(){var t,s=this,o=s.options,n=e("body"),a=s.getFormWrapper(),i=s.getSuggestionsContainer(),l=s.getDetailsContainer(),r=s.getFormOffset(),c=getComputedStyle(a[0]).width;if(c=Math.round(parseFloat(c.replace("px",""))),"auto"===o.width&&(t=s.el.outerWidth(),i.css("width",t+"px")),!0===o.showDetailsPanel){if(a.width()>=550)return n.addClass("dgwt-wcas-full-width"),c%2==0?(i.css("width",Math.round(c/2)),l.css("width",Math.round(c/2))):(i.css("width",Math.floor(c/2)),l.css("width",Math.ceil(c/2))),n.removeClass("dgwt-wcas-details-left"),n.removeClass("dgwt-wcas-details-right"),void(!0===o.isRtl?l.css("left","0"):i.css("left",c/2+r.left+"px"));n.addClass("dgwt-wcas-details-right")}},findBestHint:function(){var t=this.el.val().toLowerCase(),s=null;t&&(e.each(this.suggestions,function(e,o){var n=0===o.value.toLowerCase().indexOf(t);return n&&(s=o),!n}),this.signalHint(s))},signalHint:function(t){var s="",o=this;t&&(s=o.currentValue+t.value.substr(o.currentValue.length)),o.hintValue!==s&&(o.hintValue=s,o.hint=t,(this.options.onHint||e.noop)(s))},preloader:function(t,s,o,n){var a,i,l="dgwt-wcas-preloader-wrapp",r=null==o?l:l+" "+o;if("form"===s?i=this.getFormWrapper().find(".dgwt-wcas-preloader"):"details"===s&&(i=e(this.detailsContainer)),1==dgwt_wcas.show_preloader&&0!=i.length)if(!0===n)if("hide"!==t){if("show"===t){var c=this.options.isRtl?"-rtl":"";a='<div class="'+r+'"><img class="dgwt-wcas-placeholder-preloader" src="'+dgwt_wcas.img_url+"placeholder"+c+'.png" /></div>',i.html(a)}}else e(l).remove();else"hide"===t?i.removeClass(o):i.addClass(o)},verifySuggestionsFormat:function(t){return t.length&&"string"==typeof t[0]?e.map(t,function(e){return{value:e,data:null}}):t},validateOrientation:function(t,s){return t=e.trim(t||"").toLowerCase(),-1===e.inArray(t,["auto","bottom","top"])&&(t=s),t},processResponse:function(e,t,s){var o=this,n=o.options;e.suggestions=o.verifySuggestionsFormat(e.suggestions),n.noCache||(o.cachedResponse[s]=e,n.preventBadQueries&&!e.suggestions.length&&o.badQueries.push(t)),t===o.getQuery(o.currentValue)&&("top"===o.options.orientation&&e.suggestions.reverse(),o.suggestions=e.suggestions,o.suggest())},activate:function(t){var s,o=this,n=o.classes.selected,a=o.getSuggestionsContainer(),i=a.find("."+o.classes.suggestion);return a.find("."+n).removeClass(n),o.selectedIndex=t,-1!==o.selectedIndex&&i.length>o.selectedIndex?(s=i.get(o.selectedIndex),e(s).addClass(n),s):null},selectHint:function(){var t=e.inArray(this.hint,this.suggestions);this.select(t)},select:function(e){this.hide(),this.onSelect(e),this.disableKillerFn()},moveUp:function(){var e=this;if(-1!==e.selectedIndex)return 0===e.selectedIndex?(e.getSuggestionsContainer().children().first().removeClass(e.classes.selected),e.selectedIndex=-1,e.el.val(e.currentValue),void e.findBestHint()):void e.adjustScroll(e.selectedIndex-1)},moveDown:function(){this.selectedIndex!==this.suggestions.length-1&&this.adjustScroll(this.selectedIndex+1)},adjustScroll:function(t){var s=this,o=s.activate(t);if(o&&!s.canShowDetailsBox()){var n,a,i,l=s.getSuggestionsContainer(),r=e(o).outerHeight();n=o.offsetTop,i=(a=l.scrollTop())+s.options.maxHeight-r,n<a?l.scrollTop(n):n>i&&l.scrollTop(n-s.options.maxHeight+r),s.options.preserveInput||s.el.val(s.getValue(s.suggestions[t].value)),s.signalHint(null)}},onSelect:function(t){var s=this,o=s.options.onSelect,n=s.suggestions[t];void 0===n.type||"more_products"!==n.type?(s.currentValue=s.getValue(n.value),s.currentValue===s.el.val()||s.options.preserveInput||s.el.val(s.currentValue),n.url.length>0&&(window.location.href=n.url),s.signalHint(null),s.suggestions=[],s.selection=n,e.isFunction(o)&&o.call(s.element,n)):s.el.closest("form").trigger("submit")},onMouseOver:function(t){var s=this,o=s.options.onMouseOver,n=s.suggestions[t];s.selectedIndex!==t&&s.getDetails(n),e.isFunction(o)&&o.call(s.element,n)},onMouseLeave:function(t){var s=this.options.onMouseLeave,o=this.suggestions[t];e.isFunction(s)&&s.call(this.element,o)},getValue:function(e){var t,s,o=this.options.delimiter;return o?1===(s=(t=this.currentValue).split(o)).length?e:t.substr(0,t.length-s[s.length-1].length)+e:e},dispose:function(){var t=this;t.el.off(".autocomplete").removeData("autocomplete"),t.disableKillerFn(),e(window).off("resize.autocomplete",t.fixPositionCapture),e("."+t.options.containerClass).remove(),e("."+t.options.containerDetailsClass).remove()}},e.fn.dgwtWcasAutocomplete=function(t,s){var o="autocomplete";return arguments.length?this.each(function(){var n=e(this),a=n.data(o);"string"==typeof t?a&&"function"==typeof a[t]&&a[t](s):(a&&a.dispose&&a.dispose(),a=new r(this,t),n.data(o,a))}):this.first().data(o)},e(window).on("load",function(){e(".dgwt-wcas-search-submit").length>0&&e(".dgwt-wcas-search-submit").each(function(){var t=e(this).closest(".dgwt-wcas-search-wrapp").find(".dgwt-wcas-preloader");1==dgwt_wcas.isRtl?t.css("left",6+e(this).outerWidth()+"px"):t.css("right",e(this).outerWidth()+"px")})}),e(document).ready(function(){var t=1==dgwt_wcas.show_details_box;(jQuery(window).width()<992||"ontouchend"in document)&&(t=!1),e(".dgwt-wcas-search-input").dgwtWcasAutocomplete({minChars:dgwt_wcas.min_chars,width:dgwt_wcas.sug_width,autoSelectFirst:!1,triggerSelectOnValidInput:!1,serviceUrl:dgwt_wcas.ajax_search_endpoint,paramName:"s",showDetailsPanel:t,showImage:1==dgwt_wcas.show_images,showPrice:1==dgwt_wcas.show_price,showDescription:1==dgwt_wcas.show_desc,showSKU:1==dgwt_wcas.show_sku,showSaleBadge:1==dgwt_wcas.show_sale_badge,showFeaturedBadge:1==dgwt_wcas.show_featured_badge,saleBadgeText:dgwt_wcas.t.sale_badge,featuredBadgeText:dgwt_wcas.t.featured_badge,isRtl:1==dgwt_wcas.is_rtl,isPremium:1==dgwt_wcas.is_premium})}),e(window).on("load",function(){var t=e(".dgwt-wcas-search-wrapp[data-wcas-context]"),s=[];t.length>0&&t.each(function(){var t=e(this).attr("data-wcas-context");if(-1==e.inArray(t,s))s.push(t);else{var o=Math.random().toString(36).substring(2,6),n=e('.dgwt-wcas-suggestions-wrapp[data-wcas-context="'+t+'"]'),a=e('.dgwt-wcas-details-wrapp[data-wcas-context="'+t+'"]');e(this).attr("data-wcas-context",o),n.length>0&&e(n[n.length-1]).attr("data-wcas-context",o),a.length>0&&e(a[a.length-1]).attr("data-wcas-context",o)}})})});
1
+ !function(t){"use strict";"function"==typeof define&&define.amd?define(["jquery"],t):"object"==typeof exports&&"function"==typeof require?t(require("jquery")):t(jQuery)}(function(t){"use strict";var e={escapeRegExChars:function(t){return t.replace(/[|\\{}()[\]^$+*?.]/g,"\\$&")},createNode:function(t){var e=document.createElement("div");return e.className=t,e.style.position="absolute",e.style.display="none",e},highlight:function(t,s){if(dgwt_wcas.is_premium){var i,o=s.split(/ /);if(o)for(o=o.sort(function(t,e){return e.length-t.length}),i=0;i<o.length;i++)if(o[i]&&o[i].length>1){var a="("+e.escapeRegExChars(o[i].trim())+")";t=t.replace(new RegExp(a,"gi"),"<strong>$1</strong>")}}else a="("+e.escapeRegExChars(s)+")",t=t.replace(new RegExp(a,"gi"),"<strong>$1</strong>");return t}},s=27,i=9,o=13,a=38,n=39,l=40;function r(e,s){var i=t.noop,o={ajaxSettings:{},autoSelectFirst:!1,appendTo:document.body,serviceUrl:null,lookup:null,onSelect:null,onMouseOver:null,onMouseLeave:null,width:"auto",containerDetailsWidth:"auto",showDetailsPanel:!1,showImage:!1,showPrice:!1,showSKU:!1,showDescription:!1,showSaleBadge:!1,showFeaturedBadge:!1,saleBadgeText:"sale",featuredBadgeText:"featured",minChars:3,maxHeight:600,deferRequestBy:0,params:{},formatResult:r.formatResult,delimiter:null,zIndex:999999999,type:"GET",noCache:!1,isRtl:!1,onSearchStart:i,onSearchComplete:i,onSearchError:i,preserveInput:!1,searchFormClass:"dgwt-wcas-search-wrapp",containerClass:"dgwt-wcas-suggestions-wrapp",containerDetailsClass:"dgwt-wcas-details-wrapp",searchInputClass:"dgwt-wcas-search-input",preloaderClass:"dgwt-wcas-preloader",closeTrigger:"dgwt-wcas-close",tabDisabled:!1,dataType:"text",currentRequest:null,triggerSelectOnValidInput:!0,isPremium:!1,overlayMobile:!1,preventBadQueries:!0,lookupFilter:function(t,e,s){return-1!==t.value.toLowerCase().indexOf(s)},paramName:"query",transformResult:function(e){return"string"==typeof e?t.parseJSON(e):e},showNoSuggestionNotice:!1,noSuggestionNotice:"No results",orientation:"bottom",forceFixPosition:!1,positionFixed:!1};this.element=e,this.el=t(e),this.suggestions=[],this.badQueries=[],this.selectedIndex=-1,this.currentValue=this.element.value,this.intervalId=0,this.cachedResponse={},this.cachedDetails={},this.detailsRequestsSent=[],this.onChangeInterval=null,this.onChange=null,this.isLocal=!1,this.suggestionsContainer=null,this.detailsContainer=null,this.noSuggestionsContainer=null,this.options=t.extend({},o,s),this.classes={selected:"dgwt-wcas-suggestion-selected",suggestion:"dgwt-wcas-suggestion",suggestionsContainerOrientTop:"dgwt-wcas-suggestions-wrapp--top"},this.hint=null,this.hintValue="",this.selection=null,this.overlayMobileState="off",this.initialize(),this.setOptions(s)}r.utils=e,t.Autocomplete=r,r.formatResult=function(t,s){return s?(t=e.highlight(t,s)).replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/>/g,"&gt;").replace(/"/g,"&quot;").replace(/&lt;sup/g,"<sup").replace(/&lt;\/sup/g,"</sup").replace(/sup&gt;/g,"sup>").replace(/&lt;(\/?strong)&gt;/g,"<$1>"):t},r.prototype={killerFn:null,initialize:function(){var e,s,i=this,o="."+i.classes.suggestion,a=(i.classes.selected,i.options),n="."+a.closeTrigger;i.element.setAttribute("autocomplete","off"),i.killerFn=function(e){0===t(e.target).closest("."+i.options.containerClass).length&&0===t(e.target).closest("."+i.options.containerDetailsClass).length&&(i.killSuggestions(),i.disableKillerFn())};var l=i.el.closest("."+a.searchFormClass).data("wcas-context");i.noSuggestionsContainer=t('<div class="dgwt-wcas-no-suggestion"></div>').html(this.options.noSuggestionNotice).get(0),i.suggestionsContainer=r.utils.createNode(a.containerClass),(e=t(i.suggestionsContainer)).attr("data-wcas-context",l),e.addClass("woocommerce"),e.appendTo("body"),!0===a.showImage&&e.addClass("dgwt-wcas-has-img"),!0===a.showPrice&&e.addClass("dgwt-wcas-has-price"),!0===a.showDescription&&e.addClass("dgwt-wcas-has-desc"),!0===a.showSKU&&e.addClass("dgwt-wcas-has-sku"),"auto"!==a.width&&e.width(a.width),!0===a.showDetailsPanel&&(i.detailsContainer=r.utils.createNode(a.containerDetailsClass),(s=t(i.detailsContainer)).attr("data-wcas-context",l),s.addClass("woocommerce"),s.appendTo("body")),e.on("mouseover.autocomplete",o,function(){i.onMouseOver(t(this).data("index")),i.activate(t(this).data("index"))}),e.on("mouseout.autocomplete",function(){}),t(document).on("click.autocomplete",n,function(e){i.killerFn(e),i.clear(!1),t(this).removeClass(a.closeTrigger),t(this).closest("."+a.searchFormClass).find("."+a.searchInputClass).val("").focus()}),e.on("click.autocomplete",o,function(){return i.select(t(this).data("index")),!1}),t(document).on("change",'[name="js-dgwt-wcas-quantity"]',function(e){t(this).closest(".js-dgwt-wcas-pd-addtc").find("[data-quantity]").attr("data-quantity",t(this).val())}),i.fixPositionCapture=function(){i.adjustContainerWidth(),i.visible&&i.fixPosition()},t(window).on("resize.autocomplete",i.fixPositionCapture),i.el.on("keydown.autocomplete",function(t){i.onKeyPress(t)}),i.el.on("keyup.autocomplete",function(t){i.onKeyUp(t)}),i.el.on("blur.autocomplete",function(){i.onBlur()}),i.el.on("focus.autocomplete",function(){i.onFocus()}),i.el.on("change.autocomplete",function(t){i.onKeyUp(t)}),i.el.on("input.autocomplete",function(t){i.onKeyUp(t)})},onFocus:function(){this.options.overlayMobile&&t(window).width()<992&&"ontouchend"in document&&this.enableOverlayMobile(),this.fixPositionCapture(),this.el.val().length>=this.options.minChars&&this.onValueChange()},onBlur:function(){this.enableKillerFn()},abortAjax:function(){this.currentRequest&&(this.currentRequest.abort(),this.currentRequest=null)},setOptions:function(e){var s=this,i=s.getSuggestionsContainer(),o=s.options;(t.extend(o,e),s.isLocal=t.isArray(o.lookup),s.isLocal&&(o.lookup=s.verifySuggestionsFormat(o.lookup)),o.orientation=s.validateOrientation(o.orientation,"bottom"),i.css({"max-height":s.canShowDetailsBox()?"none":o.maxHeight+"px",width:o.width+"px","z-index":o.zIndex}),!0===o.showDetailsPanel)&&(s.getDetailsContainer().css({"z-index":o.zIndex-1}),t("body").addClass("dgwt-wcas-is-details"));s.options.onSearchComplete=function(){s.preloader("hide","form","dgwt-wcas-inner-preloader"),s.preloader("show","form",o.closeTrigger)}},clearCache:function(){this.cachedResponse={},this.cachedDetails={},this.badQueries=[]},clear:function(t){t&&this.clearCache(),this.currentValue="",this.suggestions=[]},disable:function(){this.disabled=!0,clearInterval(this.onChangeInterval),this.abortAjax()},enable:function(){this.disabled=!1},fixPosition:function(){var e=t("."+this.options.containerClass+'[data-wcas-context="'+this.getContext()+'"]'),s=this.getFormOffset();e.css(s),this.canShowDetailsBox()&&this.fixPositionDetailsBox()},fixPositionDetailsBox:function(){var e=this.el.closest("[data-wcas-context]"),s=t("."+this.options.containerDetailsClass+'[data-wcas-context="'+this.getContext()+'"]'),i=t("."+this.options.containerClass+'[data-wcas-context="'+this.getContext()+'"]'),o=this.getFormOffset(),a=o.left;if(0==s.length)return!1;var n=!0===this.options.isRtl?1:2,l=Math.round(o.left);if(o.left=l+Math.round(i.width()+n),s.css(o),e.width()>=550)return t("body").removeClass("dgwt-wcas-details-outside"),t("body").removeClass("dgwt-wcas-details-right"),t("body").removeClass("dgwt-wcas-details-left"),void(!0===this.options.isRtl&&(i.css("left",l+Math.round(s.width()+n)+"px"),s.css("left",a+"px")));var r=t(window).width(),c=s.width(),d=s.offset();t("body").addClass("dgwt-wcas-details-outside"),!0===this.options.isRtl&&(o.left=o.left+1);var u=!1,g=!1;r<d.left+c&&(u=!0,t("body").removeClass("dgwt-wcas-details-right"),t("body").addClass("dgwt-wcas-details-left"),s.css("left",Math.round(parseFloat(i.css("left").replace("px","")))-s.outerWidth()+"px")),(d=s.offset()).left<1&&(g=!0,t("body").removeClass("dgwt-wcas-details-left"),t("body").addClass("dgwt-wcas-details-right")),g&&u?(t("body").removeClass("dgwt-wcas-details-left"),t("body").removeClass("dgwt-wcas-details-right"),t("body").addClass("dgwt-wcas-details-notfit")):t("body").removeClass("dgwt-wcas-details-notfit")},fixHeight:function(){if(1!=this.options.showDetailsPanel)return!1;var t=this.getSuggestionsContainer(),e=this.getDetailsContainer();t.css("height","auto"),e.css("height","auto");var s=t.outerHeight(),i=e.outerHeight();return t.find(".dgwt-wcas-suggestion:last-child").removeClass("dgwt-wcas-suggestion-no-border-bottom"),!(s<=340&&i<=340)&&(t.find(".dgwt-wcas-suggestion:last-child").addClass("dgwt-wcas-suggestion-no-border-bottom"),i<s&&e.css("height",s+"px"),s<i&&t.css("height",i+"px"),!1)},getFormOffset:function(){var e=this.getFormWrapper(),s=this.getSuggestionsContainer(),i=this.options.orientation,o=e.outerHeight(),a=this.el.outerHeight(),n=this.el.offset(),l={top:n.top,left:n.left};if("auto"===i){var r=t(window).height(),c=t(window).scrollTop(),d=-c+n.top-o,u=c+r-(n.top+a+o);i=Math.max(d,u)===d?"top":"bottom"}if("top"===i){s[0].getBoundingClientRect().top;var g=e[0].getBoundingClientRect().top;s.css("height","auto"),g<s.height()&&s.height(g-10),l.top+=-s.outerHeight()}else l.top+=a;return l},getContext:function(){var t=this.el.closest("[data-wcas-context]"),e="";return t.length>0&&(e=t.data("wcas-context")),e},getFormWrapper:function(){return this.el.closest("[data-wcas-context]")},getSuggestionsContainer:function(){return t("."+this.options.containerClass+'[data-wcas-context="'+this.getContext()+'"]')},getDetailsContainer:function(){return t("."+this.options.containerDetailsClass+'[data-wcas-context="'+this.getContext()+'"]')},scrollDownSuggestions:function(){var t=this.getSuggestionsContainer();t[0].scrollTop=t[0].scrollHeight},enableKillerFn:function(){t(document).on("click.autocomplete",this.killerFn)},disableKillerFn:function(){t(document).off("click.autocomplete",this.killerFn)},killSuggestions:function(){var t=this;t.stopKillSuggestions(),t.intervalId=window.setInterval(function(){t.visible&&(t.options.preserveInput||t.el.val(t.currentValue),t.hide()),t.stopKillSuggestions()},50)},stopKillSuggestions:function(){window.clearInterval(this.intervalId)},isCursorAtEnd:function(){var t,e=this.el.val().length,s=this.element.selectionStart;return"number"==typeof s?s===e:!document.selection||((t=document.selection.createRange()).moveStart("character",-e),e===t.text.length)},onKeyPress:function(t){if(this.disabled||this.visible||t.which!==l||!this.currentValue){if(!this.disabled&&this.visible){switch(t.which){case s:this.el.val(this.currentValue),this.hide();break;case n:if(this.hint&&this.options.onHint&&this.isCursorAtEnd()){this.selectHint();break}return;case i:if(this.hint&&this.options.onHint)return void this.selectHint();if(-1===this.selectedIndex)return void this.hide();if(this.select(this.selectedIndex),!1===this.options.tabDisabled)return;break;case o:if(-1===this.selectedIndex)return void this.hide();this.select(this.selectedIndex);break;case a:this.moveUp();break;case l:this.moveDown();break;default:return}t.stopImmediatePropagation(),t.preventDefault()}}else this.suggest()},onKeyUp:function(t){var e=this;if(!e.disabled){switch(t.which){case a:case l:return}clearInterval(e.onChangeInterval),e.currentValue!==e.el.val()&&(e.findBestHint(),e.options.deferRequestBy>0?e.onChangeInterval=setInterval(function(){e.onValueChange()},e.options.deferRequestBy):e.onValueChange())}},onValueChange:function(){var e=this.options,s=this.el.val(),i=this.getQuery(s);this.selection&&this.currentValue!==i&&(this.selection=null,(e.onInvalidateSelection||t.noop).call(this.element)),clearInterval(this.onChangeInterval),this.currentValue=s,this.selectedIndex=-1,e.triggerSelectOnValidInput&&this.isExactMatch(i)?this.select(0):i.length<e.minChars?(t("."+this.options.closeTrigger).removeClass(this.options.closeTrigger),this.hide()):this.getSuggestions(i)},isExactMatch:function(t){var e=this.suggestions;return 1===e.length&&e[0].value.toLowerCase()===t.toLowerCase()},canShowDetailsBox:function(){return 1==this.options.showDetailsPanel&&t(window).width()>=992&&!("ontouchend"in document)},getQuery:function(e){var s,i=this.options.delimiter;return i?(s=e.split(i),t.trim(s[s.length-1])):e},getSuggestionsLocal:function(e){var s,i=this.options,o=e.toLowerCase(),a=i.lookupFilter,n=parseInt(i.lookupLimit,10);return s={suggestions:t.grep(i.lookup,function(t){return a(t,e,o)})},n&&s.suggestions.length>n&&(s.suggestions=s.suggestions.slice(0,n)),s},getSuggestions:function(e){var s,i,o,a,n=this,l=n.options,r=l.serviceUrl;l.params[l.paramName]=e,i=l.ignoreParams?null:l.params,n.preloader("show","form","dgwt-wcas-inner-preloader"),!1!==l.onSearchStart.call(n.element,l.params)&&(t.isFunction(l.lookup)?l.lookup(e,function(t){n.suggestions=t.suggestions,n.suggest(),n.getDetails(t.suggestions[0]),l.onSearchComplete.call(n.element,e,t.suggestions)}):(n.isLocal?s=n.getSuggestionsLocal(e):(t.isFunction(r)&&(r=r.call(n.element,e)),o=r+"?"+t.param(i||{}),s=n.cachedResponse[o]),s&&t.isArray(s.suggestions)?(n.suggestions=s.suggestions,n.suggest(),n.getDetails(s.suggestions[0]),l.onSearchComplete.call(n.element,e,s.suggestions)):n.isBadQuery(e)?l.onSearchComplete.call(n.element,e,[]):(n.abortAjax(),a={url:r,data:i,type:l.type,dataType:l.dataType},t.extend(a,l.ajaxSettings),n.currentRequest=t.ajax(a).done(function(t){var s;n.currentRequest=null,void 0!==(s=l.transformResult(t,e)).suggestions&&(n.processResponse(s,e,o),n.getDetails(s.suggestions[0])),n.fixPositionCapture(),l.onSearchComplete.call(n.element,e,s.suggestions)}).fail(function(t,s,i){l.onSearchError.call(n.element,e,t,s,i)}))))},getDetails:function(e){var s=this,i=s.options;if(!s.canShowDetailsBox())return!1;if(null!=e&&("string"!=typeof e.more_products||"more_products"!==e.more_products)){var o,a,n=t("."+i.containerDetailsClass);s.fixHeight();var l={action:dgwt_wcas.action_result_details,post_id:null!=e.post_id?e.post_id:0,term_id:null!=e.term_id?e.term_id:0,taxonomy:null!=e.taxonomy?e.taxonomy:"",value:null!=e.value?e.value:""};if(o=l.action+l.post_id+l.term_id+l.taxonomy,null!=(a=s.cachedDetails[o]))n.html(a.details),s.fixHeight(),s.fixPositionCapture();else{if(n.html(""),s.preloader("show","details","",!0),-1!=t.inArray(o,s.detailsRequestsSent))return;s.detailsRequestsSent.push(o),t.ajax({data:l,type:"post",url:dgwt_wcas.ajax_details_endpoint,success:function(t){var e="string"==typeof t?jQuery.parseJSON(t):t;s.cachedDetails[o]=e,s.preloader("hide","details","",!0),null!=e.details?n.html(e.details):n.html(""),s.fixPositionCapture(),s.fixHeight()},error:function(t,e){s.preloader("hide","details","",!0),n.html(t),s.fixPositionCapture(),s.fixHeight()}})}}},isBadQuery:function(t){if(!this.options.preventBadQueries)return!1;for(var e=this.badQueries,s=e.length;s--;)if(0===t.indexOf(e[s]))return!0;return!1},hide:function(){var e=this.getSuggestionsContainer(),s=this.getDetailsContainer();t.isFunction(this.options.onHide)&&this.visible&&this.options.onHide.call(this.element,container),this.visible=!1,this.selectedIndex=-1,clearInterval(this.onChangeInterval),e.hide(),e.removeClass(this.classes.suggestionsContainerOrientTop),s.hide(),t("body").removeClass("dgwt-wcas-open"),t("body").removeClass("dgwt-wcas-block-scroll"),this.signalHint(null)},suggest:function(){if(this.suggestions.length){var e,s=this,i=s.options,o=i.groupBy,a=i.formatResult,n=s.getQuery(s.currentValue),l=s.classes.suggestion,r=s.classes.selected,c=s.getSuggestionsContainer(),d=s.getDetailsContainer(),u=t(s.noSuggestionsContainer),g=i.beforeRender,h="";i.triggerSelectOnValidInput&&s.isExactMatch(n)?s.select(0):(t.each(s.suggestions,function(t,s){var r="",c=!1;if(o&&(h+=function(t,s){var i=t.data[o];return e===i?"":'<div class="autocomplete-group"><strong>'+(e=i)+"</strong></div>"}(s,0)),void 0===s.post_id){var d=l,u="dgwt-wcas-st",g="",w="",p="";"product_cat"===s.taxonomy?(d+=" dgwt-wcas-suggestion-cat",g+='<span class="dgwt-wcas-st--tax">'+dgwt_wcas.t.category+"</span>",void 0!==s.breadcrumbs&&s.breadcrumbs&&(p=s.breadcrumbs+" &gt; "+s.value,w+='<span class="dgwt-wcas-st-breadcrumbs">'+dgwt_wcas.copy_in_category+" "+s.breadcrumbs+"</span>")):"product_tag"===s.taxonomy?(d+=" dgwt-wcas-suggestion-tag",g+='<span class="dgwt-wcas-st--tax">'+dgwt_wcas.t.tag+"</span>"):void 0!==s.type&&"more_products"===s.type?(d+=" js-dgwt-wcas-suggestion-more dgwt-wcas-suggestion-more",u="dgwt-wcas-st-more",s.value=dgwt_wcas.copy_show_more+" ("+s.total+")"):(d+=" dgwt-wcas-suggestion-nores",s.value=dgwt_wcas.copy_no_result),p=p.length>0?' title="'+p+'"':"",h+='<div class="'+d+'" data-index="'+t+'">',h+="<span"+p+' class="'+u+'">'+g+a(s.value,n)+w+"</span>",h+="</div>"}else!0===i.showImage&&void 0!==s.thumb_html&&(c=!0),r+=void 0!==s.post_id?'data-post-id="'+s.post_id+'" ':"",r+=void 0!==s.taxonomy?'data-taxonomy="'+s.taxonomy+'" ':"",r+=void 0!==s.term_id?'data-term-id="'+s.term_id+'" ':"",h+='<div class="'+l+' dgwt-wcas-suggestion-product" data-index="'+t+'" '+r+">",c&&(h+='<span class="dgwt-wcas-si">'+s.thumb_html+"</span>"),h+=c?'<div class="dgwt-wcas-content-wrapp">':"",h+='<span class="dgwt-wcas-st">',h+='<span class="dgwt-wcas-st-title">'+a(s.value,n)+"</span>",!0===i.showSKU&&void 0!==s.sku&&s.sku.length>0&&(h+='<span class="dgwt-wcas-sku">('+dgwt_wcas.t.sku_label+" "+a(s.sku,n)+")</span>"),!0===i.showDescription&&void 0!==s.desc&&s.desc&&(h+='<span class="dgwt-wcas-sd">'+a(s.desc,n)+"</span>"),h+="</span>",!0===i.showPrice&&void 0!==s.price&&(h+='<span class="dgwt-wcas-sp">'+s.price+"</span>"),!0===i.showFeaturedBadge&&!0===s.on_sale&&(h+='<span class="dgwt-wcas-badge dgwt-wcas-badge-os">'+i.saleBadgeText+"</span>"),!0===i.showFeaturedBadge&&!0===s.featured&&(h+='<span class="dgwt-wcas-badge dgwt-wcas-badge-f">'+i.featuredBadgeText+"</span>"),h+=c?"</div>":"",h+="</div>"}),this.adjustContainerWidth(),u.detach(),c.html(h),t.isFunction(g)&&g.call(s.element,c,s.suggestions),s.fixPositionCapture(),c.show(),t("body").addClass("dgwt-wcas-open"),!0===i.showDetailsPanel&&(d.show(),s.fixHeight()),i.autoSelectFirst&&(s.selectedIndex=0,c.scrollTop(0),c.children("."+l).first().addClass(r)),s.visible=!0,"top"===s.options.orientation&&(s.getSuggestionsContainer().addClass(s.classes.suggestionsContainerOrientTop),t("body").addClass("dgwt-wcas-block-scroll"),setTimeout(function(){s.scrollDownSuggestions()},300)),s.findBestHint())}else this.options.showNoSuggestionNotice?this.noSuggestions():this.hide()},noSuggestions:function(){var e=this.getSuggestionsContainer(),s=t(this.noSuggestionsContainer);s.detach(),e.empty(),e.append(s),this.fixPositionCapture(),e.show(),this.visible=!0},adjustContainerWidth:function(){var e,s=this.options,i=t("body"),o=this.getFormWrapper(),a=this.getSuggestionsContainer(),n=this.getDetailsContainer(),l=this.getFormOffset(),r=getComputedStyle(o[0]).width;if(r=Math.round(parseFloat(r.replace("px",""))),"auto"===s.width&&(e=this.el.outerWidth(),a.css("width",e+"px")),!0===s.showDetailsPanel){if(o.width()>=550)return i.addClass("dgwt-wcas-full-width"),r%2==0?(a.css("width",Math.round(r/2)),n.css("width",Math.round(r/2))):(a.css("width",Math.floor(r/2)),n.css("width",Math.ceil(r/2))),i.removeClass("dgwt-wcas-details-left"),i.removeClass("dgwt-wcas-details-right"),void(!0===s.isRtl?n.css("left","0"):a.css("left",r/2+l.left+"px"));i.addClass("dgwt-wcas-details-right")}},findBestHint:function(){var e=this.el.val().toLowerCase(),s=null;e&&(t.each(this.suggestions,function(t,i){var o=0===i.value.toLowerCase().indexOf(e);return o&&(s=i),!o}),this.signalHint(s))},signalHint:function(e){var s="";e&&(s=this.currentValue+e.value.substr(this.currentValue.length)),this.hintValue!==s&&(this.hintValue=s,this.hint=e,(this.options.onHint||t.noop)(s))},preloader:function(e,s,i,o){var a,n,l="dgwt-wcas-preloader-wrapp",r=null==i?l:l+" "+i;if("form"===s?n=this.getFormWrapper().find(".dgwt-wcas-preloader"):"details"===s&&(n=t(this.detailsContainer)),1==dgwt_wcas.show_preloader&&0!=n.length)if(!0===o)if("hide"!==e){if("show"===e){var c=this.options.isRtl?"-rtl":"";a='<div class="'+r+'"><img class="dgwt-wcas-placeholder-preloader" src="'+dgwt_wcas.img_url+"placeholder"+c+'.png" /></div>',n.html(a)}}else t(l).remove();else"hide"===e?n.removeClass(i):n.addClass(i)},verifySuggestionsFormat:function(e){return e.length&&"string"==typeof e[0]?t.map(e,function(t){return{value:t,data:null}}):e},validateOrientation:function(e,s){return e=t.trim(e||"").toLowerCase(),-1===t.inArray(e,["auto","bottom","top"])&&(e=s),e},processResponse:function(t,e,s){var i=this.options;t.suggestions=this.verifySuggestionsFormat(t.suggestions),i.noCache||(this.cachedResponse[s]=t,i.preventBadQueries&&!t.suggestions.length&&this.badQueries.push(e)),e===this.getQuery(this.currentValue)&&("top"===this.options.orientation&&t.suggestions.reverse(),this.suggestions=t.suggestions,this.suggest())},activate:function(e){var s,i=this.classes.selected,o=this.getSuggestionsContainer(),a=o.find("."+this.classes.suggestion);return o.find("."+i).removeClass(i),this.selectedIndex=e,-1!==this.selectedIndex&&a.length>this.selectedIndex?(s=a.get(this.selectedIndex),t(s).addClass(i),s):null},selectHint:function(){var e=t.inArray(this.hint,this.suggestions);this.select(e)},select:function(t){this.hide(),this.onSelect(t),this.disableKillerFn()},moveUp:function(){if(-1!==this.selectedIndex)return 0===this.selectedIndex?(this.getSuggestionsContainer().children().first().removeClass(this.classes.selected),this.selectedIndex=-1,this.el.val(this.currentValue),void this.findBestHint()):void this.adjustScroll(this.selectedIndex-1)},moveDown:function(){this.selectedIndex!==this.suggestions.length-1&&this.adjustScroll(this.selectedIndex+1)},adjustScroll:function(e){var s=this.activate(e);if(s&&!this.canShowDetailsBox()){var i,o,a,n=this.getSuggestionsContainer(),l=t(s).outerHeight();i=s.offsetTop,a=(o=n.scrollTop())+this.options.maxHeight-l,i<o?n.scrollTop(i):i>a&&n.scrollTop(i-this.options.maxHeight+l),this.options.preserveInput||this.el.val(this.getValue(this.suggestions[e].value)),this.signalHint(null)}},onSelect:function(e){var s=this.options.onSelect,i=this.suggestions[e];void 0===i.type||"more_products"!==i.type?(this.currentValue=this.getValue(i.value),this.currentValue===this.el.val()||this.options.preserveInput||this.el.val(this.currentValue),i.url.length>0&&(window.location.href=i.url),this.signalHint(null),this.suggestions=[],this.selection=i,t.isFunction(s)&&s.call(this.element,i)):this.el.closest("form").trigger("submit")},onMouseOver:function(e){var s=this.options.onMouseOver,i=this.suggestions[e];this.selectedIndex!==e&&this.getDetails(i),t.isFunction(s)&&s.call(this.element,i)},onMouseLeave:function(e){var s=this.options.onMouseLeave,i=this.suggestions[e];t.isFunction(s)&&s.call(this.element,i)},getValue:function(t){var e,s,i=this.options.delimiter;return i?1===(s=(e=this.currentValue).split(i)).length?t:e.substr(0,e.length-s[s.length-1].length)+t:t},dispose:function(){this.el.off(".autocomplete").removeData("autocomplete"),this.disableKillerFn(),t(window).off("resize.autocomplete",this.fixPositionCapture),t("."+this.options.containerClass).remove(),t("."+this.options.containerDetailsClass).remove()},enableOverlayMobile:function(){var e=this;if("on"!==e.overlayMobileState){e.overlayMobileState="on";var s,i=e.getFormWrapper(),o=e.getSuggestionsContainer();t("body").addClass("dgwt-wcas-overlay-mobile-on"),'<div class="js-dgwt-wcas-overlay-mobile dgwt-wcas-overlay-mobile">','<div class="dgwt-wcas-om-bar js-dgwt-wcas-om-bar">','<span class="dgwt-wcas-om-return js-dgwt-wcas-om-return">','<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 16 16" color="#FFF">','<path fill="#FFF" d="M14 6.125H3.351l4.891-4.891L7 0 0 7l7 7 1.234-1.234L3.35 7.875H14z" fill-rule="evenodd"></path>',"</svg>","</span>","</div>","</div>",t("body").append('<div class="js-dgwt-wcas-overlay-mobile dgwt-wcas-overlay-mobile"><div class="dgwt-wcas-om-bar js-dgwt-wcas-om-bar"><span class="dgwt-wcas-om-return js-dgwt-wcas-om-return"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 16 16" color="#FFF"><path fill="#FFF" d="M14 6.125H3.351l4.891-4.891L7 0 0 7l7 7 1.234-1.234L3.35 7.875H14z" fill-rule="evenodd"></path></svg></span></div></div>'),(s=t(".js-dgwt-wcas-overlay-mobile")).css("zIndex",999999),i.after('<span class="js-dgwt-wcas-om-hook"></span>'),i.appendTo(".js-dgwt-wcas-om-bar"),o.appendTo(".js-dgwt-wcas-om-bar"),i.addClass("dgwt-wcas-search-wrapp-mobile"),i.hasClass("dgwt-wcas-has-submit")&&(i.addClass("dgwt-wcas-has-submit-off"),i.removeClass("dgwt-wcas-has-submit")),i.find("."+e.options.searchInputClass).focus(),t(document).on("click",".js-dgwt-wcas-om-return",function(t){e.disableOverlayMobile(s)})}},disableOverlayMobile:function(e){var s=this,i=s.getSuggestionsContainer();s.killSuggestions(),s.disableKillerFn();var o=t(".js-dgwt-wcas-om-bar").find("."+s.options.searchFormClass);o.hasClass("dgwt-wcas-has-submit-off")&&(o.removeClass("dgwt-wcas-has-submit-off"),o.addClass("dgwt-wcas-has-submit")),o.removeClass("dgwt-wcas-search-wrapp-mobile"),t("body").removeClass("dgwt-wcas-overlay-mobile-on"),i.appendTo("body"),i.removeAttr("body-scroll-lock-ignore"),t(".js-dgwt-wcas-om-hook").after(o),t(".js-dgwt-wcas-overlay-mobile").remove(),t(".js-dgwt-wcas-om-hook").remove(),setTimeout(function(){o.find("."+s.options.searchInputClass).val("")},150),s.overlayMobileState="off"}},t.fn.dgwtWcasAutocomplete=function(e,s){return arguments.length?this.each(function(){var i=t(this),o=i.data("autocomplete");"string"==typeof e?o&&"function"==typeof o[e]&&o[e](s):(o&&o.dispose&&o.dispose(),o=new r(this,e),i.data("autocomplete",o))}):this.first().data("autocomplete")},t(window).on("load",function(){t(".dgwt-wcas-search-submit").length>0&&t(".dgwt-wcas-search-submit").each(function(){var e=t(this).closest(".dgwt-wcas-search-wrapp").find(".dgwt-wcas-preloader");1==dgwt_wcas.is_rtl?e.css("left",6+t(this).outerWidth()+"px"):e.css("right",t(this).outerWidth()+"px")})}),t(document).ready(function(){var e=1==dgwt_wcas.show_details_box;(jQuery(window).width()<992||"ontouchend"in document)&&(e=!1),t(".dgwt-wcas-search-input").dgwtWcasAutocomplete({minChars:dgwt_wcas.min_chars,width:dgwt_wcas.sug_width,autoSelectFirst:!1,triggerSelectOnValidInput:!1,serviceUrl:dgwt_wcas.ajax_search_endpoint,paramName:"s",showDetailsPanel:e,showImage:1==dgwt_wcas.show_images,showPrice:1==dgwt_wcas.show_price,showDescription:1==dgwt_wcas.show_desc,showSKU:1==dgwt_wcas.show_sku,showSaleBadge:1==dgwt_wcas.show_sale_badge,showFeaturedBadge:1==dgwt_wcas.show_featured_badge,saleBadgeText:dgwt_wcas.t.sale_badge,featuredBadgeText:dgwt_wcas.t.featured_badge,isRtl:1==dgwt_wcas.is_rtl,isPremium:1==dgwt_wcas.is_premium,overlayMobile:1==dgwt_wcas.overlay_mobile})}),t(window).on("load",function(){var e=t(".dgwt-wcas-search-wrapp[data-wcas-context]"),s=[];e.length>0&&e.each(function(){var e=t(this).attr("data-wcas-context");if(-1==t.inArray(e,s))s.push(e);else{var i=Math.random().toString(36).substring(2,6),o=t('.dgwt-wcas-suggestions-wrapp[data-wcas-context="'+e+'"]'),a=t('.dgwt-wcas-details-wrapp[data-wcas-context="'+e+'"]');t(this).attr("data-wcas-context",i),o.length>0&&t(o[o.length-1]).attr("data-wcas-context",i),a.length>0&&t(a[a.length-1]).attr("data-wcas-context",i)}})})});
composer/composer.json CHANGED
@@ -6,6 +6,9 @@
6
  "DgoraWcas\\": "../includes/"
7
  }
8
  },
 
 
 
9
  "config": {
10
  "vendor-dir": "../vendor"
11
  }
6
  "DgoraWcas\\": "../includes/"
7
  }
8
  },
9
+ "require": {
10
+ "mobiledetect/mobiledetectlib": "2.8.33"
11
+ },
12
  "config": {
13
  "vendor-dir": "../vendor"
14
  }
composer/composer.lock ADDED
@@ -0,0 +1,70 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "_readme": [
3
+ "This file locks the dependencies of your project to a known state",
4
+ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies",
5
+ "This file is @generated automatically"
6
+ ],
7
+ "content-hash": "125c13571ad7931ca3bc7be6a26aaf76",
8
+ "packages": [
9
+ {
10
+ "name": "mobiledetect/mobiledetectlib",
11
+ "version": "2.8.33",
12
+ "source": {
13
+ "type": "git",
14
+ "url": "https://github.com/serbanghita/Mobile-Detect.git",
15
+ "reference": "cd385290f9a0d609d2eddd165a1e44ec1bf12102"
16
+ },
17
+ "dist": {
18
+ "type": "zip",
19
+ "url": "https://api.github.com/repos/serbanghita/Mobile-Detect/zipball/cd385290f9a0d609d2eddd165a1e44ec1bf12102",
20
+ "reference": "cd385290f9a0d609d2eddd165a1e44ec1bf12102",
21
+ "shasum": ""
22
+ },
23
+ "require": {
24
+ "php": ">=5.0.0"
25
+ },
26
+ "require-dev": {
27
+ "phpunit/phpunit": "~4.8.35||~5.7"
28
+ },
29
+ "type": "library",
30
+ "autoload": {
31
+ "classmap": [
32
+ "Mobile_Detect.php"
33
+ ],
34
+ "psr-0": {
35
+ "Detection": "namespaced/"
36
+ }
37
+ },
38
+ "notification-url": "https://packagist.org/downloads/",
39
+ "license": [
40
+ "MIT"
41
+ ],
42
+ "authors": [
43
+ {
44
+ "name": "Serban Ghita",
45
+ "email": "serbanghita@gmail.com",
46
+ "homepage": "http://mobiledetect.net",
47
+ "role": "Developer"
48
+ }
49
+ ],
50
+ "description": "Mobile_Detect is a lightweight PHP class for detecting mobile devices. It uses the User-Agent string combined with specific HTTP headers to detect the mobile environment.",
51
+ "homepage": "https://github.com/serbanghita/Mobile-Detect",
52
+ "keywords": [
53
+ "detect mobile devices",
54
+ "mobile",
55
+ "mobile detect",
56
+ "mobile detector",
57
+ "php mobile detect"
58
+ ],
59
+ "time": "2018-09-01T15:05:15+00:00"
60
+ }
61
+ ],
62
+ "packages-dev": [],
63
+ "aliases": [],
64
+ "minimum-stability": "stable",
65
+ "stability-flags": [],
66
+ "prefer-stable": false,
67
+ "prefer-lowest": false,
68
+ "platform": [],
69
+ "platform-dev": []
70
+ }
includes/Admin/Install.php CHANGED
@@ -2,60 +2,83 @@
2
 
3
  namespace DgoraWcas\Admin;
4
 
5
- use DgoraWcas\Engines\TNTSearch\Indexer\Readable\Database as ReadableIndex ;
6
- use DgoraWcas\Engines\TNTSearch\Indexer\Taxonomy\Database as TaxonomyIndex ;
 
 
 
 
7
  // Exit if accessed directly
8
- if ( !defined( 'ABSPATH' ) ) {
9
  exit;
10
  }
 
11
  class Install
12
  {
 
13
  /**
14
  * Hook in tabs.
15
  */
16
  public static function maybe_install()
17
  {
18
- add_action( 'admin_init', array( __CLASS__, 'check_version' ), 5 );
 
19
  }
20
-
21
  /**
22
  * Install
23
  */
24
  public static function install()
25
  {
26
- if ( !defined( 'DGWT_WCAS_INSTALLING' ) ) {
27
- define( 'DGWT_WCAS_INSTALLING', true );
 
28
  }
 
29
  self::save_activation_date();
 
30
  self::create_options();
 
31
  self::backwardCompatibility();
 
32
  // Update plugin version
33
- update_option( 'dgwt_wcas_version', DGWT_WCAS_VERSION );
 
34
  }
35
-
36
  /**
37
  * Default options
38
  */
39
  private static function create_options()
40
  {
41
- global $dgwt_wcas_settings ;
 
 
42
  $sections = DGWT_WCAS()->settings->settings_fields();
 
43
  $settings = array();
44
- if ( is_array( $sections ) && !empty($sections) ) {
45
- foreach ( $sections as $options ) {
46
- if ( is_array( $options ) && !empty($options) ) {
47
- foreach ( $options as $option ) {
48
- if ( isset( $option['name'] ) && !isset( $dgwt_wcas_settings[$option['name']] ) ) {
49
- $settings[$option['name']] = ( isset( $option['default'] ) ? $option['default'] : '' );
 
 
 
 
 
50
  }
51
  }
52
  }
53
  }
54
  }
55
- $update_options = array_merge( $settings, $dgwt_wcas_settings );
56
- update_option( DGWT_WCAS_SETTINGS_KEY, $update_options );
 
 
57
  }
58
-
59
  /**
60
  * Save activation timestamp
61
  * Used to display notice, asking for a feedback
@@ -64,12 +87,15 @@ class Install
64
  */
65
  private static function save_activation_date()
66
  {
67
- $date = get_option( 'dgwt_wcas_activation_date' );
68
- if ( empty($date) ) {
69
- update_option( 'dgwt_wcas_activation_date', time() );
 
 
70
  }
 
71
  }
72
-
73
  /**
74
  * Set options for backward compatibility
75
  *
@@ -77,50 +103,56 @@ class Install
77
  */
78
  private static function backwardCompatibility()
79
  {
80
- $lastVersion = get_option( 'dgwt_wcas_version' );
 
 
81
  // New install? stop it
82
- if ( empty($lastVersion) ) {
83
  return;
84
  }
85
- $bcVersion = get_option( 'dgwt_wcas_backward_compatibility_version' );
86
- $backwardCompatibility = get_option( 'dgwt_wcas_backward_compatibility' );
87
- if ( DGWT_WCAS_VERSION === $bcVersion ) {
 
 
88
  return;
89
  }
 
90
  // If backward compatibility version is not set, last plugin version should be last stable version.
91
-
92
- if ( empty($bcVersion) ) {
93
  $lastStableVersion = $lastVersion;
94
  } else {
95
  $lastStableVersion = $bcVersion;
96
  }
97
-
98
  // Current version is larger that 1.1.7? Update options
99
-
100
- if ( version_compare( $lastStableVersion, '1.1.7', '<=' ) ) {
101
- if ( empty($bcVersion) ) {
102
- update_option( 'dgwt_wcas_backward_compatibility_version', '1.1.7' );
103
  }
104
- if ( empty($backwardCompatibility) ) {
105
- update_option( 'dgwt_wcas_backward_compatibility', 'on' );
 
106
  }
107
  }
108
-
109
  // For the next backward compatibility
110
- // if(
111
- // version_compare($lastStableVersion, 'x.x.x', '<=')
112
- // && version_compare($lastStableVersion, 'x.x.x', '>')
113
- // ) {
114
- // }
 
115
  }
116
-
117
  /**
118
  * Check version
119
  */
120
  public static function check_version()
121
  {
122
- if ( !defined( 'IFRAME_REQUEST' ) ) {
123
- if ( get_option( 'dgwt_wcas_version' ) != DGWT_WCAS_VERSION ) {
124
  self::install();
125
  }
126
  }
2
 
3
  namespace DgoraWcas\Admin;
4
 
5
+ use DgoraWcas\Engines\TNTSearch\Indexer\Readable\Database as ReadableIndex;
6
+ use DgoraWcas\Engines\TNTSearch\Indexer\Taxonomy\Database as TaxonomyIndex;
7
+ use DgoraWcas\Engines\TNTSearchMySQL\Indexer\Readable\Database as ReadableIndexMySql;
8
+ use DgoraWcas\Engines\TNTSearchMySQL\Indexer\Taxonomy\Database as TaxonomyIndexMySql;
9
+ use DgoraWcas\Engines\TNTSearchMySQL\Indexer\Searchable\Database as SearchableIndexMySql;
10
+
11
  // Exit if accessed directly
12
+ if ( ! defined('ABSPATH')) {
13
  exit;
14
  }
15
+
16
  class Install
17
  {
18
+
19
  /**
20
  * Hook in tabs.
21
  */
22
  public static function maybe_install()
23
  {
24
+
25
+ add_action('admin_init', array(__CLASS__, 'check_version'), 5);
26
  }
27
+
28
  /**
29
  * Install
30
  */
31
  public static function install()
32
  {
33
+
34
+ if ( ! defined('DGWT_WCAS_INSTALLING')) {
35
+ define('DGWT_WCAS_INSTALLING', true);
36
  }
37
+
38
  self::save_activation_date();
39
+
40
  self::create_options();
41
+
42
  self::backwardCompatibility();
43
+
44
  // Update plugin version
45
+ update_option('dgwt_wcas_version', DGWT_WCAS_VERSION);
46
+
47
  }
48
+
49
  /**
50
  * Default options
51
  */
52
  private static function create_options()
53
  {
54
+
55
+ global $dgwt_wcas_settings;
56
+
57
  $sections = DGWT_WCAS()->settings->settings_fields();
58
+
59
  $settings = array();
60
+
61
+ if (is_array($sections) && ! empty($sections)) {
62
+ foreach ($sections as $options) {
63
+
64
+ if (is_array($options) && ! empty($options)) {
65
+
66
+ foreach ($options as $option) {
67
+
68
+ if (isset($option['name']) && ! isset($dgwt_wcas_settings[$option['name']])) {
69
+
70
+ $settings[$option['name']] = isset($option['default']) ? $option['default'] : '';
71
  }
72
  }
73
  }
74
  }
75
  }
76
+
77
+ $update_options = array_merge($settings, $dgwt_wcas_settings);
78
+
79
+ update_option(DGWT_WCAS_SETTINGS_KEY, $update_options);
80
  }
81
+
82
  /**
83
  * Save activation timestamp
84
  * Used to display notice, asking for a feedback
87
  */
88
  private static function save_activation_date()
89
  {
90
+
91
+ $date = get_option('dgwt_wcas_activation_date');
92
+
93
+ if (empty($date)) {
94
+ update_option('dgwt_wcas_activation_date', time());
95
  }
96
+
97
  }
98
+
99
  /**
100
  * Set options for backward compatibility
101
  *
103
  */
104
  private static function backwardCompatibility()
105
  {
106
+
107
+ $lastVersion = get_option('dgwt_wcas_version');
108
+
109
  // New install? stop it
110
+ if (empty($lastVersion)) {
111
  return;
112
  }
113
+
114
+ $bcVersion = get_option('dgwt_wcas_backward_compatibility_version');
115
+ $backwardCompatibility = get_option('dgwt_wcas_backward_compatibility');
116
+
117
+ if (DGWT_WCAS_VERSION === $bcVersion) {
118
  return;
119
  }
120
+
121
  // If backward compatibility version is not set, last plugin version should be last stable version.
122
+ if (empty($bcVersion)) {
 
123
  $lastStableVersion = $lastVersion;
124
  } else {
125
  $lastStableVersion = $bcVersion;
126
  }
127
+
128
  // Current version is larger that 1.1.7? Update options
129
+ if (version_compare($lastStableVersion, '1.1.7', '<=')) {
130
+
131
+ if (empty($bcVersion)) {
132
+ update_option('dgwt_wcas_backward_compatibility_version', '1.1.7');
133
  }
134
+
135
+ if (empty($backwardCompatibility)) {
136
+ update_option('dgwt_wcas_backward_compatibility', 'on');
137
  }
138
  }
139
+
140
  // For the next backward compatibility
141
+ // if(
142
+ // version_compare($lastStableVersion, 'x.x.x', '<=')
143
+ // && version_compare($lastStableVersion, 'x.x.x', '>')
144
+ // ) {
145
+ // }
146
+
147
  }
148
+
149
  /**
150
  * Check version
151
  */
152
  public static function check_version()
153
  {
154
+ if ( ! defined('IFRAME_REQUEST')) {
155
+ if (get_option('dgwt_wcas_version') != DGWT_WCAS_VERSION) {
156
  self::install();
157
  }
158
  }
includes/Admin/Requirements.php CHANGED
@@ -3,6 +3,7 @@
3
  namespace DgoraWcas\Admin;
4
 
5
  use DgoraWcas\Engines\TNTSearch\Indexer\Buildier ;
 
6
  class Requirements
7
  {
8
  private $notices = array() ;
@@ -16,14 +17,14 @@ class Requirements
16
  *
17
  * @return void
18
  */
19
- private function checkRequirements()
20
  {
21
- $canInstall = false;
22
  $plugins = $this->getIncompatiblePlugins();
23
- if ( $this->checkPHPVersion() && $this->checkPHPExtensions() && $this->canCreateIndexFile() && empty($plugins) && $this->checkMultisite() ) {
24
- $canInstall = true;
25
  }
26
- return $canInstall;
27
  }
28
 
29
  /**
@@ -48,22 +49,29 @@ class Requirements
48
  private function checkPHPExtensions()
49
  {
50
  $hasExtensions = true;
 
51
 
52
  if ( !extension_loaded( 'mbstring' ) ) {
53
  $hasExtensions = false;
54
- $this->notices = sprintf( __( 'Required PHP extension: %s', 'ajax-search-for-woocommerce' ), 'mbstring' );
55
  }
56
 
57
 
58
- if ( !extension_loaded( 'sqlite3' ) ) {
59
  $hasExtensions = false;
60
- $this->notices = sprintf( __( 'Required PHP extension: %s', 'ajax-search-for-woocommerce' ), 'sqlite3' );
61
  }
62
 
63
 
64
- if ( !extension_loaded( 'pdo_sqlite' ) ) {
65
  $hasExtensions = false;
66
- $this->notices = sprintf( __( 'Required PHP extension: %s', 'ajax-search-for-woocommerce' ), 'pdo_sqlite' );
 
 
 
 
 
 
67
  }
68
 
69
  return $hasExtensions;
@@ -77,6 +85,9 @@ class Requirements
77
  */
78
  private function canCreateIndexFile()
79
  {
 
 
 
80
  $canCreateIndex = false;
81
  $upload_dir = wp_upload_dir();
82
 
@@ -115,24 +126,31 @@ class Requirements
115
  */
116
  private function getIncompatiblePlugins()
117
  {
118
- $plugins = array();
 
 
 
119
  // WPML
120
  if ( defined( 'ICL_SITEPRESS_VERSION' ) ) {
121
- $plugins[] = 'WPML';
122
  }
123
  // GTranslate
124
  if ( class_exists( 'GTranslate' ) ) {
125
- $plugins[] = 'GTranslate';
126
  }
127
  // Polylang
128
  if ( defined( 'POLYLANG_VERSION' ) ) {
129
- $plugins[] = 'Polylang';
130
  }
131
- if ( !empty($plugins) ) {
132
- foreach ( $plugins as $plugin ) {
133
  $this->notices[] = sprintf( __( 'You use the %s plugin. The Ajax Search for WooCommerce PRO does not support multilingual yet.', 'ajax-search-for-woocommerce' ), $plugin );
134
  }
135
  }
 
 
 
 
136
  return $plugins;
137
  }
138
 
3
  namespace DgoraWcas\Admin;
4
 
5
  use DgoraWcas\Engines\TNTSearch\Indexer\Buildier ;
6
+ use DgoraWcas\Engines\TNTSearchMySQL\Indexer\Buildier as BuildierMySQL ;
7
  class Requirements
8
  {
9
  private $notices = array() ;
17
  *
18
  * @return void
19
  */
20
+ public function checkRequirements()
21
  {
22
+ $allow = false;
23
  $plugins = $this->getIncompatiblePlugins();
24
+ if ( $this->checkPHPVersion() && $this->checkPHPExtensions() && $this->canCreateIndexFile() && empty($plugins['langs']) && empty($plugins['other']) && $this->checkMultisite() ) {
25
+ $allow = true;
26
  }
27
+ return $allow;
28
  }
29
 
30
  /**
49
  private function checkPHPExtensions()
50
  {
51
  $hasExtensions = true;
52
+ $dbProvider = DGWT_WCAS()->getDatabaseProvider();
53
 
54
  if ( !extension_loaded( 'mbstring' ) ) {
55
  $hasExtensions = false;
56
+ $this->notices[] = sprintf( __( 'Required PHP extension: %s', 'ajax-search-for-woocommerce' ), 'mbstring' );
57
  }
58
 
59
 
60
+ if ( $dbProvider === 'sqlite' && !extension_loaded( 'sqlite3' ) ) {
61
  $hasExtensions = false;
62
+ $this->notices[] = sprintf( __( 'Required PHP extension: %s', 'ajax-search-for-woocommerce' ), 'sqlite3' );
63
  }
64
 
65
 
66
+ if ( $dbProvider === 'sqlite' && !extension_loaded( 'pdo_sqlite' ) ) {
67
  $hasExtensions = false;
68
+ $this->notices[] = sprintf( __( 'Required PHP extension: %s', 'ajax-search-for-woocommerce' ), 'pdo_sqlite' );
69
+ }
70
+
71
+
72
+ if ( $dbProvider === 'mysql' && !extension_loaded( 'pdo_mysql' ) ) {
73
+ $hasExtensions = false;
74
+ $this->notices[] = sprintf( __( 'Required PHP extension: %s', 'ajax-search-for-woocommerce' ), 'pdo_mysql' );
75
  }
76
 
77
  return $hasExtensions;
85
  */
86
  private function canCreateIndexFile()
87
  {
88
+ if ( DGWT_WCAS()->getDatabaseProvider() !== 'sqlite' ) {
89
+ return true;
90
+ }
91
  $canCreateIndex = false;
92
  $upload_dir = wp_upload_dir();
93
 
126
  */
127
  private function getIncompatiblePlugins()
128
  {
129
+ $plugins = array(
130
+ 'langs' => array(),
131
+ 'other' => array(),
132
+ );
133
  // WPML
134
  if ( defined( 'ICL_SITEPRESS_VERSION' ) ) {
135
+ $plugins['langs'][] = 'WPML';
136
  }
137
  // GTranslate
138
  if ( class_exists( 'GTranslate' ) ) {
139
+ $plugins['langs'][] = 'GTranslate';
140
  }
141
  // Polylang
142
  if ( defined( 'POLYLANG_VERSION' ) ) {
143
+ $plugins['langs'][] = 'Polylang';
144
  }
145
+ if ( !empty($plugins['langs']) ) {
146
+ foreach ( $plugins['langs'] as $plugin ) {
147
  $this->notices[] = sprintf( __( 'You use the %s plugin. The Ajax Search for WooCommerce PRO does not support multilingual yet.', 'ajax-search-for-woocommerce' ), $plugin );
148
  }
149
  }
150
+ // WooCommerce Product Sort and Display
151
+ if ( defined( 'WC_PSAD_VERSION' ) ) {
152
+ $plugins['other'][] = 'WooCommerce Product Sort and Display';
153
+ }
154
  return $plugins;
155
  }
156
 
includes/Conflicts/Solver.php ADDED
@@ -0,0 +1,52 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ namespace DgoraWcas\Conflicts;
4
+
5
+ /**
6
+ * Class Solver
7
+ *
8
+ * Solves conflicts with other plugins
9
+ */
10
+ class Solver
11
+ {
12
+
13
+ public function __construct()
14
+ {
15
+ $this->solveSearchWPWooCommerceIntegration();
16
+
17
+ $this->solveDiviWithBuilderWC();
18
+ }
19
+
20
+ /**
21
+ * Solves conflict with SearchWP WooCommerce Integration by SearchWP, LLC
22
+ * Tested version: plugin SearchWP WooCommerce Integration by SearchWP v1.2.1
23
+ *
24
+ * Reason: Empty search page (no results). The plugin removes query_vars['s']
25
+ *
26
+ * @return void
27
+ */
28
+ public function solveSearchWPWooCommerceIntegration()
29
+ {
30
+ if (isset($_GET['dgwt_wcas'])) {
31
+ add_filter('searchwp_woocommerce_forced', '__return_false', PHP_INT_MAX);
32
+ add_filter('searchwp_short_circuit', '__return_true', PHP_INT_MAX);
33
+ }
34
+
35
+ }
36
+
37
+ /**
38
+ * Solves conflict with the DIVI builder
39
+ * Tested version: theme DIVI v3.19.18
40
+ *
41
+ * Reason: WP Query for search results was overwritten ih the hook pre_get_posts
42
+ */
43
+ public function solveDiviWithBuilderWC()
44
+ {
45
+ add_action('init', function () {
46
+ if (isset($_GET['dgwt_wcas'])) {
47
+ remove_action('pre_get_posts', 'et_builder_wc_pre_get_posts', 10);
48
+ }
49
+ });
50
+ }
51
+
52
+ }
includes/Personalization.php CHANGED
@@ -87,11 +87,13 @@ class Personalization {
87
  <?php echo!empty( $bg_submit_color ) ? 'border-right-color: ' . sanitize_text_field( $bg_submit_color ) . ';' : ''; ?>
88
  }
89
 
90
- .dgwt-wcas-search-wrapp .dgwt-wcas-sf-wrapp .dgwt-wcas-search-submit {
 
91
  <?php echo!empty( $bg_submit_color ) ? 'background-color: ' . sanitize_text_field( $bg_submit_color ) . ';' : ''; ?><?php echo!empty( $text_submit_color ) ? 'color: ' . sanitize_text_field( $text_submit_color ) . ';' : ''; ?>
92
  }
93
 
94
- .dgwt-wcas-search-wrapp .dgwt-wcas-ico-magnifier {
 
95
  <?php echo!empty( $text_submit_color ) ? 'fill: ' . sanitize_text_field( $text_submit_color ) . ';' : ''; ?>
96
  }
97
 
87
  <?php echo!empty( $bg_submit_color ) ? 'border-right-color: ' . sanitize_text_field( $bg_submit_color ) . ';' : ''; ?>
88
  }
89
 
90
+ .dgwt-wcas-search-wrapp .dgwt-wcas-sf-wrapp .dgwt-wcas-search-submit,
91
+ .dgwt-wcas-om-bar .dgwt-wcas-om-return {
92
  <?php echo!empty( $bg_submit_color ) ? 'background-color: ' . sanitize_text_field( $bg_submit_color ) . ';' : ''; ?><?php echo!empty( $text_submit_color ) ? 'color: ' . sanitize_text_field( $text_submit_color ) . ';' : ''; ?>
93
  }
94
 
95
+ .dgwt-wcas-search-wrapp .dgwt-wcas-ico-magnifier,
96
+ .dgwt-wcas-om-bar .dgwt-wcas-om-return svg path{
97
  <?php echo!empty( $text_submit_color ) ? 'fill: ' . sanitize_text_field( $text_submit_color ) . ';' : ''; ?>
98
  }
99
 
includes/Scripts.php CHANGED
@@ -57,6 +57,7 @@ class Scripts
57
  'copy_in_category' => _x( 'in', 'in categories fe. in Books > Crime stories', 'ajax-search-for-woocommerce' ),
58
  'img_url' => DGWT_WCAS_URL . 'assets/img/',
59
  'is_premium' => ( dgoraAsfwFs()->is_premium() ? true : false ),
 
60
  );
61
  // Min characters
62
  $min_chars = DGWT_WCAS()->settings->get_opt( 'min_chars' );
57
  'copy_in_category' => _x( 'in', 'in categories fe. in Books > Crime stories', 'ajax-search-for-woocommerce' ),
58
  'img_url' => DGWT_WCAS_URL . 'assets/img/',
59
  'is_premium' => ( dgoraAsfwFs()->is_premium() ? true : false ),
60
+ 'overlay_mobile' => ( DGWT_WCAS()->settings->get_opt( 'enable_mobile_overlay' ) === 'on' ? true : false ),
61
  );
62
  // Min characters
63
  $min_chars = DGWT_WCAS()->settings->get_opt( 'min_chars' );
includes/Settings.php CHANGED
@@ -6,6 +6,7 @@ use DgoraWcas\Admin\Promo\Upgrade;
6
  use DgoraWcas\Admin\SettingsAPI;
7
  use DgoraWcas\BackwardCompatibility;
8
  use DgoraWcas\Engines\TNTSearch\Indexer\Buildier;
 
9
 
10
  // Exit if accessed directly
11
  if ( ! defined( 'ABSPATH' ) ) {
@@ -254,6 +255,19 @@ class Settings {
254
  // 'type' => 'checkbox',
255
  // 'default' => 'off',
256
  // ),
 
 
 
 
 
 
 
 
 
 
 
 
 
257
  array(
258
  'name' => 'preloader',
259
  'label' => __( 'Preloader', 'ajax-search-for-woocommerce' ),
@@ -466,7 +480,7 @@ class Settings {
466
  'label' => __( 'Speed up search!', 'ajax-search-for-woocommerce' ),
467
  'type' => 'head',
468
  'class' => 'dgwt-wcas-sgs-header'
469
- )
470
  ) )
471
  );
472
 
@@ -495,6 +509,23 @@ class Settings {
495
  ),
496
  'default' => 'normal',
497
  );
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
498
  }else{
499
  $settings_fields['dgwt_wcas_performance'][6] = array(
500
  'name' => 'fuzziness_enabled_demo',
@@ -520,7 +551,7 @@ class Settings {
520
  'name' => 'search_engine_build',
521
  'label' => __( 'Index status', 'ajax-search-for-woocommerce' ),
522
  'type' => 'desc',
523
- 'desc' => Buildier::renderIndexingStatus(),
524
  'class' => 'dgwt-wcas-premium-only wcas-opt-tntsearch'
525
  );
526
  }else{
@@ -554,10 +585,10 @@ class Settings {
554
 
555
  /*
556
  * Option value
557
- *
558
  * @param string $option_key
559
  * @param string $default default value if option not exist
560
- *
561
  * @return string
562
  */
563
 
@@ -569,19 +600,26 @@ class Settings {
569
 
570
  $settings = get_option( $this->setting_slug );
571
 
572
- if ( is_array( $settings ) && array_key_exists( $option_key, $settings ) ) {
573
- $value = $settings[ $option_key ];
574
- } else {
575
-
576
- // Catch default
577
- foreach ( $this->settings_fields() as $section ) {
578
- foreach ( $section as $field ) {
579
- if ( $field['name'] === $option_key && isset( $field['default'] ) ) {
580
- $value = $field['default'];
581
- }
582
- }
583
- }
584
- }
 
 
 
 
 
 
 
585
  }
586
 
587
  if ( empty( $value ) && ! empty( $default ) ) {
6
  use DgoraWcas\Admin\SettingsAPI;
7
  use DgoraWcas\BackwardCompatibility;
8
  use DgoraWcas\Engines\TNTSearch\Indexer\Buildier;
9
+ use DgoraWcas\Engines\TNTSearchMySQL\Indexer\Buildier as BuildierMysSql;
10
 
11
  // Exit if accessed directly
12
  if ( ! defined( 'ABSPATH' ) ) {
255
  // 'type' => 'checkbox',
256
  // 'default' => 'off',
257
  // ),
258
+ array(
259
+ 'name' => 'mobile',
260
+ 'label' => __( 'Mobile', 'ajax-search-for-woocommerce' ),
261
+ 'type' => 'head',
262
+ 'class' => 'dgwt-wcas-sgs-header'
263
+ ),
264
+ array(
265
+ 'name' => 'enable_mobile_overlay',
266
+ 'label' => __( 'Overlay search (beta)', 'ajax-search-for-woocommerce' ),
267
+ 'desc' => __( 'Enhances user experience on mobile', 'ajax-search-for-woocommerce' ),
268
+ 'type' => 'checkbox',
269
+ 'default' => function_exists('storefront_product_search') ? 'on' : 'off',
270
+ ),
271
  array(
272
  'name' => 'preloader',
273
  'label' => __( 'Preloader', 'ajax-search-for-woocommerce' ),
480
  'label' => __( 'Speed up search!', 'ajax-search-for-woocommerce' ),
481
  'type' => 'head',
482
  'class' => 'dgwt-wcas-sgs-header'
483
+ ),
484
  ) )
485
  );
486
 
509
  ),
510
  'default' => 'normal',
511
  );
512
+
513
+ // @TODO Remove the SQLIte support in the future
514
+ $hideDBOptClass = !empty($_GET['dgwt_wcas_show_db']) ? '' : ' dgwt-wcas-hidden';
515
+
516
+ $settings_fields['dgwt_wcas_performance'][12] = array(
517
+ 'name' => 'search_engine_provider',
518
+ 'label' => __( 'Select the database', 'ajax-search-for-woocommerce' ),
519
+ 'class' => 'dgwt-wcas-premium-only' . $hideDBOptClass,
520
+ 'type' => 'select',
521
+ 'options' => array(
522
+ 'sqlite' => __( 'SQLite', 'ajax-search-for-woocommerce' ),
523
+ 'mysql' => __( 'MySQL', 'ajax-search-for-woocommerce' ),
524
+ ),
525
+ 'default' => 'mysql',
526
+ );
527
+
528
+
529
  }else{
530
  $settings_fields['dgwt_wcas_performance'][6] = array(
531
  'name' => 'fuzziness_enabled_demo',
551
  'name' => 'search_engine_build',
552
  'label' => __( 'Index status', 'ajax-search-for-woocommerce' ),
553
  'type' => 'desc',
554
+ 'desc' => DGWT_WCAS()->getDatabaseProvider() === 'sqlite' ? Buildier::renderIndexingStatus() : BuildierMysSql::renderIndexingStatus(),
555
  'class' => 'dgwt-wcas-premium-only wcas-opt-tntsearch'
556
  );
557
  }else{
585
 
586
  /*
587
  * Option value
588
+ *
589
  * @param string $option_key
590
  * @param string $default default value if option not exist
591
+ *
592
  * @return string
593
  */
594
 
600
 
601
  $settings = get_option( $this->setting_slug );
602
 
603
+ if ( !empty($settings) && is_array( $settings ) ) {
604
+
605
+ if(array_key_exists( $option_key, $settings )){
606
+ $value = $settings[ $option_key ];
607
+ }else{
608
+
609
+ // Catch default
610
+ if(empty( $default )) {
611
+ foreach ($this->settings_fields() as $section) {
612
+ foreach ($section as $field) {
613
+ if ($field['name'] === $option_key && isset($field['default'])) {
614
+ $value = $field['default'];
615
+ }
616
+ }
617
+ }
618
+ }
619
+
620
+ }
621
+ }
622
+
623
  }
624
 
625
  if ( empty( $value ) && ! empty( $default ) ) {
includes/Setup.php CHANGED
@@ -3,14 +3,17 @@
3
  namespace DgoraWcas;
4
 
5
  // Exit if accessed directly
6
- if ( ! defined( 'ABSPATH' ) ) {
7
  exit;
8
  }
9
 
10
- class Setup {
 
11
 
12
- public function init(){
13
- add_action( 'init', array( $this, 'setImageSize' ) );
 
 
14
  }
15
 
16
  /**
@@ -19,6 +22,20 @@ class Setup {
19
  */
20
  public function setImageSize()
21
  {
22
- add_image_size( 'dgwt-wcas-product-suggestion', 64, 0, false );
 
 
 
 
 
 
 
 
 
 
 
 
 
 
23
  }
24
  }
3
  namespace DgoraWcas;
4
 
5
  // Exit if accessed directly
6
+ if ( ! defined('ABSPATH')) {
7
  exit;
8
  }
9
 
10
+ class Setup
11
+ {
12
 
13
+ public function init()
14
+ {
15
+ add_action('init', array($this, 'setImageSize'));
16
+ add_filter('body_class', array($this, 'addMobileDeviceInfo'));
17
  }
18
 
19
  /**
22
  */
23
  public function setImageSize()
24
  {
25
+ add_image_size('dgwt-wcas-product-suggestion', 64, 0, false);
26
+ }
27
+
28
+ public function addMobileDeviceInfo($classes)
29
+ {
30
+
31
+ if (DGWT_WCAS()->mobileDetect->isMobile()) {
32
+ $classes[] = 'dgwt-wcas-is-mobile';
33
+ }
34
+ if (DGWT_WCAS()->mobileDetect->isiOS()) {
35
+ $classes[] = 'dgwt-wcas-is-ios';
36
+ }
37
+
38
+ return $classes;
39
+
40
  }
41
  }
languages/ajax-search-for-woocommerce-es_ES.mo ADDED
Binary file
languages/ajax-search-for-woocommerce-es_ES.po ADDED
@@ -0,0 +1,1288 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ msgid ""
2
+ msgstr ""
3
+ "Project-Id-Version: \n"
4
+ "Report-Msgid-Bugs-To: \n"
5
+ "POT-Creation-Date: 2019-05-03 21:18+0000\n"
6
+ "PO-Revision-Date: 2019-05-03 21:21+0000\n"
7
+ "Language-Team: Spanish (Spain)\n"
8
+ "Plural-Forms: nplurals=2; plural=(n != 1);\n"
9
+ "MIME-Version: 1.0\n"
10
+ "Content-Type: text/plain; charset=UTF-8\n"
11
+ "Content-Transfer-Encoding: 8bit\n"
12
+ "X-Generator: Loco https://localise.biz/\n"
13
+ "Last-Translator: dev_nIXCkVKHG <admin@webtroter.pl>\n"
14
+ "Language: es_ES\n"
15
+ "X-Loco-Version: 2.2.2; wp-5.1.1"
16
+
17
+ #: ajax-search-for-woocommerce.php:198
18
+ msgid ""
19
+ "<b>AJAX Search for WooCommerce</b>: You need PHP version at least 5.3 to run "
20
+ "this plugin. You are currently using PHP version "
21
+ msgstr ""
22
+
23
+ #: ajax-search-for-woocommerce.php:221
24
+ msgid ""
25
+ "<b>AJAX Search for WooCommerce</b>: You need PHP version at least 5.5 to run "
26
+ "this plugin. You are currently using PHP version "
27
+ msgstr ""
28
+
29
+ #: ajax-search-for-woocommerce.php:250
30
+ #, php-format
31
+ msgid ""
32
+ "<b>AJAX Search for WooCommerce</b>:<br /> Your PHP version <b><i>%s</i></b> "
33
+ "will not longer supported in the next plugin releases."
34
+ msgstr ""
35
+
36
+ #: ajax-search-for-woocommerce.php:252
37
+ msgid ""
38
+ " You have to update your PHP version to least 5.5 (recommended 7.2 or "
39
+ "greater)."
40
+ msgstr ""
41
+
42
+ #: ajax-search-for-woocommerce.php:255
43
+ msgid ""
44
+ "If you cannot upgrade your PHP version yourself, you can send an email to "
45
+ "your host."
46
+ msgstr ""
47
+
48
+ #: ajax-search-for-woocommerce.php:258
49
+ msgid ""
50
+ "If you do not upgrade the php version, the next plugin release will not work!"
51
+ msgstr ""
52
+
53
+ #: ajax-search-for-woocommerce.php:263
54
+ msgid "Remind me again in week."
55
+ msgstr ""
56
+
57
+ #: ajax-search-for-woocommerce.php:285
58
+ #, php-format
59
+ msgid ""
60
+ "<b>AJAX Search for WooCommerce</b> is enabled but not effective. It requires "
61
+ "%s in order to work."
62
+ msgstr ""
63
+
64
+ #: widget.php:25
65
+ msgid "AJAX (live) search form for WooCommerce"
66
+ msgstr ""
67
+
68
+ #: widget.php:27
69
+ msgid "Woo AJAX Search"
70
+ msgstr ""
71
+
72
+ #: widget.php:32
73
+ msgid "Title"
74
+ msgstr "Título"
75
+
76
+ #: partials/search-form.php:19 backward-compatibility/1-1-7/search-form.php:67
77
+ msgid "Products search"
78
+ msgstr "Buscador de productos"
79
+
80
+ #: partials/search-form.php:26 includes/Settings.php:188
81
+ #: backward-compatibility/1-1-7/search-form.php:74
82
+ msgid "Search for products..."
83
+ msgstr "Buscar Productos..."
84
+
85
+ #: includes/Settings.php:86
86
+ msgid "Basic"
87
+ msgstr "Básico"
88
+
89
+ #: includes/Settings.php:90
90
+ msgid "Form"
91
+ msgstr ""
92
+
93
+ #: includes/Settings.php:94
94
+ msgid "Colors"
95
+ msgstr ""
96
+
97
+ #: includes/Settings.php:98
98
+ msgid "Scope"
99
+ msgstr ""
100
+
101
+ #: includes/Settings.php:105 includes/Helpers.php:441 includes/Helpers.php:444
102
+ msgid "Pro"
103
+ msgstr ""
104
+
105
+ #: includes/Settings.php:111
106
+ msgid "Increase sales"
107
+ msgstr ""
108
+
109
+ #: includes/Settings.php:113
110
+ msgid "by simple tricks"
111
+ msgstr ""
112
+
113
+ #: includes/Settings.php:136
114
+ msgid "How to use?"
115
+ msgstr "Cómo usar?"
116
+
117
+ #: includes/Settings.php:142
118
+ msgid "Suggestions limit"
119
+ msgstr "Límite de sugerencias"
120
+
121
+ #: includes/Settings.php:145
122
+ msgid "Maximum number of suggestions rows."
123
+ msgstr "Número máximo de sugerencias."
124
+
125
+ #: includes/Settings.php:150
126
+ msgid "Minimum characters"
127
+ msgstr "Caracteres mínimos"
128
+
129
+ #: includes/Settings.php:153
130
+ msgid "Minimum number of characters required to trigger autosuggest."
131
+ msgstr ""
132
+ "Número mínimo de caracteres necesarios para activar la sugerencia automática."
133
+
134
+ #: includes/Settings.php:158
135
+ msgid "Max form width"
136
+ msgstr ""
137
+
138
+ #: includes/Settings.php:161
139
+ msgid "To set 100% width leave blank"
140
+ msgstr ""
141
+
142
+ #: includes/Settings.php:166
143
+ msgid "Show submit button"
144
+ msgstr "Mostrar botón Enviar"
145
+
146
+ #: includes/Settings.php:173
147
+ msgid "Custom labels"
148
+ msgstr ""
149
+
150
+ #: includes/Settings.php:179
151
+ msgid "Search submit button text"
152
+ msgstr "Texto del Botón Enviar"
153
+
154
+ #: includes/Settings.php:181
155
+ msgid "To display the magnifier icon leave this field empty."
156
+ msgstr ""
157
+
158
+ #: includes/Settings.php:182
159
+ msgid "Search"
160
+ msgstr "Buscar"
161
+
162
+ #: includes/Settings.php:186
163
+ msgid "Search input placeholder"
164
+ msgstr "Marcador del buscador"
165
+
166
+ #: includes/Settings.php:192
167
+ msgid "More results"
168
+ msgstr ""
169
+
170
+ #: includes/Settings.php:194 includes/Scripts.php:41
171
+ msgid "See all results..."
172
+ msgstr ""
173
+
174
+ #: includes/Settings.php:198
175
+ msgctxt "admin"
176
+ msgid "No results"
177
+ msgstr ""
178
+
179
+ #: includes/Settings.php:200 includes/Scripts.php:42
180
+ msgid "No results"
181
+ msgstr "No hay resultados"
182
+
183
+ #: includes/Settings.php:206
184
+ msgid "Suggestions output"
185
+ msgstr "Salida de sugerencias"
186
+
187
+ #: includes/Settings.php:212
188
+ msgid "Show product image"
189
+ msgstr "Mostrar imagen del producto"
190
+
191
+ #: includes/Settings.php:218
192
+ msgid "Show price"
193
+ msgstr "Mostrar Precio"
194
+
195
+ #: includes/Settings.php:224
196
+ msgid "Show product description"
197
+ msgstr "Mostrar descripción del producto"
198
+
199
+ #: includes/Settings.php:230
200
+ msgid "Show SKU"
201
+ msgstr "Mostrar SKU"
202
+
203
+ #: includes/Settings.php:236
204
+ msgid "Also show matching categories"
205
+ msgstr ""
206
+
207
+ #: includes/Settings.php:242
208
+ msgid "Also show matching tags"
209
+ msgstr ""
210
+
211
+ #: includes/Settings.php:260
212
+ msgid "Mobile"
213
+ msgstr ""
214
+
215
+ #: includes/Settings.php:266
216
+ msgid "Overlay search (beta)"
217
+ msgstr ""
218
+
219
+ #: includes/Settings.php:267
220
+ msgid "Enhances user experience on mobile"
221
+ msgstr ""
222
+
223
+ #: includes/Settings.php:273
224
+ msgid "Preloader"
225
+ msgstr "Precargador"
226
+
227
+ #: includes/Settings.php:279
228
+ msgid "Show preloader"
229
+ msgstr "Mostrar precargador"
230
+
231
+ #: includes/Settings.php:285
232
+ msgid "Upload preloader image"
233
+ msgstr "Subir imagen del precargador"
234
+
235
+ #: includes/Settings.php:291
236
+ msgid "Details box"
237
+ msgstr ""
238
+
239
+ #: includes/Settings.php:297
240
+ msgid "Show details box"
241
+ msgstr "Mostrar el cuadro de detalles"
242
+
243
+ #: includes/Settings.php:301
244
+ #, php-format
245
+ msgid ""
246
+ "The Details box is an additional container for extended information. The "
247
+ "details are changed dynamically when you hover the mouse over one of the "
248
+ "suggestions. <a href=\"%s\" target=\"_blank\">See where the details box will "
249
+ "appear.</a>"
250
+ msgstr ""
251
+
252
+ #: includes/Settings.php:306
253
+ msgid "Products list"
254
+ msgstr ""
255
+
256
+ #: includes/Settings.php:308 includes/Settings.php:322
257
+ #: includes/Settings.php:336
258
+ msgid "Applies only to category or tags suggestions type"
259
+ msgstr ""
260
+
261
+ #: includes/Settings.php:310
262
+ msgid "All Product"
263
+ msgstr "Todos los Productos"
264
+
265
+ #: includes/Settings.php:311
266
+ msgid "Featured Products"
267
+ msgstr "Productos Destacados"
268
+
269
+ #: includes/Settings.php:312
270
+ msgid "On-sale Products"
271
+ msgstr "Productos en oferta"
272
+
273
+ #: includes/Settings.php:319
274
+ msgid "Order by"
275
+ msgstr "Ordenar por"
276
+
277
+ #: includes/Settings.php:324
278
+ msgid "Date"
279
+ msgstr "Fecha"
280
+
281
+ #: includes/Settings.php:325
282
+ msgid "Price"
283
+ msgstr "Precio"
284
+
285
+ #: includes/Settings.php:326
286
+ msgid "Random"
287
+ msgstr "Aleatorio"
288
+
289
+ #: includes/Settings.php:327
290
+ msgid "Sales"
291
+ msgstr "Ventas"
292
+
293
+ #: includes/Settings.php:333
294
+ msgid "Order"
295
+ msgstr ""
296
+
297
+ #: includes/Settings.php:338
298
+ msgid "DESC"
299
+ msgstr "DESC"
300
+
301
+ #: includes/Settings.php:339
302
+ msgid "ASC"
303
+ msgstr "ASC"
304
+
305
+ #: includes/Settings.php:347
306
+ msgid "Search form"
307
+ msgstr "Formulario de búsqueda"
308
+
309
+ #: includes/Settings.php:353
310
+ msgid "Search input background"
311
+ msgstr "Color del fondo"
312
+
313
+ #: includes/Settings.php:359
314
+ msgid "Search input text"
315
+ msgstr "Color del texto"
316
+
317
+ #: includes/Settings.php:365
318
+ msgid "Search input border"
319
+ msgstr "Color del borde"
320
+
321
+ #: includes/Settings.php:371
322
+ msgid "Search submit background"
323
+ msgstr "Color del fondo del botón Enviar"
324
+
325
+ #: includes/Settings.php:377
326
+ msgid "Search submit text"
327
+ msgstr "Color del texto del botón Enviar"
328
+
329
+ #: includes/Settings.php:383
330
+ msgid "Suggestions"
331
+ msgstr "Sugerencias"
332
+
333
+ #: includes/Settings.php:389
334
+ msgid "Suggestion background"
335
+ msgstr "Color del fondo"
336
+
337
+ #: includes/Settings.php:395
338
+ msgid "Suggestion selected"
339
+ msgstr "Color de la selección"
340
+
341
+ #: includes/Settings.php:401
342
+ msgid "Text color"
343
+ msgstr "Color del texto"
344
+
345
+ #: includes/Settings.php:407
346
+ msgid "Highlight color"
347
+ msgstr "Color de destacado"
348
+
349
+ #: includes/Settings.php:413
350
+ msgid "Border color"
351
+ msgstr "Color del borde"
352
+
353
+ #: includes/Settings.php:421
354
+ msgid "Search scope"
355
+ msgstr ""
356
+
357
+ #: includes/Settings.php:427
358
+ msgid "Info"
359
+ msgstr ""
360
+
361
+ #: includes/Settings.php:429
362
+ msgid ""
363
+ "Searching in products names is always enabled. You can extend or narrow the "
364
+ "searching scope using the following options."
365
+ msgstr ""
366
+
367
+ #: includes/Settings.php:434
368
+ msgid "Search in description"
369
+ msgstr ""
370
+
371
+ #: includes/Settings.php:440
372
+ msgid "Search in short description"
373
+ msgstr ""
374
+
375
+ #: includes/Settings.php:446
376
+ msgid "Search in SKU"
377
+ msgstr ""
378
+
379
+ #: includes/Settings.php:448
380
+ msgid "Searching also in variable products SKU"
381
+ msgstr ""
382
+
383
+ #: includes/Settings.php:448
384
+ #, php-format
385
+ msgid ""
386
+ "Searching in variable products SKU is available only in <a href=\"%s\">the "
387
+ "pro version</a>. It will also be available in the free version soon."
388
+ msgstr ""
389
+
390
+ #: includes/Settings.php:453
391
+ msgid "Search in attributes"
392
+ msgstr ""
393
+
394
+ #: includes/Settings.php:460
395
+ msgid "Exclude 'out of stock' products"
396
+ msgstr "Mostrar productos fuera de stock"
397
+
398
+ #: includes/Settings.php:468
399
+ msgid "Pro features"
400
+ msgstr ""
401
+
402
+ #: includes/Settings.php:474
403
+ msgid "Fuzziness"
404
+ msgstr ""
405
+
406
+ #: includes/Settings.php:480
407
+ msgid "Speed up search!"
408
+ msgstr ""
409
+
410
+ #: includes/Settings.php:487
411
+ msgid ""
412
+ "<strong>Increases sales conversions.</strong> Returns sugestions based on "
413
+ "likely relevance even though a search keyword may not exactly match. E.g if "
414
+ "you type \"ipho<b>m</b>e\" you get the same results as for \"iphone\""
415
+ msgstr ""
416
+
417
+ #: includes/Settings.php:493
418
+ msgid "Profits"
419
+ msgstr ""
420
+
421
+ #: includes/Settings.php:500 includes/Settings.php:532
422
+ msgid "Fuzzy matching"
423
+ msgstr ""
424
+
425
+ #: includes/Settings.php:505 includes/Settings.php:537
426
+ msgid "-- Disabled"
427
+ msgstr ""
428
+
429
+ #: includes/Settings.php:506 includes/Settings.php:538
430
+ msgid "Soft"
431
+ msgstr ""
432
+
433
+ #: includes/Settings.php:507 includes/Settings.php:539
434
+ msgid "Normal"
435
+ msgstr ""
436
+
437
+ #: includes/Settings.php:508 includes/Settings.php:540
438
+ msgid "Hard"
439
+ msgstr ""
440
+
441
+ #: includes/Settings.php:518
442
+ msgid "Select the database"
443
+ msgstr ""
444
+
445
+ #: includes/Settings.php:522
446
+ msgid "SQLite"
447
+ msgstr ""
448
+
449
+ #: includes/Settings.php:523
450
+ msgid "MySQL"
451
+ msgstr ""
452
+
453
+ #: includes/Settings.php:552 includes/Settings.php:560
454
+ msgid "Index status"
455
+ msgstr ""
456
+
457
+ #: includes/BackwardCompatibility.php:338 partials/admin/indexer-header.php:21
458
+ msgid "Troubleshooting"
459
+ msgstr ""
460
+
461
+ #: includes/BackwardCompatibility.php:339
462
+ msgid "troubleshooting"
463
+ msgstr ""
464
+
465
+ #: includes/BackwardCompatibility.php:348
466
+ msgid "<span style=\"color:#9b5c8f\">Complete the update process</span>"
467
+ msgstr ""
468
+
469
+ #: includes/BackwardCompatibility.php:348
470
+ msgid ""
471
+ "In the last update we have changed the AJAX search form on the frontend (CSS "
472
+ "styles, names of the HTML classes etc.). You have to check if the AJAX "
473
+ "search form looks correct with your theme after these changes."
474
+ msgstr ""
475
+
476
+ #: includes/BackwardCompatibility.php:356
477
+ msgid "What should you do now?"
478
+ msgstr ""
479
+
480
+ #: includes/BackwardCompatibility.php:359
481
+ msgid ""
482
+ "Switch manually to the latest version to check if the AJAX search form "
483
+ "displays correctly with your theme"
484
+ msgstr ""
485
+
486
+ #: includes/BackwardCompatibility.php:364
487
+ msgid "You have activated the latest version. Follow the steps below:"
488
+ msgstr ""
489
+
490
+ #: includes/BackwardCompatibility.php:367
491
+ #, php-format
492
+ msgid "Visit your <a target=\"_blank\" href=\"%s\">store</a>"
493
+ msgstr ""
494
+
495
+ #: includes/BackwardCompatibility.php:368
496
+ msgid "Check if the AJAX search form displays correctly"
497
+ msgstr ""
498
+
499
+ #: includes/BackwardCompatibility.php:369
500
+ #, php-format
501
+ msgid "If it is ok, click %s"
502
+ msgstr ""
503
+
504
+ #: includes/BackwardCompatibility.php:369
505
+ msgid "finish the update"
506
+ msgstr ""
507
+
508
+ #: includes/BackwardCompatibility.php:370
509
+ #, php-format
510
+ msgid "If not, switch back to <code>previous version %s</code> and see %s"
511
+ msgstr ""
512
+
513
+ #: includes/BackwardCompatibility.php:377
514
+ msgid "Version switcher"
515
+ msgstr ""
516
+
517
+ #: includes/BackwardCompatibility.php:378
518
+ msgid "Something went wrong. Refresh the page and try again."
519
+ msgstr ""
520
+
521
+ #: includes/BackwardCompatibility.php:379
522
+ msgid "Saved!"
523
+ msgstr ""
524
+
525
+ #: includes/BackwardCompatibility.php:381
526
+ msgid "previous version"
527
+ msgstr ""
528
+
529
+ #: includes/BackwardCompatibility.php:388
530
+ msgid "latest version"
531
+ msgstr ""
532
+
533
+ #: includes/BackwardCompatibility.php:395
534
+ #, php-format
535
+ msgid ""
536
+ "If the AJAX search form displays incorrectly after switching to the latest "
537
+ "version, see the %s"
538
+ msgstr ""
539
+
540
+ #: includes/BackwardCompatibility.php:402
541
+ msgid ""
542
+ "Your AJAX search form does not display correctly after manual switching to "
543
+ "the latest version."
544
+ msgstr ""
545
+
546
+ #: includes/BackwardCompatibility.php:406
547
+ msgid ""
548
+ "Probably your theme uses additional CSS styles to customize the appearance "
549
+ "of the AJAX search form. Contact the authors of your theme. Maybe they have "
550
+ "to update their CSS styles if necessary."
551
+ msgstr ""
552
+
553
+ #: includes/BackwardCompatibility.php:412
554
+ msgid "Your Theme Details"
555
+ msgstr ""
556
+
557
+ #: includes/BackwardCompatibility.php:417
558
+ msgctxt "Wordpress theme name"
559
+ msgid "Name:"
560
+ msgstr ""
561
+
562
+ #: includes/BackwardCompatibility.php:432
563
+ msgid "Author:"
564
+ msgstr ""
565
+
566
+ #: includes/BackwardCompatibility.php:449
567
+ msgid "A sample e-mail message that you can send them:"
568
+ msgstr ""
569
+
570
+ #: includes/BackwardCompatibility.php:454
571
+ #, php-format
572
+ msgid ""
573
+ "Hello,\n"
574
+ " <br /><br />\n"
575
+ " I use your %s theme with AJAX Search for WooCommerce "
576
+ "plugin - (https://wordpress.org/plugins/ajax-search-for-woocommerce/)\n"
577
+ " <br /><br />\n"
578
+ " In the lates version of AJAX Search for WooCommerce %s "
579
+ "they have changed the search form on the frontend (CSS, HTML etc.).\n"
580
+ " <br /><br />\n"
581
+ " Could you check it and update your CSS if necessary?"
582
+ msgstr ""
583
+
584
+ #: includes/BackwardCompatibility.php:470
585
+ msgid ""
586
+ "If you have any questions, do not hesitate contact <a href=\"mailto:"
587
+ "dgoraplugins@gmail.com?subject=Ajax Search for WooCommerce - Update "
588
+ "problem\">our support </a> or <a href=\"https://wordpress."
589
+ "org/support/plugin/ajax-search-for-woocommerce\" target=\"_blank\">write on "
590
+ "the WordPress.org Support</a>."
591
+ msgstr ""
592
+
593
+ #: includes/BackwardCompatibility.php:477
594
+ msgid "Remind me later"
595
+ msgstr ""
596
+
597
+ #: includes/Scripts.php:34
598
+ msgctxt "For product badge: on sale"
599
+ msgid "sale"
600
+ msgstr "oferta"
601
+
602
+ #: includes/Scripts.php:35
603
+ msgctxt "For product badge: featured"
604
+ msgid "featured"
605
+ msgstr "destacado"
606
+
607
+ #: includes/Scripts.php:36 includes/Engines/WordPressNative/DetailsBox.php:168
608
+ msgid "Category"
609
+ msgstr "Categoría"
610
+
611
+ #: includes/Scripts.php:37
612
+ msgid "tag"
613
+ msgstr ""
614
+
615
+ #: includes/Scripts.php:38
616
+ msgid "SKU:"
617
+ msgstr ""
618
+
619
+ #: includes/Scripts.php:64
620
+ msgctxt "in categories fe. in Books > Crime stories"
621
+ msgid "in"
622
+ msgstr ""
623
+
624
+ #: partials/admin/indexer-header.php:8
625
+ #, php-format
626
+ msgid "Indexed <strong>100&#37;</strong>, <strong>%d products</strong>."
627
+ msgstr ""
628
+
629
+ #: partials/admin/indexer-header.php:12
630
+ #, php-format
631
+ msgid "Last build %s"
632
+ msgstr ""
633
+
634
+ #: partials/admin/indexer-header.php:13
635
+ msgid "All products changes will be <strong>re-indexed automatically</strong>"
636
+ msgstr ""
637
+
638
+ #: partials/admin/indexer-header.php:24
639
+ #, php-format
640
+ msgid "First try to <a class=\"%s\" href=\"#\">build the index again</a>"
641
+ msgstr ""
642
+
643
+ #: partials/admin/indexer-header.php:25
644
+ #, php-format
645
+ msgid ""
646
+ "Go to <a target=\"_blank\" href=\"%s\">WooCommerce -> Status -> section "
647
+ "\"AJAX Search for WooCommerce Pro\"</a>. Is everything green?"
648
+ msgstr ""
649
+
650
+ #: partials/admin/indexer-header.php:26
651
+ #, php-format
652
+ msgid ""
653
+ "Go to <a target=\"_blank\" href=\"%s\">WooCommerce -> Status -> Logs (tab)"
654
+ "</a>. Open last \"fatal-errors...\". Look for a phrase \"ajax-search-for-"
655
+ "woocommerce\". Did you find anything significant?"
656
+ msgstr ""
657
+
658
+ #: partials/admin/indexer-header.php:27
659
+ #, php-format
660
+ msgid ""
661
+ "Is it still not working? Write a <a target=\"_blank\" href=\"%s\">support "
662
+ "request</a>."
663
+ msgstr ""
664
+
665
+ #: partials/admin/indexer-header.php:36
666
+ #: partials/admin/indexer-header-demo.php:8
667
+ msgid "Show details"
668
+ msgstr ""
669
+
670
+ #: partials/admin/indexer-header.php:37
671
+ msgid "Hide details"
672
+ msgstr ""
673
+
674
+ #: partials/admin/indexer-body.php:6
675
+ msgid ""
676
+ "Indexing... This process will continue in the background. You can leave this "
677
+ "page."
678
+ msgstr ""
679
+
680
+ #: partials/admin/indexer-body.php:8
681
+ msgid "Index build progress"
682
+ msgstr ""
683
+
684
+ #: partials/admin/indexer-body.php:11
685
+ #, php-format
686
+ msgid "Finalization... Wait a moment. (%s products)"
687
+ msgstr ""
688
+
689
+ #: partials/admin/indexer-body.php:15
690
+ msgid "Cancellation..."
691
+ msgstr ""
692
+
693
+ #: partials/admin/indexer-body.php:32
694
+ msgid "Build ID"
695
+ msgstr ""
696
+
697
+ #: partials/admin/indexer-body.php:36
698
+ msgid "DB"
699
+ msgstr ""
700
+
701
+ #: partials/admin/indexer-body.php:40
702
+ msgid "Index build start"
703
+ msgstr ""
704
+
705
+ #: partials/admin/indexer-body.php:44
706
+ msgid "Status"
707
+ msgstr ""
708
+
709
+ #: partials/admin/indexer-body.php:48
710
+ msgid "Products"
711
+ msgstr ""
712
+
713
+ #: partials/admin/indexer-body.php:52
714
+ msgid "Searchable"
715
+ msgstr ""
716
+
717
+ #: partials/admin/indexer-body.php:56 partials/admin/indexer-body.php:79
718
+ #: partials/admin/indexer-body.php:104
719
+ msgid "Start"
720
+ msgstr ""
721
+
722
+ #: partials/admin/indexer-body.php:60 partials/admin/indexer-body.php:83
723
+ #: partials/admin/indexer-body.php:108
724
+ msgid "End"
725
+ msgstr ""
726
+
727
+ #: partials/admin/indexer-body.php:65 partials/admin/indexer-body.php:88
728
+ #: partials/admin/indexer-body.php:113
729
+ msgid "Time"
730
+ msgstr ""
731
+
732
+ #: partials/admin/indexer-body.php:74
733
+ msgid "Readable"
734
+ msgstr ""
735
+
736
+ #: partials/admin/indexer-body.php:99
737
+ msgid "Taxonomies"
738
+ msgstr ""
739
+
740
+ #: partials/admin/indexer-body.php:127
741
+ msgid "Logs"
742
+ msgstr ""
743
+
744
+ #: partials/admin/pro-starter.php:8
745
+ msgid ""
746
+ "You are using the Pro plugin version. Your customers will find the right "
747
+ "products <span>faster and simpler</span> and your sales will increase."
748
+ msgstr ""
749
+
750
+ #: partials/admin/pro-starter.php:14
751
+ #, php-format
752
+ msgid ""
753
+ "If you have any questions, do not hesitate to <a target=\"_blank\" "
754
+ "href=\"%s\">get in touch</a>."
755
+ msgstr ""
756
+
757
+ #: partials/admin/settings.php:12
758
+ msgid "AJAX Search for WooCommerce (PRO) Settings"
759
+ msgstr ""
760
+
761
+ #: partials/admin/settings.php:14
762
+ msgid "AJAX Search for WooCommerce Settings"
763
+ msgstr ""
764
+
765
+ #: partials/admin/indexer-header-demo.php:3
766
+ #: includes/Engines/TNTSearch/Indexer/Buildier.php:414
767
+ #: includes/Engines/TNTSearchMySQL/Indexer/Buildier.php:398
768
+ msgid "The search index does not exist yet. Build it now."
769
+ msgstr ""
770
+
771
+ #: partials/admin/indexer-header-demo.php:7
772
+ #: includes/Engines/TNTSearch/Indexer/Buildier.php:443
773
+ #: includes/Engines/TNTSearchMySQL/Indexer/Buildier.php:430
774
+ msgid "Build index"
775
+ msgstr ""
776
+
777
+ #: partials/admin/how-to-use.php:10
778
+ msgid "There are two easy ways to display the search form"
779
+ msgstr "Hay dos maneras fáciles de mostrar el formulario de búsqueda"
780
+
781
+ #: partials/admin/how-to-use.php:11
782
+ #, php-format
783
+ msgid "Use a shortcode %s"
784
+ msgstr "Usar el shortcode %s"
785
+
786
+ #: partials/admin/how-to-use.php:12
787
+ #, php-format
788
+ msgid "Go to the %s and choose \"Woo AJAX Search\""
789
+ msgstr ""
790
+
791
+ #: partials/admin/how-to-use.php:12
792
+ msgid "Widgets Screen"
793
+ msgstr "Pantalla Widgets"
794
+
795
+ #: partials/admin/how-to-use.php:14
796
+ #, php-format
797
+ msgid ""
798
+ "Are there any difficulties? <a href=\"%s\">Upgrade now</a> and our "
799
+ "developers will do everything for you."
800
+ msgstr ""
801
+
802
+ #: partials/admin/system-status.php:5
803
+ msgid "Ajax Search for WooCommerce (Pro)"
804
+ msgstr ""
805
+
806
+ #: partials/admin/system-status.php:6
807
+ msgid "This section shows the plugin requirements."
808
+ msgstr ""
809
+
810
+ #: partials/admin/system-status.php:12
811
+ msgid "PHP extension (mbstring)"
812
+ msgstr ""
813
+
814
+ #: partials/admin/system-status.php:29
815
+ msgid "PHP extension (pdo_mysql)"
816
+ msgstr ""
817
+
818
+ #: partials/admin/system-status.php:46
819
+ msgid "PHP extension (sqlite3)"
820
+ msgstr ""
821
+
822
+ #: partials/admin/system-status.php:61
823
+ msgid "PHP extension (pdo_sqlite)"
824
+ msgstr ""
825
+
826
+ #: partials/admin/system-status.php:76
827
+ msgid "Index directory test"
828
+ msgstr ""
829
+
830
+ #: partials/admin/system-status.php:93
831
+ msgid "Default upload path"
832
+ msgstr ""
833
+
834
+ #: partials/admin/system-status.php:96
835
+ msgid "At this moment the plugin works only with default upload directory."
836
+ msgstr ""
837
+
838
+ #: partials/admin/system-status.php:113
839
+ msgid "DB readable tables exist"
840
+ msgstr ""
841
+
842
+ #: partials/admin/system-status.php:134
843
+ msgid "Finding wp-load.php from outside"
844
+ msgstr ""
845
+
846
+ #: partials/admin/system-status.php:143
847
+ msgid "The location of wp-load.php is not the default."
848
+ msgstr ""
849
+
850
+ #: partials/admin/system-status.php:158
851
+ msgid "Multisite"
852
+ msgstr ""
853
+
854
+ #: partials/admin/system-status.php:161
855
+ msgid ""
856
+ "The Ajax Search for WooCommerce (Pro) does not support multisite yet. "
857
+ "Multisite must be disabled."
858
+ msgstr ""
859
+
860
+ #: partials/admin/system-status.php:166
861
+ msgid "disabled"
862
+ msgstr ""
863
+
864
+ #: partials/admin/system-status.php:168
865
+ msgid "enabled"
866
+ msgstr ""
867
+
868
+ #: partials/admin/system-status.php:175
869
+ msgid "Conflicts with other plugins"
870
+ msgstr ""
871
+
872
+ #: partials/admin/system-status.php:178
873
+ msgid ""
874
+ "The Ajax Search for WooCommerce (Pro) does not support multilanguages yet."
875
+ msgstr ""
876
+
877
+ #: partials/admin/system-status.php:184
878
+ msgid "no"
879
+ msgstr ""
880
+
881
+ #: partials/admin/features.php:8
882
+ msgid ""
883
+ "If users can’t find the product they’re searching for, they can’t buy it. "
884
+ "Help your customers to find the right products <span>faster and "
885
+ "simpler</span>."
886
+ msgstr ""
887
+
888
+ #: partials/admin/features.php:10 includes/Admin/Promo/Upgrade.php:62
889
+ msgid ""
890
+ "Update now and increase your sales. You will receive 14-day satisfaction "
891
+ "guarantee. A return on investment will come very quickly."
892
+ msgstr ""
893
+
894
+ #: partials/admin/features.php:13
895
+ msgid "Speed up search! (even <b>10x faster</b>) - users love it!"
896
+ msgstr ""
897
+
898
+ #: partials/admin/features.php:14
899
+ msgid ""
900
+ "Help in embedding the search form in your theme. <b>Our developers will do "
901
+ "it for you</b>."
902
+ msgstr ""
903
+
904
+ #: partials/admin/features.php:15
905
+ msgid ""
906
+ "Efficient with a large number of products. Tested on <b>20 000 products</b>"
907
+ msgstr ""
908
+
909
+ #: partials/admin/features.php:16 includes/Admin/Promo/Upgrade.php:51
910
+ msgid "New modern search engine based on bm25 ranking algorithm"
911
+ msgstr ""
912
+
913
+ #: partials/admin/features.php:17 includes/Admin/Promo/Upgrade.php:52
914
+ msgid "Fuzzy search"
915
+ msgstr ""
916
+
917
+ #: partials/admin/features.php:18
918
+ msgid "Search in variation products SKUs (option)"
919
+ msgstr ""
920
+
921
+ #: partials/admin/features.php:19
922
+ msgid "Search in product attributes (option)"
923
+ msgstr ""
924
+
925
+ #: partials/admin/features.php:20
926
+ msgid "Advanced search analytics and tips (in plans)"
927
+ msgstr ""
928
+
929
+ #: partials/admin/features.php:21 includes/Admin/Promo/Upgrade.php:54
930
+ msgid "Individual customization of the search form (simple CSS improvements)"
931
+ msgstr ""
932
+
933
+ #: partials/admin/features.php:22
934
+ msgid "Individual tips and support"
935
+ msgstr ""
936
+
937
+ #: partials/admin/features.php:23
938
+ msgid "And more..."
939
+ msgstr ""
940
+
941
+ #: partials/admin/features.php:25
942
+ msgid "Upgrade Now!"
943
+ msgstr ""
944
+
945
+ #. Name of the plugin
946
+ #: includes/Admin/AdminMenu.php:31
947
+ msgid "Ajax Search for WooCommerce"
948
+ msgstr "Búqueda AJAX para WooCommerce"
949
+
950
+ #: includes/Admin/AdminMenu.php:32
951
+ msgid "AJAX search form"
952
+ msgstr ""
953
+
954
+ #: includes/Admin/SettingsAPI.php:572
955
+ msgid "Contact"
956
+ msgstr ""
957
+
958
+ #: includes/Admin/SettingsAPI.php:575
959
+ msgid "My Account"
960
+ msgstr ""
961
+
962
+ #: includes/Admin/Requirements.php:60
963
+ #, php-format
964
+ msgid "Required PHP version 5.5 or higher. You use %s"
965
+ msgstr ""
966
+
967
+ #: includes/Admin/Requirements.php:79 includes/Admin/Requirements.php:84
968
+ #: includes/Admin/Requirements.php:89 includes/Admin/Requirements.php:94
969
+ #, php-format
970
+ msgid "Required PHP extension: %s"
971
+ msgstr ""
972
+
973
+ #: includes/Admin/Requirements.php:128
974
+ #, php-format
975
+ msgid "Problem with permission for the directory: %s"
976
+ msgstr ""
977
+
978
+ #: includes/Admin/Requirements.php:181
979
+ #, php-format
980
+ msgid ""
981
+ "You use the %s plugin. The Ajax Search for WooCommerce PRO does not support "
982
+ "multilingual yet."
983
+ msgstr ""
984
+
985
+ #: includes/Admin/Requirements.php:205
986
+ msgid ""
987
+ "Your WordPress use the multisite. The Ajax Search for WooCommerce PRO does "
988
+ "not support multisite yet."
989
+ msgstr ""
990
+
991
+ #: includes/Admin/Requirements.php:222
992
+ msgid "Attention! Read this before the upgrade."
993
+ msgstr ""
994
+
995
+ #: includes/Admin/Requirements.php:223
996
+ msgid ""
997
+ "Ajax Search for WooCommerce PRO may not work properly in your environment "
998
+ "for the following reasons:"
999
+ msgstr ""
1000
+
1001
+ #: includes/Admin/Requirements.php:233
1002
+ msgid "Ajax Search for WooCommerce PRO - Requirements"
1003
+ msgstr ""
1004
+
1005
+ #: includes/Admin/Requirements.php:234
1006
+ #, php-format
1007
+ msgid ""
1008
+ "If you have any questions, do not hesitate contact <a href=\"%s\">our "
1009
+ "support</a>."
1010
+ msgstr ""
1011
+
1012
+ #: includes/Engines/WordPressNative/DetailsBox.php:170
1013
+ msgid "Tag"
1014
+ msgstr "Etiqueta"
1015
+
1016
+ #: includes/Integrations/Themes/Storefront.php:28
1017
+ msgid "Storefront theme"
1018
+ msgstr ""
1019
+
1020
+ #: includes/Integrations/Themes/Storefront.php:35
1021
+ msgid "Replace search form"
1022
+ msgstr ""
1023
+
1024
+ #: includes/Integrations/Themes/Storefront.php:36
1025
+ msgid ""
1026
+ "Replace the Storefront theme's default product search with the Ajax Search "
1027
+ "for WooCommerce form."
1028
+ msgstr ""
1029
+
1030
+ #: includes/Admin/Promo/Upgrade.php:50
1031
+ msgid "Speed up search! (even 10x faster) - users love it!"
1032
+ msgstr ""
1033
+
1034
+ #: includes/Admin/Promo/Upgrade.php:53
1035
+ msgid "Search in attributes and variation products SKUs (option)"
1036
+ msgstr ""
1037
+
1038
+ #: includes/Admin/Promo/Upgrade.php:55
1039
+ msgid "Individual tips and support by Damian Góra - the author of the plugin"
1040
+ msgstr ""
1041
+
1042
+ #: includes/Admin/Promo/Upgrade.php:56
1043
+ msgid "and more..."
1044
+ msgstr ""
1045
+
1046
+ #: includes/Admin/Promo/Upgrade.php:58
1047
+ msgid "Ajax Search for WooCommerce PRO - Upgrade Now"
1048
+ msgstr ""
1049
+
1050
+ #: includes/Admin/Promo/Upgrade.php:68
1051
+ msgid "You can upgrade without leaving the admin panel by clicking below."
1052
+ msgstr ""
1053
+
1054
+ #: includes/Admin/Promo/Upgrade.php:69
1055
+ msgid "Free updates and email support included."
1056
+ msgstr ""
1057
+
1058
+ #: includes/Admin/Promo/Upgrade.php:70
1059
+ msgid "Upgrade Now"
1060
+ msgstr ""
1061
+
1062
+ #: includes/Admin/Promo/FeedbackNotice.php:72
1063
+ #, php-format
1064
+ msgid ""
1065
+ "Hey %s, it's Damian Góra from %s. You have used this free plugin for some "
1066
+ "time now, and I hope you like it!"
1067
+ msgstr ""
1068
+ "Hey %s, soy Damian Góra desde %s. Ya llevas algún tiempo usando este plugin "
1069
+ "gratuito, y espero que te guste!"
1070
+
1071
+ #: includes/Admin/Promo/FeedbackNotice.php:77
1072
+ #, php-format
1073
+ msgid ""
1074
+ "I have spent countless hours developing it, and it would mean a lot to me if "
1075
+ "you %ssupport it with a quick review on WordPress.org.%s"
1076
+ msgstr ""
1077
+ "He pasado innumerables horas desarrollándolo, y significaría mucho para mí "
1078
+ "si lo %sapoyas con una rápida revisión en WordPress.org.%s"
1079
+
1080
+ #: includes/Admin/Promo/FeedbackNotice.php:83
1081
+ #, php-format
1082
+ msgid "Review %s"
1083
+ msgstr "Revisar %s"
1084
+
1085
+ #: includes/Admin/Promo/FeedbackNotice.php:87
1086
+ msgid "No thanks"
1087
+ msgstr "No gracias"
1088
+
1089
+ #: includes/Engines/TNTSearch/Indexer/Buildier.php:149
1090
+ #: includes/Engines/TNTSearchMySQL/Indexer/Buildier.php:151
1091
+ msgctxt "Admin, logs"
1092
+ msgid ""
1093
+ "The request to build a new index rejected. Another process is in progress."
1094
+ msgstr ""
1095
+
1096
+ #: includes/Engines/TNTSearch/Indexer/Buildier.php:155
1097
+ #: includes/Engines/TNTSearch/Indexer/Buildier.php:318
1098
+ #: includes/Engines/TNTSearchMySQL/Indexer/Buildier.php:159
1099
+ #: includes/Engines/TNTSearchMySQL/Indexer/Buildier.php:302
1100
+ msgctxt "Admin, logs"
1101
+ msgid "There are no tables in the database"
1102
+ msgstr ""
1103
+
1104
+ #: includes/Engines/TNTSearch/Indexer/Buildier.php:163
1105
+ #: includes/Engines/TNTSearchMySQL/Indexer/Buildier.php:168
1106
+ msgctxt "Admin, logs"
1107
+ msgid "Indexer started"
1108
+ msgstr ""
1109
+
1110
+ #: includes/Engines/TNTSearch/Indexer/Buildier.php:183
1111
+ #: includes/Engines/TNTSearch/Indexer/Buildier.php:202
1112
+ #: includes/Engines/TNTSearchMySQL/Indexer/Buildier.php:192
1113
+ msgctxt "Admin, logs"
1114
+ msgid "[Readable index] Building..."
1115
+ msgstr ""
1116
+
1117
+ #: includes/Engines/TNTSearch/Indexer/Buildier.php:198
1118
+ #: includes/Engines/TNTSearch/Indexer/Readable/AsyncProcess.php:168
1119
+ #: includes/Engines/TNTSearchMySQL/Indexer/Readable/AsyncProcess.php:168
1120
+ msgctxt "Admin, logs"
1121
+ msgid "[Readable index] Completed"
1122
+ msgstr ""
1123
+
1124
+ #: includes/Engines/TNTSearch/Indexer/Buildier.php:209
1125
+ #: includes/Engines/TNTSearch/Indexer/Searchable/AsyncRequest.php:37
1126
+ #: includes/Engines/TNTSearchMySQL/Indexer/Searchable/AsyncRequest.php:37
1127
+ msgctxt "Admin, logs"
1128
+ msgid "[Searchable index] Building..."
1129
+ msgstr ""
1130
+
1131
+ #: includes/Engines/TNTSearch/Indexer/Buildier.php:220
1132
+ #: includes/Engines/TNTSearch/Indexer/Searchable/AsyncRequest.php:53
1133
+ #: includes/Engines/TNTSearchMySQL/Indexer/Searchable/AsyncRequest.php:53
1134
+ msgctxt "Admin, logs"
1135
+ msgid "[Searchable index] Completed"
1136
+ msgstr ""
1137
+
1138
+ #: includes/Engines/TNTSearch/Indexer/Buildier.php:393
1139
+ #: includes/Engines/TNTSearchMySQL/Indexer/Buildier.php:377
1140
+ msgid "Wait... Indexing in progress"
1141
+ msgstr ""
1142
+
1143
+ #: includes/Engines/TNTSearch/Indexer/Buildier.php:394
1144
+ #: includes/Engines/TNTSearchMySQL/Indexer/Buildier.php:378
1145
+ msgid "This process will continue in the background. You can leave this page!"
1146
+ msgstr ""
1147
+
1148
+ #: includes/Engines/TNTSearch/Indexer/Buildier.php:398
1149
+ #: includes/Engines/TNTSearchMySQL/Indexer/Buildier.php:382
1150
+ msgid "Wait... The index build process is canceling"
1151
+ msgstr ""
1152
+
1153
+ #: includes/Engines/TNTSearch/Indexer/Buildier.php:399
1154
+ #: includes/Engines/TNTSearchMySQL/Indexer/Buildier.php:383
1155
+ msgid "Canceling..."
1156
+ msgstr ""
1157
+
1158
+ #: includes/Engines/TNTSearch/Indexer/Buildier.php:404
1159
+ #: includes/Engines/TNTSearchMySQL/Indexer/Buildier.php:388
1160
+ msgid "The search index was built successfully."
1161
+ msgstr ""
1162
+
1163
+ #: includes/Engines/TNTSearch/Indexer/Buildier.php:405
1164
+ #: includes/Engines/TNTSearchMySQL/Indexer/Buildier.php:389
1165
+ msgid "Completed. Works."
1166
+ msgstr ""
1167
+
1168
+ #: includes/Engines/TNTSearch/Indexer/Buildier.php:409
1169
+ #: includes/Engines/TNTSearchMySQL/Indexer/Buildier.php:393
1170
+ msgid "The search index could not be built."
1171
+ msgstr ""
1172
+
1173
+ #: includes/Engines/TNTSearch/Indexer/Buildier.php:410
1174
+ #: includes/Engines/TNTSearchMySQL/Indexer/Buildier.php:394
1175
+ msgid "Errors"
1176
+ msgstr ""
1177
+
1178
+ #: includes/Engines/TNTSearch/Indexer/Buildier.php:415
1179
+ #: includes/Engines/TNTSearchMySQL/Indexer/Buildier.php:399
1180
+ msgid "Not exist"
1181
+ msgstr ""
1182
+
1183
+ #: includes/Engines/TNTSearch/Indexer/Buildier.php:437
1184
+ #: includes/Engines/TNTSearchMySQL/Indexer/Buildier.php:421
1185
+ msgid "Stop process"
1186
+ msgstr ""
1187
+
1188
+ #: includes/Engines/TNTSearch/Indexer/Buildier.php:439
1189
+ #: includes/Engines/TNTSearchMySQL/Indexer/Buildier.php:424
1190
+ msgid "Rebuild index"
1191
+ msgstr ""
1192
+
1193
+ #: includes/Engines/TNTSearch/Indexer/Buildier.php:441
1194
+ #: includes/Engines/TNTSearchMySQL/Indexer/Buildier.php:427
1195
+ msgid "Try to build the index again."
1196
+ msgstr ""
1197
+
1198
+ #: includes/Engines/TNTSearch/Indexer/Taxonomy/Indexer.php:199
1199
+ #: includes/Engines/TNTSearchMySQL/Indexer/Taxonomy/Indexer.php:199
1200
+ msgctxt "Admin, logs"
1201
+ msgid "[Taxonomy index] Cleared"
1202
+ msgstr ""
1203
+
1204
+ #: includes/Engines/TNTSearch/Indexer/Taxonomy/Indexer.php:201
1205
+ #: includes/Engines/TNTSearchMySQL/Indexer/Taxonomy/Indexer.php:201
1206
+ msgctxt "Admin, logs"
1207
+ msgid "[Taxonomy index] Can not be cleared"
1208
+ msgstr ""
1209
+
1210
+ #: includes/Engines/TNTSearch/Indexer/Taxonomy/Request.php:38
1211
+ #: includes/Engines/TNTSearchMySQL/Indexer/Taxonomy/Request.php:38
1212
+ #, php-format
1213
+ msgctxt "Admin, logs"
1214
+ msgid "[Taxonomy index] Building %s..."
1215
+ msgstr ""
1216
+
1217
+ #: includes/Engines/TNTSearch/Indexer/Taxonomy/Request.php:51
1218
+ #: includes/Engines/TNTSearchMySQL/Indexer/Taxonomy/Request.php:51
1219
+ #, php-format
1220
+ msgctxt "Admin, logs"
1221
+ msgid "[Taxonomy index] Completed: %s, Not indexed: %s"
1222
+ msgstr ""
1223
+
1224
+ #: includes/Engines/TNTSearch/Indexer/Searchable/Indexer.php:176
1225
+ #: includes/Engines/TNTSearchMySQL/Indexer/Searchable/Indexer.php:171
1226
+ msgctxt "Admin, logs"
1227
+ msgid "[Searchable index] Cleared"
1228
+ msgstr ""
1229
+
1230
+ #: includes/Engines/TNTSearch/Indexer/Searchable/Indexer.php:178
1231
+ msgctxt "Admin, logs"
1232
+ msgid "[Searchable index] Can not be cleared"
1233
+ msgstr ""
1234
+
1235
+ #: includes/Engines/TNTSearch/Indexer/Readable/Indexer.php:153
1236
+ #: includes/Engines/TNTSearchMySQL/Indexer/Readable/Indexer.php:153
1237
+ msgctxt "Admin, logs"
1238
+ msgid "[Readable index] Cleared"
1239
+ msgstr ""
1240
+
1241
+ #: includes/Engines/TNTSearch/Indexer/Readable/Indexer.php:155
1242
+ #: includes/Engines/TNTSearchMySQL/Indexer/Readable/Indexer.php:155
1243
+ msgctxt "Admin, logs"
1244
+ msgid "[Readable index] Can not be cleared"
1245
+ msgstr ""
1246
+
1247
+ #: includes/Engines/TNTSearch/Indexer/Readable/AsyncProcess.php:121
1248
+ #: includes/Engines/TNTSearchMySQL/Indexer/Readable/AsyncProcess.php:121
1249
+ #, php-format
1250
+ msgctxt "Admin, logs"
1251
+ msgid "[Readable index] The queue <code>%s</code> was deleted "
1252
+ msgstr ""
1253
+
1254
+ #: includes/Engines/TNTSearch/Indexer/Readable/AsyncProcess.php:134
1255
+ #: includes/Engines/TNTSearchMySQL/Indexer/Readable/AsyncProcess.php:134
1256
+ #, php-format
1257
+ msgctxt "Admin, logs"
1258
+ msgid "[Readable index] Schedule <code>%s</code> was created "
1259
+ msgstr ""
1260
+
1261
+ #: includes/Engines/TNTSearch/Indexer/Readable/AsyncProcess.php:150
1262
+ #: includes/Engines/TNTSearchMySQL/Indexer/Readable/AsyncProcess.php:150
1263
+ #, php-format
1264
+ msgctxt "Admin, logs"
1265
+ msgid "[Readable index] The queue <code>%s</code> was created"
1266
+ msgstr ""
1267
+
1268
+ #. Name of the plugin
1269
+ msgid "AJAX Search for WooCommerce MysQL"
1270
+ msgstr ""
1271
+
1272
+ #. Description of the plugin
1273
+ msgid ""
1274
+ "Allows your customers to search products easily and quickly. It will display "
1275
+ "the results instantly while typing in an inputbox."
1276
+ msgstr ""
1277
+
1278
+ #. URI of the plugin
1279
+ msgid "https://wordpress.org/plugins/ajax-search-for-woocommerce/"
1280
+ msgstr ""
1281
+
1282
+ #. Author of the plugin
1283
+ msgid "Damian Góra"
1284
+ msgstr ""
1285
+
1286
+ #. Author URI of the plugin
1287
+ msgid "http://damiangora.com"
1288
+ msgstr ""
languages/ajax-search-for-woocommerce-it_IT.mo ADDED
Binary file
languages/ajax-search-for-woocommerce-it_IT.po ADDED
@@ -0,0 +1,1370 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ msgid ""
2
+ msgstr ""
3
+ "Project-Id-Version: \n"
4
+ "Report-Msgid-Bugs-To: \n"
5
+ "POT-Creation-Date: 2019-05-03 21:18+0000\n"
6
+ "PO-Revision-Date: 2019-05-03 21:20+0000\n"
7
+ "Last-Translator: dev_nIXCkVKHG <admin@webtroter.pl>\n"
8
+ "Language-Team: Italian\n"
9
+ "Language: it_IT\n"
10
+ "MIME-Version: 1.0\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: Loco https://localise.biz/\n"
15
+ "X-Loco-Version: 2.2.2; wp-5.1.1"
16
+
17
+ #: ajax-search-for-woocommerce.php:198
18
+ msgid ""
19
+ "<b>AJAX Search for WooCommerce</b>: You need PHP version at least 5.3 to run "
20
+ "this plugin. You are currently using PHP version "
21
+ msgstr ""
22
+ "<b>Ajax Search for WooCommerce</b>: E' necessaria almeno la versione 5.3 di "
23
+ "PHP per eseguire questo plugin. Al momento stai usando PHP versione "
24
+
25
+ #: ajax-search-for-woocommerce.php:221
26
+ msgid ""
27
+ "<b>AJAX Search for WooCommerce</b>: You need PHP version at least 5.5 to run "
28
+ "this plugin. You are currently using PHP version "
29
+ msgstr ""
30
+
31
+ #: ajax-search-for-woocommerce.php:250
32
+ #, php-format
33
+ msgid ""
34
+ "<b>AJAX Search for WooCommerce</b>:<br /> Your PHP version <b><i>%s</i></b> "
35
+ "will not longer supported in the next plugin releases."
36
+ msgstr ""
37
+ "<b>AJAX Search for WooCommerce</b>:<br /> La tua versione di PHP <b><i>%s</i>"
38
+ "</b> non sarà più supportata nelle prossime release del plugin."
39
+
40
+ #: ajax-search-for-woocommerce.php:252
41
+ msgid ""
42
+ " You have to update your PHP version to least 5.5 (recommended 7.2 or "
43
+ "greater)."
44
+ msgstr ""
45
+ " È necessario aggiornare la versione PHP almeno alla 5.5 (raccomandato 7.2 o "
46
+ "superiore)."
47
+
48
+ #: ajax-search-for-woocommerce.php:255
49
+ msgid ""
50
+ "If you cannot upgrade your PHP version yourself, you can send an email to "
51
+ "your host."
52
+ msgstr ""
53
+ "Se non sei in grado di aggiornare tu stesso la versione di PHP, puoi inviare "
54
+ "una email al tuo hosting."
55
+
56
+ #: ajax-search-for-woocommerce.php:258
57
+ msgid ""
58
+ "If you do not upgrade the php version, the next plugin release will not work!"
59
+ msgstr ""
60
+ "Se non si aggiorna la versione php, la prossima versione del plugin non "
61
+ "funzionerà!"
62
+
63
+ #: ajax-search-for-woocommerce.php:263
64
+ msgid "Remind me again in week."
65
+ msgstr "Ricordamelo di nuovo tra una settimana."
66
+
67
+ #: ajax-search-for-woocommerce.php:285
68
+ #, php-format
69
+ msgid ""
70
+ "<b>AJAX Search for WooCommerce</b> is enabled but not effective. It requires "
71
+ "%s in order to work."
72
+ msgstr ""
73
+ "<b>Ajax Search for WooCommerce</b> è abilitato ma non in funzione. Necessita "
74
+ "di %s per funzionare."
75
+
76
+ #: widget.php:25
77
+ msgid "AJAX (live) search form for WooCommerce"
78
+ msgstr "Modulo di ricerca Ajax (live) per WooCommerce"
79
+
80
+ #: widget.php:27
81
+ msgid "Woo AJAX Search"
82
+ msgstr "Ricerca Ajax Woo"
83
+
84
+ #: widget.php:32
85
+ msgid "Title"
86
+ msgstr "Titolo"
87
+
88
+ #: partials/search-form.php:19 backward-compatibility/1-1-7/search-form.php:67
89
+ msgid "Products search"
90
+ msgstr "Ricerca prodotti"
91
+
92
+ #: partials/search-form.php:26 includes/Settings.php:188
93
+ #: backward-compatibility/1-1-7/search-form.php:74
94
+ msgid "Search for products..."
95
+ msgstr "Cerca prodotti..."
96
+
97
+ #: includes/Settings.php:86
98
+ msgid "Basic"
99
+ msgstr "Base"
100
+
101
+ #: includes/Settings.php:90
102
+ msgid "Form"
103
+ msgstr "Modulo"
104
+
105
+ #: includes/Settings.php:94
106
+ msgid "Colors"
107
+ msgstr "Colori"
108
+
109
+ #: includes/Settings.php:98
110
+ msgid "Scope"
111
+ msgstr "Ambito"
112
+
113
+ #: includes/Settings.php:105 includes/Helpers.php:441 includes/Helpers.php:444
114
+ msgid "Pro"
115
+ msgstr "Pro"
116
+
117
+ #: includes/Settings.php:111
118
+ msgid "Increase sales"
119
+ msgstr "Aumenta le vendite"
120
+
121
+ #: includes/Settings.php:113
122
+ msgid "by simple tricks"
123
+ msgstr "con facilità"
124
+
125
+ #: includes/Settings.php:136
126
+ msgid "How to use?"
127
+ msgstr "Come si usa?"
128
+
129
+ #: includes/Settings.php:142
130
+ msgid "Suggestions limit"
131
+ msgstr "Limite suggerimenti"
132
+
133
+ #: includes/Settings.php:145
134
+ msgid "Maximum number of suggestions rows."
135
+ msgstr "Numero massimo di righe suggerimenti."
136
+
137
+ #: includes/Settings.php:150
138
+ msgid "Minimum characters"
139
+ msgstr "Caratteri minimi"
140
+
141
+ #: includes/Settings.php:153
142
+ msgid "Minimum number of characters required to trigger autosuggest."
143
+ msgstr ""
144
+ "Numero minimo di caratteri richiesti per attivare il suggerimento automatico."
145
+
146
+ #: includes/Settings.php:158
147
+ msgid "Max form width"
148
+ msgstr "Massima larghezza modulo"
149
+
150
+ #: includes/Settings.php:161
151
+ msgid "To set 100% width leave blank"
152
+ msgstr "Per impostare larghezza 100% lasciare vuoto"
153
+
154
+ #: includes/Settings.php:166
155
+ msgid "Show submit button"
156
+ msgstr "Mostra pulsante invio"
157
+
158
+ #: includes/Settings.php:173
159
+ msgid "Custom labels"
160
+ msgstr "Etichette personalizzate"
161
+
162
+ #: includes/Settings.php:179
163
+ msgid "Search submit button text"
164
+ msgstr "Testo pulsante invio ricerca"
165
+
166
+ #: includes/Settings.php:181
167
+ msgid "To display the magnifier icon leave this field empty."
168
+ msgstr ""
169
+ "Per mostrare l'icona lente di ingrandimento lasciare vuoto questo campo."
170
+
171
+ #: includes/Settings.php:182
172
+ msgid "Search"
173
+ msgstr "Ricerca"
174
+
175
+ #: includes/Settings.php:186
176
+ msgid "Search input placeholder"
177
+ msgstr "Segnaposto campo ricerca"
178
+
179
+ #: includes/Settings.php:192
180
+ msgid "More results"
181
+ msgstr "Più risultati"
182
+
183
+ #: includes/Settings.php:194 includes/Scripts.php:41
184
+ msgid "See all results..."
185
+ msgstr "Vedi tutti i risultati..."
186
+
187
+ #: includes/Settings.php:198
188
+ msgctxt "admin"
189
+ msgid "No results"
190
+ msgstr "Nessun risultato [ admin ]"
191
+
192
+ #: includes/Settings.php:200 includes/Scripts.php:42
193
+ msgid "No results"
194
+ msgstr "Nessun risultato"
195
+
196
+ #: includes/Settings.php:206
197
+ msgid "Suggestions output"
198
+ msgstr "Output suggerimenti"
199
+
200
+ #: includes/Settings.php:212
201
+ msgid "Show product image"
202
+ msgstr "Mostra immagine prodotto"
203
+
204
+ #: includes/Settings.php:218
205
+ msgid "Show price"
206
+ msgstr "Mostra prezzo"
207
+
208
+ #: includes/Settings.php:224
209
+ msgid "Show product description"
210
+ msgstr "Mostra descrizione prodotto"
211
+
212
+ #: includes/Settings.php:230
213
+ msgid "Show SKU"
214
+ msgstr "Mostra SKU"
215
+
216
+ #: includes/Settings.php:236
217
+ msgid "Also show matching categories"
218
+ msgstr "Mostra anche categorie corrispondenti"
219
+
220
+ #: includes/Settings.php:242
221
+ msgid "Also show matching tags"
222
+ msgstr "Mostra anche tag corrispondenti"
223
+
224
+ #: includes/Settings.php:260
225
+ msgid "Mobile"
226
+ msgstr ""
227
+
228
+ #: includes/Settings.php:266
229
+ msgid "Overlay search (beta)"
230
+ msgstr ""
231
+
232
+ #: includes/Settings.php:267
233
+ msgid "Enhances user experience on mobile"
234
+ msgstr ""
235
+
236
+ #: includes/Settings.php:273
237
+ msgid "Preloader"
238
+ msgstr "Preloader"
239
+
240
+ #: includes/Settings.php:279
241
+ msgid "Show preloader"
242
+ msgstr "Mostra preloader"
243
+
244
+ #: includes/Settings.php:285
245
+ msgid "Upload preloader image"
246
+ msgstr "Carica immagine preloader"
247
+
248
+ #: includes/Settings.php:291
249
+ msgid "Details box"
250
+ msgstr "Box dettagli"
251
+
252
+ #: includes/Settings.php:297
253
+ msgid "Show details box"
254
+ msgstr "Mostra box dettagli"
255
+
256
+ #: includes/Settings.php:301
257
+ #, php-format
258
+ msgid ""
259
+ "The Details box is an additional container for extended information. The "
260
+ "details are changed dynamically when you hover the mouse over one of the "
261
+ "suggestions. <a href=\"%s\" target=\"_blank\">See where the details box will "
262
+ "appear.</a>"
263
+ msgstr ""
264
+ "Il box dettagli è un contenitore aggiuntivo per informazioni estese. I "
265
+ "dettagli vengono cambiati dinamicamente quando il cursore si trova sopra a "
266
+ "uno dei suggerimenti. <a href=\"%s\" target=\"_blank\">Vedi dove apparirà il "
267
+ "box dettagli.</a>"
268
+
269
+ #: includes/Settings.php:306
270
+ msgid "Products list"
271
+ msgstr "Lista dei prodotti"
272
+
273
+ #: includes/Settings.php:308 includes/Settings.php:322
274
+ #: includes/Settings.php:336
275
+ msgid "Applies only to category or tags suggestions type"
276
+ msgstr "Si applica solo ai tipi di suggerimenti \"categoria\" o \"tags\""
277
+
278
+ #: includes/Settings.php:310
279
+ msgid "All Product"
280
+ msgstr "Tutti i prodotti"
281
+
282
+ #: includes/Settings.php:311
283
+ msgid "Featured Products"
284
+ msgstr "Prodotti in evidenza"
285
+
286
+ #: includes/Settings.php:312
287
+ msgid "On-sale Products"
288
+ msgstr "Prodotti in offerta"
289
+
290
+ #: includes/Settings.php:319
291
+ msgid "Order by"
292
+ msgstr "Ordina per"
293
+
294
+ #: includes/Settings.php:324
295
+ msgid "Date"
296
+ msgstr "Data"
297
+
298
+ #: includes/Settings.php:325
299
+ msgid "Price"
300
+ msgstr "Prezzo"
301
+
302
+ #: includes/Settings.php:326
303
+ msgid "Random"
304
+ msgstr "Casuale"
305
+
306
+ #: includes/Settings.php:327
307
+ msgid "Sales"
308
+ msgstr "Vendite"
309
+
310
+ #: includes/Settings.php:333
311
+ msgid "Order"
312
+ msgstr ""
313
+
314
+ #: includes/Settings.php:338
315
+ msgid "DESC"
316
+ msgstr "Discendente"
317
+
318
+ #: includes/Settings.php:339
319
+ msgid "ASC"
320
+ msgstr "Ascendente"
321
+
322
+ #: includes/Settings.php:347
323
+ msgid "Search form"
324
+ msgstr "Modulo di ricerca"
325
+
326
+ #: includes/Settings.php:353
327
+ msgid "Search input background"
328
+ msgstr "Sfondo campo ricerca"
329
+
330
+ #: includes/Settings.php:359
331
+ msgid "Search input text"
332
+ msgstr "Testo campo ricerca"
333
+
334
+ #: includes/Settings.php:365
335
+ msgid "Search input border"
336
+ msgstr "Bordo campo ricerca"
337
+
338
+ #: includes/Settings.php:371
339
+ msgid "Search submit background"
340
+ msgstr "Sfondo pulsante invia"
341
+
342
+ #: includes/Settings.php:377
343
+ msgid "Search submit text"
344
+ msgstr "Testo pulsante invia"
345
+
346
+ #: includes/Settings.php:383
347
+ msgid "Suggestions"
348
+ msgstr "Suggerimenti"
349
+
350
+ #: includes/Settings.php:389
351
+ msgid "Suggestion background"
352
+ msgstr "Sfondo suggerimento"
353
+
354
+ #: includes/Settings.php:395
355
+ msgid "Suggestion selected"
356
+ msgstr "Suggerimento selezionato"
357
+
358
+ #: includes/Settings.php:401
359
+ msgid "Text color"
360
+ msgstr "Colore testo"
361
+
362
+ #: includes/Settings.php:407
363
+ msgid "Highlight color"
364
+ msgstr "Colore evidenziazione"
365
+
366
+ #: includes/Settings.php:413
367
+ msgid "Border color"
368
+ msgstr "Colore bordo"
369
+
370
+ #: includes/Settings.php:421
371
+ msgid "Search scope"
372
+ msgstr "Ambito di ricerca"
373
+
374
+ #: includes/Settings.php:427
375
+ msgid "Info"
376
+ msgstr "Informazioni"
377
+
378
+ #: includes/Settings.php:429
379
+ msgid ""
380
+ "Searching in products names is always enabled. You can extend or narrow the "
381
+ "searching scope using the following options."
382
+ msgstr ""
383
+ "La ricerca nel nome prodotto è sempre abilitata. Puoi estendere o "
384
+ "restringere l'ambito di ricerca usando le seguenti opzioni."
385
+
386
+ #: includes/Settings.php:434
387
+ msgid "Search in description"
388
+ msgstr "Cerca in descrizione"
389
+
390
+ #: includes/Settings.php:440
391
+ msgid "Search in short description"
392
+ msgstr "Cerca in descrizione breve"
393
+
394
+ #: includes/Settings.php:446
395
+ msgid "Search in SKU"
396
+ msgstr "Cerca in COD/SKU"
397
+
398
+ #: includes/Settings.php:448
399
+ msgid "Searching also in variable products SKU"
400
+ msgstr "Cerca anche in COD/SKU delle variazioni"
401
+
402
+ #: includes/Settings.php:448
403
+ #, php-format
404
+ msgid ""
405
+ "Searching in variable products SKU is available only in <a href=\"%s\">the "
406
+ "pro version</a>. It will also be available in the free version soon."
407
+ msgstr ""
408
+ "La ricerca nel COD/SKU delle variazioni è disponibile solo nella <a "
409
+ "href=\"%s\">versione pro</a>. Sarà presto disponibile anche nella versione "
410
+ "gratuita."
411
+
412
+ #: includes/Settings.php:453
413
+ msgid "Search in attributes"
414
+ msgstr "Cerca negli attributi"
415
+
416
+ #: includes/Settings.php:460
417
+ msgid "Exclude 'out of stock' products"
418
+ msgstr "Escludi prodotti esauriti"
419
+
420
+ #: includes/Settings.php:468
421
+ msgid "Pro features"
422
+ msgstr "Funzionalità Pro"
423
+
424
+ #: includes/Settings.php:474
425
+ msgid "Fuzziness"
426
+ msgstr "Logica \"fuzzy\""
427
+
428
+ #: includes/Settings.php:480
429
+ msgid "Speed up search!"
430
+ msgstr "Velocizza ricerca!"
431
+
432
+ #: includes/Settings.php:487
433
+ msgid ""
434
+ "<strong>Increases sales conversions.</strong> Returns sugestions based on "
435
+ "likely relevance even though a search keyword may not exactly match. E.g if "
436
+ "you type \"ipho<b>m</b>e\" you get the same results as for \"iphone\""
437
+ msgstr ""
438
+ "<strong>Aumenta le conversioni di vendita.</strong> Mostra suggerimenti "
439
+ "basati su rilevanza probabile anche se una chiave di ricerca non dovesse "
440
+ "corrispondere esattamente. Es. se dovessi scrivere \"ipho<b>m</b>e\" avresti "
441
+ "gli stessi risultati di \"iphone\""
442
+
443
+ #: includes/Settings.php:493
444
+ msgid "Profits"
445
+ msgstr "Profitti"
446
+
447
+ #: includes/Settings.php:500 includes/Settings.php:532
448
+ msgid "Fuzzy matching"
449
+ msgstr "Corrispondenza \"fuzzy\""
450
+
451
+ #: includes/Settings.php:505 includes/Settings.php:537
452
+ msgid "-- Disabled"
453
+ msgstr "-- Disabilitato"
454
+
455
+ #: includes/Settings.php:506 includes/Settings.php:538
456
+ msgid "Soft"
457
+ msgstr "Leggera"
458
+
459
+ #: includes/Settings.php:507 includes/Settings.php:539
460
+ msgid "Normal"
461
+ msgstr "Normale"
462
+
463
+ #: includes/Settings.php:508 includes/Settings.php:540
464
+ msgid "Hard"
465
+ msgstr "Forte"
466
+
467
+ #: includes/Settings.php:518
468
+ msgid "Select the database"
469
+ msgstr ""
470
+
471
+ #: includes/Settings.php:522
472
+ msgid "SQLite"
473
+ msgstr ""
474
+
475
+ #: includes/Settings.php:523
476
+ msgid "MySQL"
477
+ msgstr ""
478
+
479
+ #: includes/Settings.php:552 includes/Settings.php:560
480
+ msgid "Index status"
481
+ msgstr "Stato indice"
482
+
483
+ #: includes/BackwardCompatibility.php:338 partials/admin/indexer-header.php:21
484
+ msgid "Troubleshooting"
485
+ msgstr "Risoluzione problemi"
486
+
487
+ #: includes/BackwardCompatibility.php:339
488
+ msgid "troubleshooting"
489
+ msgstr "risoluzione problemi"
490
+
491
+ #: includes/BackwardCompatibility.php:348
492
+ msgid "<span style=\"color:#9b5c8f\">Complete the update process</span>"
493
+ msgstr ""
494
+ "<span style=\"color:#9b5c8f\">Completa il processo di aggiornamento</span>"
495
+
496
+ #: includes/BackwardCompatibility.php:348
497
+ msgid ""
498
+ "In the last update we have changed the AJAX search form on the frontend (CSS "
499
+ "styles, names of the HTML classes etc.). You have to check if the AJAX "
500
+ "search form looks correct with your theme after these changes."
501
+ msgstr ""
502
+ "Nell'ultimo update abbiamo cambiato il modulo di ricerca AJAX nel frontend "
503
+ "(stili CSS, nomi delle classi HTML etc.). Devi controllare se il modulo di "
504
+ "ricerca AJAX appare corretto nel tuo tema dopo queste modifiche."
505
+
506
+ #: includes/BackwardCompatibility.php:356
507
+ msgid "What should you do now?"
508
+ msgstr "Cosa dovresti fare adesso?"
509
+
510
+ #: includes/BackwardCompatibility.php:359
511
+ msgid ""
512
+ "Switch manually to the latest version to check if the AJAX search form "
513
+ "displays correctly with your theme"
514
+ msgstr ""
515
+ "Passa manualmente all'ultima versione per verificare se il modulo di ricerca "
516
+ "AJAX appare correttamente nel tuo tema"
517
+
518
+ #: includes/BackwardCompatibility.php:364
519
+ msgid "You have activated the latest version. Follow the steps below:"
520
+ msgstr "Hai attivato l'ultima versione. Segui questi passi :"
521
+
522
+ #: includes/BackwardCompatibility.php:367
523
+ #, php-format
524
+ msgid "Visit your <a target=\"_blank\" href=\"%s\">store</a>"
525
+ msgstr "Visita il tuo <a target=\"_blank\" href=\"%s\">negozio</a>"
526
+
527
+ #: includes/BackwardCompatibility.php:368
528
+ msgid "Check if the AJAX search form displays correctly"
529
+ msgstr "Controlla se il modulo AJAX appare correttamente"
530
+
531
+ #: includes/BackwardCompatibility.php:369
532
+ #, php-format
533
+ msgid "If it is ok, click %s"
534
+ msgstr "Se va bene, clicca %s"
535
+
536
+ #: includes/BackwardCompatibility.php:369
537
+ msgid "finish the update"
538
+ msgstr "completa l'aggiornamento"
539
+
540
+ #: includes/BackwardCompatibility.php:370
541
+ #, php-format
542
+ msgid "If not, switch back to <code>previous version %s</code> and see %s"
543
+ msgstr ""
544
+ "Altrimenti, ritorna alla <code> versione precedente %s</code> e guarda %s"
545
+
546
+ #: includes/BackwardCompatibility.php:377
547
+ msgid "Version switcher"
548
+ msgstr "Cambio versione"
549
+
550
+ #: includes/BackwardCompatibility.php:378
551
+ msgid "Something went wrong. Refresh the page and try again."
552
+ msgstr "Qualcosa è andato storto. Aggiorna la pagina e prova di nuovo."
553
+
554
+ #: includes/BackwardCompatibility.php:379
555
+ msgid "Saved!"
556
+ msgstr "Salvato!"
557
+
558
+ #: includes/BackwardCompatibility.php:381
559
+ msgid "previous version"
560
+ msgstr "versione precedente"
561
+
562
+ #: includes/BackwardCompatibility.php:388
563
+ msgid "latest version"
564
+ msgstr "versione più recente"
565
+
566
+ #: includes/BackwardCompatibility.php:395
567
+ #, php-format
568
+ msgid ""
569
+ "If the AJAX search form displays incorrectly after switching to the latest "
570
+ "version, see the %s"
571
+ msgstr ""
572
+ "Se il modulo di ricerca AJAX viene mostrato in modo non corretto dopo essere "
573
+ "passati all'ultima versione, vedi %s"
574
+
575
+ #: includes/BackwardCompatibility.php:402
576
+ msgid ""
577
+ "Your AJAX search form does not display correctly after manual switching to "
578
+ "the latest version."
579
+ msgstr ""
580
+ "Il tuo modulo di ricerca AJAX non appare correttamente dopo essere passato "
581
+ "manualmente all'ultima versione."
582
+
583
+ #: includes/BackwardCompatibility.php:406
584
+ msgid ""
585
+ "Probably your theme uses additional CSS styles to customize the appearance "
586
+ "of the AJAX search form. Contact the authors of your theme. Maybe they have "
587
+ "to update their CSS styles if necessary."
588
+ msgstr ""
589
+ "Probabilmente il tuo tema usa CSS aggiuntivo per personalizzare l'aspetto "
590
+ "del modulo di ricerca AJAX. Contatta gli autori del tuo tema. Forse devono "
591
+ "aggiornare i loro stili CSS se necessario."
592
+
593
+ #: includes/BackwardCompatibility.php:412
594
+ msgid "Your Theme Details"
595
+ msgstr "I dettagli del tuo tema"
596
+
597
+ #: includes/BackwardCompatibility.php:417
598
+ msgctxt "Wordpress theme name"
599
+ msgid "Name:"
600
+ msgstr "Nome: [ Nome tema WordPress ]"
601
+
602
+ #: includes/BackwardCompatibility.php:432
603
+ msgid "Author:"
604
+ msgstr "Autore:"
605
+
606
+ #: includes/BackwardCompatibility.php:449
607
+ msgid "A sample e-mail message that you can send them:"
608
+ msgstr "Un esempio di e-mail che puoi mandare loro:"
609
+
610
+ #: includes/BackwardCompatibility.php:454
611
+ #, php-format
612
+ msgid ""
613
+ "Hello,\n"
614
+ " <br /><br />\n"
615
+ " I use your %s theme with AJAX Search for WooCommerce "
616
+ "plugin - (https://wordpress.org/plugins/ajax-search-for-woocommerce/)\n"
617
+ " <br /><br />\n"
618
+ " In the lates version of AJAX Search for WooCommerce %s "
619
+ "they have changed the search form on the frontend (CSS, HTML etc.).\n"
620
+ " <br /><br />\n"
621
+ " Could you check it and update your CSS if necessary?"
622
+ msgstr ""
623
+ "Salve,\n"
624
+ " <br /><br />\n"
625
+ " Uso il vostro tema %s con il plugin AJAX Search for "
626
+ "WooCommerce - (https://wordpress.org/plugins/ajax-search-for-woocommerce/)\n"
627
+ " <br /><br />\n"
628
+ " Nella versione più recente di AJAX Search for "
629
+ "WooCommerce %s hanno modificato il modulo di ricerca nel frontend (CSS, HTML "
630
+ "etc.).\n"
631
+ " <br /><br />\n"
632
+ " Potete controllarlo e aggiornare il vostro CSS se "
633
+ "necessario?"
634
+
635
+ #: includes/BackwardCompatibility.php:470
636
+ msgid ""
637
+ "If you have any questions, do not hesitate contact <a href=\"mailto:"
638
+ "dgoraplugins@gmail.com?subject=Ajax Search for WooCommerce - Update "
639
+ "problem\">our support </a> or <a href=\"https://wordpress."
640
+ "org/support/plugin/ajax-search-for-woocommerce\" target=\"_blank\">write on "
641
+ "the WordPress.org Support</a>."
642
+ msgstr ""
643
+ "Se avete qualsiasi domanda non esitate a contattare <a href=\"mailto:"
644
+ "dgoraplugins@gmail.com?subject=Ajax Search for WooCommerce - Update "
645
+ "problem\">il nostro supporto</a> o <a href=\"https://wordpress."
646
+ "org/support/plugin/ajax-search-for-woocommerce\" target=\"_blank\">scrivete "
647
+ "alla nostra pagina supporto su WordPress.org</a>."
648
+
649
+ #: includes/BackwardCompatibility.php:477
650
+ msgid "Remind me later"
651
+ msgstr "Ricordamelo in seguito"
652
+
653
+ #: includes/Scripts.php:34
654
+ msgctxt "For product badge: on sale"
655
+ msgid "sale"
656
+ msgstr "offerta [ Per etichetta prodotto: in offerta ]"
657
+
658
+ #: includes/Scripts.php:35
659
+ msgctxt "For product badge: featured"
660
+ msgid "featured"
661
+ msgstr "in evidenza [Per etichetta prodotto: in evidenza ]"
662
+
663
+ #: includes/Scripts.php:36 includes/Engines/WordPressNative/DetailsBox.php:168
664
+ msgid "Category"
665
+ msgstr "Categoria"
666
+
667
+ #: includes/Scripts.php:37
668
+ msgid "tag"
669
+ msgstr "tag"
670
+
671
+ #: includes/Scripts.php:38
672
+ msgid "SKU:"
673
+ msgstr "COD/SKU:"
674
+
675
+ #: includes/Scripts.php:64
676
+ msgctxt "in categories fe. in Books > Crime stories"
677
+ msgid "in"
678
+ msgstr "in"
679
+
680
+ #: partials/admin/indexer-header.php:8
681
+ #, php-format
682
+ msgid "Indexed <strong>100&#37;</strong>, <strong>%d products</strong>."
683
+ msgstr ""
684
+
685
+ #: partials/admin/indexer-header.php:12
686
+ #, php-format
687
+ msgid "Last build %s"
688
+ msgstr ""
689
+
690
+ #: partials/admin/indexer-header.php:13
691
+ msgid "All products changes will be <strong>re-indexed automatically</strong>"
692
+ msgstr ""
693
+
694
+ #: partials/admin/indexer-header.php:24
695
+ #, php-format
696
+ msgid "First try to <a class=\"%s\" href=\"#\">build the index again</a>"
697
+ msgstr ""
698
+
699
+ #: partials/admin/indexer-header.php:25
700
+ #, php-format
701
+ msgid ""
702
+ "Go to <a target=\"_blank\" href=\"%s\">WooCommerce -> Status -> section "
703
+ "\"AJAX Search for WooCommerce Pro\"</a>. Is everything green?"
704
+ msgstr ""
705
+
706
+ #: partials/admin/indexer-header.php:26
707
+ #, php-format
708
+ msgid ""
709
+ "Go to <a target=\"_blank\" href=\"%s\">WooCommerce -> Status -> Logs (tab)"
710
+ "</a>. Open last \"fatal-errors...\". Look for a phrase \"ajax-search-for-"
711
+ "woocommerce\". Did you find anything significant?"
712
+ msgstr ""
713
+
714
+ #: partials/admin/indexer-header.php:27
715
+ #, php-format
716
+ msgid ""
717
+ "Is it still not working? Write a <a target=\"_blank\" href=\"%s\">support "
718
+ "request</a>."
719
+ msgstr ""
720
+
721
+ #: partials/admin/indexer-header.php:36
722
+ #: partials/admin/indexer-header-demo.php:8
723
+ msgid "Show details"
724
+ msgstr "Mostra dettagli"
725
+
726
+ #: partials/admin/indexer-header.php:37
727
+ msgid "Hide details"
728
+ msgstr ""
729
+
730
+ #: partials/admin/indexer-body.php:6
731
+ msgid ""
732
+ "Indexing... This process will continue in the background. You can leave this "
733
+ "page."
734
+ msgstr ""
735
+
736
+ #: partials/admin/indexer-body.php:8
737
+ msgid "Index build progress"
738
+ msgstr ""
739
+
740
+ #: partials/admin/indexer-body.php:11
741
+ #, php-format
742
+ msgid "Finalization... Wait a moment. (%s products)"
743
+ msgstr ""
744
+
745
+ #: partials/admin/indexer-body.php:15
746
+ msgid "Cancellation..."
747
+ msgstr ""
748
+
749
+ #: partials/admin/indexer-body.php:32
750
+ msgid "Build ID"
751
+ msgstr ""
752
+
753
+ #: partials/admin/indexer-body.php:36
754
+ msgid "DB"
755
+ msgstr ""
756
+
757
+ #: partials/admin/indexer-body.php:40
758
+ msgid "Index build start"
759
+ msgstr ""
760
+
761
+ #: partials/admin/indexer-body.php:44
762
+ msgid "Status"
763
+ msgstr ""
764
+
765
+ #: partials/admin/indexer-body.php:48
766
+ msgid "Products"
767
+ msgstr ""
768
+
769
+ #: partials/admin/indexer-body.php:52
770
+ msgid "Searchable"
771
+ msgstr ""
772
+
773
+ #: partials/admin/indexer-body.php:56 partials/admin/indexer-body.php:79
774
+ #: partials/admin/indexer-body.php:104
775
+ msgid "Start"
776
+ msgstr ""
777
+
778
+ #: partials/admin/indexer-body.php:60 partials/admin/indexer-body.php:83
779
+ #: partials/admin/indexer-body.php:108
780
+ msgid "End"
781
+ msgstr ""
782
+
783
+ #: partials/admin/indexer-body.php:65 partials/admin/indexer-body.php:88
784
+ #: partials/admin/indexer-body.php:113
785
+ msgid "Time"
786
+ msgstr ""
787
+
788
+ #: partials/admin/indexer-body.php:74
789
+ msgid "Readable"
790
+ msgstr ""
791
+
792
+ #: partials/admin/indexer-body.php:99
793
+ msgid "Taxonomies"
794
+ msgstr ""
795
+
796
+ #: partials/admin/indexer-body.php:127
797
+ msgid "Logs"
798
+ msgstr ""
799
+
800
+ #: partials/admin/pro-starter.php:8
801
+ msgid ""
802
+ "You are using the Pro plugin version. Your customers will find the right "
803
+ "products <span>faster and simpler</span> and your sales will increase."
804
+ msgstr ""
805
+
806
+ #: partials/admin/pro-starter.php:14
807
+ #, php-format
808
+ msgid ""
809
+ "If you have any questions, do not hesitate to <a target=\"_blank\" "
810
+ "href=\"%s\">get in touch</a>."
811
+ msgstr ""
812
+
813
+ #: partials/admin/settings.php:12
814
+ msgid "AJAX Search for WooCommerce (PRO) Settings"
815
+ msgstr "Ricerca AJAX per WooCommerce (PRO) Impostazioni"
816
+
817
+ #: partials/admin/settings.php:14
818
+ msgid "AJAX Search for WooCommerce Settings"
819
+ msgstr "Ricerca AJAX per WooCommerce Impostazioni"
820
+
821
+ #: partials/admin/indexer-header-demo.php:3
822
+ #: includes/Engines/TNTSearch/Indexer/Buildier.php:414
823
+ #: includes/Engines/TNTSearchMySQL/Indexer/Buildier.php:398
824
+ msgid "The search index does not exist yet. Build it now."
825
+ msgstr "L'indice di ricerca non esiste ancora. Costruiscilo adesso."
826
+
827
+ #: partials/admin/indexer-header-demo.php:7
828
+ #: includes/Engines/TNTSearch/Indexer/Buildier.php:443
829
+ #: includes/Engines/TNTSearchMySQL/Indexer/Buildier.php:430
830
+ msgid "Build index"
831
+ msgstr "Costruisci indice"
832
+
833
+ #: partials/admin/how-to-use.php:10
834
+ msgid "There are two easy ways to display the search form"
835
+ msgstr "Ci sono due facili modi di mostrare il modulo di ricerca"
836
+
837
+ #: partials/admin/how-to-use.php:11
838
+ #, php-format
839
+ msgid "Use a shortcode %s"
840
+ msgstr "Usare lo shortcode %s"
841
+
842
+ #: partials/admin/how-to-use.php:12
843
+ #, php-format
844
+ msgid "Go to the %s and choose \"Woo AJAX Search\""
845
+ msgstr "Andare allo %s e selezionare \"Ricerca Ajax Woo\""
846
+
847
+ #: partials/admin/how-to-use.php:12
848
+ msgid "Widgets Screen"
849
+ msgstr "Schermo Widget"
850
+
851
+ #: partials/admin/how-to-use.php:14
852
+ #, php-format
853
+ msgid ""
854
+ "Are there any difficulties? <a href=\"%s\">Upgrade now</a> and our "
855
+ "developers will do everything for you."
856
+ msgstr ""
857
+ "Avete delle difficoltà? <a href=\"%s\">Eseguite ora l'Upgrade</a> e i nostri "
858
+ "sviluppatori imposteranno tutto per voi."
859
+
860
+ #: partials/admin/system-status.php:5
861
+ msgid "Ajax Search for WooCommerce (Pro)"
862
+ msgstr ""
863
+
864
+ #: partials/admin/system-status.php:6
865
+ msgid "This section shows the plugin requirements."
866
+ msgstr ""
867
+
868
+ #: partials/admin/system-status.php:12
869
+ msgid "PHP extension (mbstring)"
870
+ msgstr ""
871
+
872
+ #: partials/admin/system-status.php:29
873
+ msgid "PHP extension (pdo_mysql)"
874
+ msgstr ""
875
+
876
+ #: partials/admin/system-status.php:46
877
+ msgid "PHP extension (sqlite3)"
878
+ msgstr ""
879
+
880
+ #: partials/admin/system-status.php:61
881
+ msgid "PHP extension (pdo_sqlite)"
882
+ msgstr ""
883
+
884
+ #: partials/admin/system-status.php:76
885
+ msgid "Index directory test"
886
+ msgstr ""
887
+
888
+ #: partials/admin/system-status.php:93
889
+ msgid "Default upload path"
890
+ msgstr ""
891
+
892
+ #: partials/admin/system-status.php:96
893
+ msgid "At this moment the plugin works only with default upload directory."
894
+ msgstr ""
895
+
896
+ #: partials/admin/system-status.php:113
897
+ msgid "DB readable tables exist"
898
+ msgstr ""
899
+
900
+ #: partials/admin/system-status.php:134
901
+ msgid "Finding wp-load.php from outside"
902
+ msgstr ""
903
+
904
+ #: partials/admin/system-status.php:143
905
+ msgid "The location of wp-load.php is not the default."
906
+ msgstr ""
907
+
908
+ #: partials/admin/system-status.php:158
909
+ msgid "Multisite"
910
+ msgstr ""
911
+
912
+ #: partials/admin/system-status.php:161
913
+ msgid ""
914
+ "The Ajax Search for WooCommerce (Pro) does not support multisite yet. "
915
+ "Multisite must be disabled."
916
+ msgstr ""
917
+
918
+ #: partials/admin/system-status.php:166
919
+ msgid "disabled"
920
+ msgstr ""
921
+
922
+ #: partials/admin/system-status.php:168
923
+ msgid "enabled"
924
+ msgstr ""
925
+
926
+ #: partials/admin/system-status.php:175
927
+ msgid "Conflicts with other plugins"
928
+ msgstr ""
929
+
930
+ #: partials/admin/system-status.php:178
931
+ msgid ""
932
+ "The Ajax Search for WooCommerce (Pro) does not support multilanguages yet."
933
+ msgstr ""
934
+
935
+ #: partials/admin/system-status.php:184
936
+ msgid "no"
937
+ msgstr ""
938
+
939
+ #: partials/admin/features.php:8
940
+ msgid ""
941
+ "If users can’t find the product they’re searching for, they can’t buy it. "
942
+ "Help your customers to find the right products <span>faster and "
943
+ "simpler</span>."
944
+ msgstr ""
945
+ "Se gli utenti non riescono a trovare il prodotto che cercano non possono "
946
+ "comprarlo. Aiuta i tuoi clienti a trovare i prodotti giusti in modo <span>"
947
+ "più veloce e più semplice</span>."
948
+
949
+ #: partials/admin/features.php:10 includes/Admin/Promo/Upgrade.php:62
950
+ msgid ""
951
+ "Update now and increase your sales. You will receive 14-day satisfaction "
952
+ "guarantee. A return on investment will come very quickly."
953
+ msgstr ""
954
+ "Esegui l'upgrade e aumenta le tue vendite. Riceverai una garanzia "
955
+ "soddisfatti o rimborsati di 14 giorni. Un rendimento sull'investimento "
956
+ "arriverà molto in fretta!"
957
+
958
+ #: partials/admin/features.php:13
959
+ msgid "Speed up search! (even <b>10x faster</b>) - users love it!"
960
+ msgstr "Velocizza la ricerca! (fino a 10x più veloce) - gli utenti lo adorano!"
961
+
962
+ #: partials/admin/features.php:14
963
+ msgid ""
964
+ "Help in embedding the search form in your theme. <b>Our developers will do "
965
+ "it for you</b>."
966
+ msgstr ""
967
+ "Aiuto per incorporare il modulo di ricerca nel tuo tema. <b>I nostri "
968
+ "sviluppatori lo faranno per te</b>."
969
+
970
+ #: partials/admin/features.php:15
971
+ msgid ""
972
+ "Efficient with a large number of products. Tested on <b>20 000 products</b>"
973
+ msgstr ""
974
+ "Efficiente con un grande numero di prodotti. Testato su <b>20 000 "
975
+ "prodotti</b>"
976
+
977
+ #: partials/admin/features.php:16 includes/Admin/Promo/Upgrade.php:51
978
+ msgid "New modern search engine based on bm25 ranking algorithm"
979
+ msgstr "Nuovo motore di ricerca moderno basato sull'algoritmo di ranking bm25"
980
+
981
+ #: partials/admin/features.php:17 includes/Admin/Promo/Upgrade.php:52
982
+ msgid "Fuzzy search"
983
+ msgstr "Ricerca \"Fuzzy\""
984
+
985
+ #: partials/admin/features.php:18
986
+ msgid "Search in variation products SKUs (option)"
987
+ msgstr "Opzione ricerca in COD/SKU delle variazioni prodotto"
988
+
989
+ #: partials/admin/features.php:19
990
+ msgid "Search in product attributes (option)"
991
+ msgstr "Opzione ricerca in attributi prodotto"
992
+
993
+ #: partials/admin/features.php:20
994
+ msgid "Advanced search analytics and tips (in plans)"
995
+ msgstr "Analisi avanzata ricerca e suggerimenti (in pianificazione)"
996
+
997
+ #: partials/admin/features.php:21 includes/Admin/Promo/Upgrade.php:54
998
+ msgid "Individual customization of the search form (simple CSS improvements)"
999
+ msgstr ""
1000
+ "Personalizzazione individuale del modulo di ricerca (semplici miglioramenti "
1001
+ "CSS)"
1002
+
1003
+ #: partials/admin/features.php:22
1004
+ msgid "Individual tips and support"
1005
+ msgstr "Suggerimenti e supporto individuali"
1006
+
1007
+ #: partials/admin/features.php:23
1008
+ msgid "And more..."
1009
+ msgstr "E altro..."
1010
+
1011
+ #: partials/admin/features.php:25
1012
+ msgid "Upgrade Now!"
1013
+ msgstr "Esegui ora l'upgrade!"
1014
+
1015
+ #: includes/Admin/AdminMenu.php:31
1016
+ msgid "Ajax Search for WooCommerce"
1017
+ msgstr "Ajax Search per WooCommerce"
1018
+
1019
+ #: includes/Admin/AdminMenu.php:32
1020
+ msgid "AJAX search form"
1021
+ msgstr "Modulo ricerca AJAX"
1022
+
1023
+ #: includes/Admin/SettingsAPI.php:572
1024
+ msgid "Contact"
1025
+ msgstr "Contatta"
1026
+
1027
+ #: includes/Admin/SettingsAPI.php:575
1028
+ msgid "My Account"
1029
+ msgstr ""
1030
+
1031
+ #: includes/Admin/Requirements.php:60
1032
+ #, php-format
1033
+ msgid "Required PHP version 5.5 or higher. You use %s"
1034
+ msgstr "Versione PHP richiesta 5.5 o superiore. Stai usando %s"
1035
+
1036
+ #: includes/Admin/Requirements.php:79 includes/Admin/Requirements.php:84
1037
+ #: includes/Admin/Requirements.php:89 includes/Admin/Requirements.php:94
1038
+ #, php-format
1039
+ msgid "Required PHP extension: %s"
1040
+ msgstr "Estensione PHP richiesta: %s"
1041
+
1042
+ #: includes/Admin/Requirements.php:128
1043
+ #, php-format
1044
+ msgid "Problem with permission for the directory: %s"
1045
+ msgstr "Problema con i permessi nella directory: %s"
1046
+
1047
+ #: includes/Admin/Requirements.php:181
1048
+ #, php-format
1049
+ msgid ""
1050
+ "You use the %s plugin. The Ajax Search for WooCommerce PRO does not support "
1051
+ "multilingual yet."
1052
+ msgstr ""
1053
+ "Stai usando il plugin %s. Ricerca Ajax per WooCommerce PRO non supporta "
1054
+ "ancora il multilingua."
1055
+
1056
+ #: includes/Admin/Requirements.php:205
1057
+ msgid ""
1058
+ "Your WordPress use the multisite. The Ajax Search for WooCommerce PRO does "
1059
+ "not support multisite yet."
1060
+ msgstr ""
1061
+ "La tua installazione WordPress usa multisite. Ricerca Ajax per WooCommerce "
1062
+ "PRO non supporta ancora il multisite."
1063
+
1064
+ #: includes/Admin/Requirements.php:222
1065
+ msgid "Attention! Read this before the upgrade."
1066
+ msgstr "Attenzione! Leggi questo prima dell'upgrade."
1067
+
1068
+ #: includes/Admin/Requirements.php:223
1069
+ msgid ""
1070
+ "Ajax Search for WooCommerce PRO may not work properly in your environment "
1071
+ "for the following reasons:"
1072
+ msgstr ""
1073
+ "Ricerca Ajax per WooCommerce PRO potrebbe non funzionare correttamente nel "
1074
+ "tuo ambiente per le seguenti ragioni:"
1075
+
1076
+ #: includes/Admin/Requirements.php:233
1077
+ msgid "Ajax Search for WooCommerce PRO - Requirements"
1078
+ msgstr "Ricerca AJAX per WooCommerce - Requisiti"
1079
+
1080
+ #: includes/Admin/Requirements.php:234
1081
+ #, php-format
1082
+ msgid ""
1083
+ "If you have any questions, do not hesitate contact <a href=\"%s\">our "
1084
+ "support</a>."
1085
+ msgstr ""
1086
+ "Se hai qualsiasi domanda non esitare a contattare <a href=\"%s\">il nostro "
1087
+ "supporto</a>."
1088
+
1089
+ #: includes/Engines/WordPressNative/DetailsBox.php:170
1090
+ msgid "Tag"
1091
+ msgstr "Tag"
1092
+
1093
+ #: includes/Integrations/Themes/Storefront.php:28
1094
+ msgid "Storefront theme"
1095
+ msgstr "Tema Storefront"
1096
+
1097
+ #: includes/Integrations/Themes/Storefront.php:35
1098
+ msgid "Replace search form"
1099
+ msgstr "Sostituisci il modulo di ricerca"
1100
+
1101
+ #: includes/Integrations/Themes/Storefront.php:36
1102
+ msgid ""
1103
+ "Replace the Storefront theme's default product search with the Ajax Search "
1104
+ "for WooCommerce form."
1105
+ msgstr ""
1106
+ "Sostituisci il modulo di ricerca di default del tema Storefront con il "
1107
+ "modulo di Ricerca Ajax per WooCommerce"
1108
+
1109
+ #: includes/Admin/Promo/Upgrade.php:50
1110
+ msgid "Speed up search! (even 10x faster) - users love it!"
1111
+ msgstr "Velocizza la ricerca! (fino a 10x più veloce) - gli utenti lo adorano!"
1112
+
1113
+ #: includes/Admin/Promo/Upgrade.php:53
1114
+ msgid "Search in attributes and variation products SKUs (option)"
1115
+ msgstr "Opzione di ricerca in attributi e COD/SKU variazioni prodotto"
1116
+
1117
+ #: includes/Admin/Promo/Upgrade.php:55
1118
+ msgid "Individual tips and support by Damian Góra - the author of the plugin"
1119
+ msgstr ""
1120
+ "Suggerimenti e supporto individuale da Damian Góra - l'autore del plugin"
1121
+
1122
+ #: includes/Admin/Promo/Upgrade.php:56
1123
+ msgid "and more..."
1124
+ msgstr "e altro..."
1125
+
1126
+ #: includes/Admin/Promo/Upgrade.php:58
1127
+ msgid "Ajax Search for WooCommerce PRO - Upgrade Now"
1128
+ msgstr "Ricerca Ajax per WooCommerce PRO - Esegui ora l'upgrade"
1129
+
1130
+ #: includes/Admin/Promo/Upgrade.php:68
1131
+ msgid "You can upgrade without leaving the admin panel by clicking below."
1132
+ msgstr ""
1133
+ "Puoi eseguire l'upgrade senza abbandonare il pannello di amministrazione "
1134
+ "cliccando sotto."
1135
+
1136
+ #: includes/Admin/Promo/Upgrade.php:69
1137
+ msgid "Free updates and email support included."
1138
+ msgstr "Aggiornamenti gratuiti e supporto email compresi."
1139
+
1140
+ #: includes/Admin/Promo/Upgrade.php:70
1141
+ msgid "Upgrade Now"
1142
+ msgstr "Esegui ora l'upgrade"
1143
+
1144
+ #: includes/Admin/Promo/FeedbackNotice.php:72
1145
+ #, php-format
1146
+ msgid ""
1147
+ "Hey %s, it's Damian Góra from %s. You have used this free plugin for some "
1148
+ "time now, and I hope you like it!"
1149
+ msgstr ""
1150
+ "Hey %s, sono Damian Góra di %s. Hai usato questo plugin gratuito per un po' "
1151
+ "di tempo ormai e spero che ti piaccia!"
1152
+
1153
+ #: includes/Admin/Promo/FeedbackNotice.php:77
1154
+ #, php-format
1155
+ msgid ""
1156
+ "I have spent countless hours developing it, and it would mean a lot to me if "
1157
+ "you %ssupport it with a quick review on WordPress.org.%s"
1158
+ msgstr ""
1159
+ "Ho passato innumerevoli ore a svilupparlo e per me vorrebbe dire molto se "
1160
+ "potessi %ssostenerlo con una veloce recensione su WordPress.org.%s"
1161
+
1162
+ #: includes/Admin/Promo/FeedbackNotice.php:83
1163
+ #, php-format
1164
+ msgid "Review %s"
1165
+ msgstr "Recensisci %s"
1166
+
1167
+ #: includes/Admin/Promo/FeedbackNotice.php:87
1168
+ msgid "No thanks"
1169
+ msgstr "No grazie"
1170
+
1171
+ #: includes/Engines/TNTSearch/Indexer/Buildier.php:149
1172
+ #: includes/Engines/TNTSearchMySQL/Indexer/Buildier.php:151
1173
+ msgctxt "Admin, logs"
1174
+ msgid ""
1175
+ "The request to build a new index rejected. Another process is in progress."
1176
+ msgstr ""
1177
+
1178
+ #: includes/Engines/TNTSearch/Indexer/Buildier.php:155
1179
+ #: includes/Engines/TNTSearch/Indexer/Buildier.php:318
1180
+ #: includes/Engines/TNTSearchMySQL/Indexer/Buildier.php:159
1181
+ #: includes/Engines/TNTSearchMySQL/Indexer/Buildier.php:302
1182
+ msgctxt "Admin, logs"
1183
+ msgid "There are no tables in the database"
1184
+ msgstr ""
1185
+
1186
+ #: includes/Engines/TNTSearch/Indexer/Buildier.php:163
1187
+ #: includes/Engines/TNTSearchMySQL/Indexer/Buildier.php:168
1188
+ msgctxt "Admin, logs"
1189
+ msgid "Indexer started"
1190
+ msgstr ""
1191
+
1192
+ #: includes/Engines/TNTSearch/Indexer/Buildier.php:183
1193
+ #: includes/Engines/TNTSearch/Indexer/Buildier.php:202
1194
+ #: includes/Engines/TNTSearchMySQL/Indexer/Buildier.php:192
1195
+ msgctxt "Admin, logs"
1196
+ msgid "[Readable index] Building..."
1197
+ msgstr ""
1198
+
1199
+ #: includes/Engines/TNTSearch/Indexer/Buildier.php:198
1200
+ #: includes/Engines/TNTSearch/Indexer/Readable/AsyncProcess.php:168
1201
+ #: includes/Engines/TNTSearchMySQL/Indexer/Readable/AsyncProcess.php:168
1202
+ msgctxt "Admin, logs"
1203
+ msgid "[Readable index] Completed"
1204
+ msgstr ""
1205
+
1206
+ #: includes/Engines/TNTSearch/Indexer/Buildier.php:209
1207
+ #: includes/Engines/TNTSearch/Indexer/Searchable/AsyncRequest.php:37
1208
+ #: includes/Engines/TNTSearchMySQL/Indexer/Searchable/AsyncRequest.php:37
1209
+ msgctxt "Admin, logs"
1210
+ msgid "[Searchable index] Building..."
1211
+ msgstr ""
1212
+
1213
+ #: includes/Engines/TNTSearch/Indexer/Buildier.php:220
1214
+ #: includes/Engines/TNTSearch/Indexer/Searchable/AsyncRequest.php:53
1215
+ #: includes/Engines/TNTSearchMySQL/Indexer/Searchable/AsyncRequest.php:53
1216
+ msgctxt "Admin, logs"
1217
+ msgid "[Searchable index] Completed"
1218
+ msgstr ""
1219
+
1220
+ #: includes/Engines/TNTSearch/Indexer/Buildier.php:393
1221
+ #: includes/Engines/TNTSearchMySQL/Indexer/Buildier.php:377
1222
+ msgid "Wait... Indexing in progress"
1223
+ msgstr ""
1224
+
1225
+ #: includes/Engines/TNTSearch/Indexer/Buildier.php:394
1226
+ #: includes/Engines/TNTSearchMySQL/Indexer/Buildier.php:378
1227
+ msgid "This process will continue in the background. You can leave this page!"
1228
+ msgstr ""
1229
+
1230
+ #: includes/Engines/TNTSearch/Indexer/Buildier.php:398
1231
+ #: includes/Engines/TNTSearchMySQL/Indexer/Buildier.php:382
1232
+ msgid "Wait... The index build process is canceling"
1233
+ msgstr ""
1234
+
1235
+ #: includes/Engines/TNTSearch/Indexer/Buildier.php:399
1236
+ #: includes/Engines/TNTSearchMySQL/Indexer/Buildier.php:383
1237
+ msgid "Canceling..."
1238
+ msgstr ""
1239
+
1240
+ #: includes/Engines/TNTSearch/Indexer/Buildier.php:404
1241
+ #: includes/Engines/TNTSearchMySQL/Indexer/Buildier.php:388
1242
+ msgid "The search index was built successfully."
1243
+ msgstr ""
1244
+
1245
+ #: includes/Engines/TNTSearch/Indexer/Buildier.php:405
1246
+ #: includes/Engines/TNTSearchMySQL/Indexer/Buildier.php:389
1247
+ msgid "Completed. Works."
1248
+ msgstr ""
1249
+
1250
+ #: includes/Engines/TNTSearch/Indexer/Buildier.php:409
1251
+ #: includes/Engines/TNTSearchMySQL/Indexer/Buildier.php:393
1252
+ msgid "The search index could not be built."
1253
+ msgstr ""
1254
+
1255
+ #: includes/Engines/TNTSearch/Indexer/Buildier.php:410
1256
+ #: includes/Engines/TNTSearchMySQL/Indexer/Buildier.php:394
1257
+ msgid "Errors"
1258
+ msgstr ""
1259
+
1260
+ #: includes/Engines/TNTSearch/Indexer/Buildier.php:415
1261
+ #: includes/Engines/TNTSearchMySQL/Indexer/Buildier.php:399
1262
+ msgid "Not exist"
1263
+ msgstr ""
1264
+
1265
+ #: includes/Engines/TNTSearch/Indexer/Buildier.php:437
1266
+ #: includes/Engines/TNTSearchMySQL/Indexer/Buildier.php:421
1267
+ msgid "Stop process"
1268
+ msgstr ""
1269
+
1270
+ #: includes/Engines/TNTSearch/Indexer/Buildier.php:439
1271
+ #: includes/Engines/TNTSearchMySQL/Indexer/Buildier.php:424
1272
+ msgid "Rebuild index"
1273
+ msgstr ""
1274
+
1275
+ #: includes/Engines/TNTSearch/Indexer/Buildier.php:441
1276
+ #: includes/Engines/TNTSearchMySQL/Indexer/Buildier.php:427
1277
+ msgid "Try to build the index again."
1278
+ msgstr ""
1279
+
1280
+ #: includes/Engines/TNTSearch/Indexer/Taxonomy/Indexer.php:199
1281
+ #: includes/Engines/TNTSearchMySQL/Indexer/Taxonomy/Indexer.php:199
1282
+ msgctxt "Admin, logs"
1283
+ msgid "[Taxonomy index] Cleared"
1284
+ msgstr ""
1285
+
1286
+ #: includes/Engines/TNTSearch/Indexer/Taxonomy/Indexer.php:201
1287
+ #: includes/Engines/TNTSearchMySQL/Indexer/Taxonomy/Indexer.php:201
1288
+ msgctxt "Admin, logs"
1289
+ msgid "[Taxonomy index] Can not be cleared"
1290
+ msgstr ""
1291
+
1292
+ #: includes/Engines/TNTSearch/Indexer/Taxonomy/Request.php:38
1293
+ #: includes/Engines/TNTSearchMySQL/Indexer/Taxonomy/Request.php:38
1294
+ #, php-format
1295
+ msgctxt "Admin, logs"
1296
+ msgid "[Taxonomy index] Building %s..."
1297
+ msgstr ""
1298
+
1299
+ #: includes/Engines/TNTSearch/Indexer/Taxonomy/Request.php:51
1300
+ #: includes/Engines/TNTSearchMySQL/Indexer/Taxonomy/Request.php:51
1301
+ #, php-format
1302
+ msgctxt "Admin, logs"
1303
+ msgid "[Taxonomy index] Completed: %s, Not indexed: %s"
1304
+ msgstr ""
1305
+
1306
+ #: includes/Engines/TNTSearch/Indexer/Searchable/Indexer.php:176
1307
+ #: includes/Engines/TNTSearchMySQL/Indexer/Searchable/Indexer.php:171
1308
+ msgctxt "Admin, logs"
1309
+ msgid "[Searchable index] Cleared"
1310
+ msgstr ""
1311
+
1312
+ #: includes/Engines/TNTSearch/Indexer/Searchable/Indexer.php:178
1313
+ msgctxt "Admin, logs"
1314
+ msgid "[Searchable index] Can not be cleared"
1315
+ msgstr ""
1316
+
1317
+ #: includes/Engines/TNTSearch/Indexer/Readable/Indexer.php:153
1318
+ #: includes/Engines/TNTSearchMySQL/Indexer/Readable/Indexer.php:153
1319
+ msgctxt "Admin, logs"
1320
+ msgid "[Readable index] Cleared"
1321
+ msgstr ""
1322
+
1323
+ #: includes/Engines/TNTSearch/Indexer/Readable/Indexer.php:155
1324
+ #: includes/Engines/TNTSearchMySQL/Indexer/Readable/Indexer.php:155
1325
+ msgctxt "Admin, logs"
1326
+ msgid "[Readable index] Can not be cleared"
1327
+ msgstr ""
1328
+
1329
+ #: includes/Engines/TNTSearch/Indexer/Readable/AsyncProcess.php:121
1330
+ #: includes/Engines/TNTSearchMySQL/Indexer/Readable/AsyncProcess.php:121
1331
+ #, php-format
1332
+ msgctxt "Admin, logs"
1333
+ msgid "[Readable index] The queue <code>%s</code> was deleted "
1334
+ msgstr ""
1335
+
1336
+ #: includes/Engines/TNTSearch/Indexer/Readable/AsyncProcess.php:134
1337
+ #: includes/Engines/TNTSearchMySQL/Indexer/Readable/AsyncProcess.php:134
1338
+ #, php-format
1339
+ msgctxt "Admin, logs"
1340
+ msgid "[Readable index] Schedule <code>%s</code> was created "
1341
+ msgstr ""
1342
+
1343
+ #: includes/Engines/TNTSearch/Indexer/Readable/AsyncProcess.php:150
1344
+ #: includes/Engines/TNTSearchMySQL/Indexer/Readable/AsyncProcess.php:150
1345
+ #, php-format
1346
+ msgctxt "Admin, logs"
1347
+ msgid "[Readable index] The queue <code>%s</code> was created"
1348
+ msgstr ""
1349
+
1350
+ #. Name of the plugin
1351
+ msgid "AJAX Search for WooCommerce MysQL"
1352
+ msgstr ""
1353
+
1354
+ #. Description of the plugin
1355
+ msgid ""
1356
+ "Allows your customers to search products easily and quickly. It will display "
1357
+ "the results instantly while typing in an inputbox."
1358
+ msgstr ""
1359
+
1360
+ #. URI of the plugin
1361
+ msgid "https://wordpress.org/plugins/ajax-search-for-woocommerce/"
1362
+ msgstr ""
1363
+
1364
+ #. Author of the plugin
1365
+ msgid "Damian Góra"
1366
+ msgstr ""
1367
+
1368
+ #. Author URI of the plugin
1369
+ msgid "http://damiangora.com"
1370
+ msgstr ""
languages/ajax-search-for-woocommerce-pl_PL.mo CHANGED
Binary file
languages/ajax-search-for-woocommerce-pl_PL.po CHANGED
@@ -2,413 +2,1289 @@ msgid ""
2
  msgstr ""
3
  "Project-Id-Version: Ajax Search for WooCommerce\n"
4
  "Report-Msgid-Bugs-To: \n"
5
- "POT-Creation-Date: 2017-09-02 23:59+0000\n"
6
- "PO-Revision-Date: 2017-09-03 12:16+0000\n"
7
  "Last-Translator: dev_nIXCkVKHG <admin@webtroter.pl>\n"
8
- "Language-Team: Polish\n"
9
- "Language: pl-PL\n"
10
  "Plural-Forms: nplurals=3; plural=(n==1 ? 0 : n%10 >= 2 && n%10<=4 "
11
- "&&(n%100<10||n%100 >= 20)? 1 : 2)\n"
12
  "MIME-Version: 1.0\n"
13
  "Content-Type: text/plain; charset=UTF-8\n"
14
  "Content-Transfer-Encoding: 8bit\n"
15
- "X-Generator: Loco - https://localise.biz/"
 
16
 
17
- #: ajax-search-for-woocommerce.php:111
18
- #, php-format
19
  msgid ""
20
- "<b>Ajax Search for WooCommerce</b> is enabled but not effective. It requires "
21
- "%s in order to work."
22
- msgstr ""
23
-
24
- #: includes/widget.php:21 includes/admin/admin-menus.php:23
25
- msgid "Woo Ajax Search"
26
- msgstr ""
27
-
28
- #. Name of the plugin
29
- #: includes/admin/admin-menus.php:23 includes/admin/views/settings.php:9
30
- msgid "Ajax Search for WooCommerce"
31
- msgstr ""
32
-
33
- #: includes/admin/settings/class-settings.php:376
34
- msgid "Preloader"
35
  msgstr ""
36
 
37
- #. Description of the plugin
38
  msgid ""
39
- "The plugin allows you to display the WooCommerce AJAX search form anywhere "
40
- "on the page."
41
  msgstr ""
42
 
43
- #. Author of the plugin
44
- msgid "Damian Góra"
 
 
 
45
  msgstr ""
46
 
47
- #. Author URI of the plugin
48
- msgid "http://damiangora.com"
 
 
49
  msgstr ""
50
 
51
- #: includes/admin/settings/class-settings.php:315
52
- msgid "Search input border"
53
- msgstr "Obramowanie inputa"
54
-
55
- #: includes/admin/settings/class-settings.php:321
56
- msgid "Search submit background"
57
- msgstr "Tło przycisku \"szukaj\""
58
-
59
- #: includes/admin/settings/class-settings.php:327
60
- msgid "Search submit text"
61
- msgstr "Tekst na przycisku \"szukaj\""
62
-
63
- #: includes/admin/settings/class-settings.php:333
64
- msgid "Suggestions"
65
- msgstr "Podpowiedzi"
66
-
67
- #: includes/admin/settings/class-settings.php:338
68
- msgid "Suggestion background"
69
- msgstr "Tło podpowiedzi"
70
-
71
- #: includes/admin/settings/class-settings.php:344
72
- msgid "Suggestion selected"
73
- msgstr "Tło zaznaczonej podpowiedzi"
74
-
75
- #: includes/admin/settings/class-settings.php:350
76
- msgid "Text color"
77
- msgstr "Kolor tekstu"
78
-
79
- #: includes/admin/settings/class-settings.php:356
80
- msgid "Highlight color"
81
- msgstr "Kolor podświetlenia"
82
-
83
- #: includes/admin/settings/class-settings.php:362
84
- msgid "Border color"
85
- msgstr "Kolor obramowania"
86
-
87
- #: includes/admin/settings/class-settings.php:368
88
- msgid "Suggestions width"
89
- msgstr "Szerokość pola z podpowiedziami"
90
-
91
- #: includes/admin/settings/class-settings.php:371
92
  msgid ""
93
- "Overvrite the suggestions container width. Leave this field empty to adjust "
94
- "the suggestions container width to the search input width."
95
  msgstr ""
96
- "Nadpisuje szerokość kontenera z podpowiedziami. Gdy zostawisz to pole puste, "
97
- "kontener zostanie automatycznie rozciągnięty do szerokości inputa "
98
- "wyszukiwarki."
99
-
100
- #: includes/admin/settings/class-settings.php:381
101
- msgid "Show preloader"
102
- msgstr "Pokaż preloader"
103
-
104
- #: includes/admin/settings/class-settings.php:387
105
- msgid "Upload preloader image"
106
- msgstr "Załaduj zdjęcie na preloader"
107
-
108
- #: includes/admin/views/how-to-use.php:2
109
- msgid "There are two easy ways to display the search form"
110
- msgstr "Wyszukiwarkę można wyświetlić na dwa sposoby"
111
-
112
- #: includes/admin/views/how-to-use.php:3
113
- #, php-format
114
- msgid "Use a shortcode %s"
115
- msgstr "Użyj shortcode %s"
116
-
117
- #: includes/admin/views/how-to-use.php:4
118
- #, php-format
119
- msgid "Go to the %s and choose \"Woo Ajax Search\""
120
- msgstr "Przejdź do %s i wybierz \"Woo Ajax Search\""
121
 
122
- #: includes/admin/views/how-to-use.php:4
123
- msgid "Widgets Screen"
124
- msgstr "Widoku widgetów"
125
-
126
- #: includes/admin/Promo/FeedbackNotice.php:68
127
- #, php-format
128
  msgid ""
129
- "Hey %s, it's Damian Góra from %s. You have used this free plugin for some "
130
- "time now, and I hope you like it!"
131
  msgstr ""
132
- "Cześć %s, tu Damian Góra z %s. Korzystasz z tej wyszukiwarki produktów od "
133
- "pewnego czasu i mam nadzieję że Ci się podoba!"
134
 
135
- #: includes/admin/Promo/FeedbackNotice.php:73
136
- #, php-format
137
- msgid ""
138
- "I have spent countless hours developing it, and it would mean a lot to me if "
139
- "you %ssupport it with a quick review on WordPress.org.%s"
140
  msgstr ""
141
- "Spędziłem wiele godzin na pisaniu tej wtyczki i potrzebuję motywacji do "
142
- "dalszego rozwoju wyszukiwarki. Byłbym bardzo szczęśliwy gdybyś %socenił/a "
143
- "moją wtyczkę na WordPress.org.%s Mała rzecz a cieszy :)"
144
 
145
- #: includes/admin/Promo/FeedbackNotice.php:79
146
  #, php-format
147
- msgid "Review %s"
148
- msgstr "Oceń teraz"
149
-
150
- #: includes/admin/Promo/FeedbackNotice.php:83
151
- msgid "No thanks"
152
- msgstr "Zamknij"
153
-
154
- #. URI of the plugin
155
- msgid "https://wordpress.org/plugins/ajax-search-for-woocommerce/"
156
- msgstr "https://pl.wordpress.org/plugins/ajax-search-for-woocommerce/"
157
-
158
- #: ajax-search-for-woocommerce.php:94
159
  msgid ""
160
- "<b>Ajax Search for WooCommerce</b>: You need PHP version at least 5.3 to run "
161
- "this plugin. You are currently using PHP version "
162
  msgstr ""
163
- "<b>Ajax Search for WooCommerce</b>: Wymagana wersja PHP do uruchomienia "
164
- "wtyczki to 5.3 lub wyższa. Aktualnie używasz wersji "
165
-
166
- #: includes/class-result-details.php:147
167
- msgid "Category"
168
- msgstr "Kategoria"
169
-
170
- #: includes/class-result-details.php:149
171
- msgid "Tag"
172
- msgstr "Tag"
173
-
174
- #: includes/class-search.php:167
175
- msgid "No results"
176
- msgstr "Brak wyników"
177
 
178
- #: includes/class-search.php:263 includes/class-search.php:314
179
- msgid "in"
180
- msgstr "w"
181
 
182
- #: includes/widget.php:19
183
- msgid "Ajax (live) search form for WooCommerce"
184
- msgstr "Ajaxowa wyszukiwarka produktów dla WooCommerce"
185
 
186
- #: includes/widget.php:26
187
  msgid "Title"
188
  msgstr "Tytuł"
189
 
190
- #: includes/register-scripts.php:28
191
- msgctxt "For product badge: on sale"
192
- msgid "sale"
193
- msgstr "sprzedaż"
194
-
195
- #: includes/register-scripts.php:29
196
- msgctxt "For product badge: featured"
197
- msgid "featured"
198
- msgstr "wyróżniony"
199
-
200
- #: includes/tmpl/search-form.php:19
201
  msgid "Products search"
202
  msgstr "Wyszukiwarka produktów"
203
 
204
- #: includes/tmpl/search-form.php:27
205
- #: includes/admin/settings/class-settings.php:139
206
  msgid "Search for products..."
207
  msgstr "Szukaj produktów"
208
 
209
- #: includes/admin/settings/class-settings.php:69
210
  msgid "Basic"
211
  msgstr "Podstawowe"
212
 
213
- #: includes/admin/settings/class-settings.php:73
214
- msgid "Advanced"
215
- msgstr "Zaawansowane"
 
 
 
 
 
 
 
 
 
 
 
 
216
 
217
- #: includes/admin/settings/class-settings.php:77
218
- msgid "Extra Details"
219
- msgstr "Dodatkowe szczegóły"
220
 
221
- #: includes/admin/settings/class-settings.php:81
222
- msgid "Style"
223
- msgstr "Styl"
224
 
225
- #: includes/admin/settings/class-settings.php:101
226
  msgid "How to use?"
227
  msgstr "Jak używać?"
228
 
229
- #: includes/admin/settings/class-settings.php:107
230
  msgid "Suggestions limit"
231
  msgstr "Limit podpowiedzi"
232
 
233
- #: includes/admin/settings/class-settings.php:110
234
  msgid "Maximum number of suggestions rows."
235
  msgstr "Maksymalna liczba podpowiedzi."
236
 
237
- #: includes/admin/settings/class-settings.php:115
238
  msgid "Minimum characters"
239
  msgstr "Minimalna liczba znaków"
240
 
241
- #: includes/admin/settings/class-settings.php:118
242
  msgid "Minimum number of characters required to trigger autosuggest."
243
  msgstr ""
244
  "Minimalna liczba znaków, które należy wpisać aby pojawiły się podpowiedzi"
245
 
246
- #: includes/admin/settings/class-settings.php:123
 
 
 
 
 
 
 
 
247
  msgid "Show submit button"
248
  msgstr "Pokaż przycisk \"Szukaj\""
249
 
250
- #: includes/admin/settings/class-settings.php:130
 
 
 
 
251
  msgid "Search submit button text"
252
  msgstr "Własny tekst na przycisku wyszukiwania"
253
 
254
- #: includes/admin/settings/class-settings.php:132
255
- msgid "To display a magnifier icon leave this field empty."
256
- msgstr "Gdy zostawisz to pole puste to zostanie wyświetlona ikona lupy."
257
 
258
- #: includes/admin/settings/class-settings.php:133
259
  msgid "Search"
260
  msgstr "Szukaj"
261
 
262
- #: includes/admin/settings/class-settings.php:137
263
  msgid "Search input placeholder"
264
  msgstr "Placeholder dla pola wyszukiwania"
265
 
266
- #: includes/admin/settings/class-settings.php:143
267
- msgid "Show details box"
268
- msgstr "Pokaż okno z dodatkowymi informacjami"
269
-
270
- #: includes/admin/settings/class-settings.php:146
271
- msgid ""
272
- "The Details box is an additional container for extended information. The "
273
- "details are changed dynamically when you hover the mouse over one of the "
274
- "suggestions."
275
  msgstr ""
276
- "Okno z dodatkowymi informacjami pojawia się po najechaniu kursorem na jedną "
277
- "z wyświetlonych podpowiedzi."
278
-
279
- #: includes/admin/settings/class-settings.php:153
280
- msgid "Product search"
281
- msgstr "Wyszukiwanie w produktach"
282
-
283
- #: includes/admin/settings/class-settings.php:158
284
- msgid "Search in products content"
285
- msgstr "Szukaj w opisach produktów"
286
-
287
- #: includes/admin/settings/class-settings.php:164
288
- msgid "Search in products excerpt"
289
- msgstr "Szukaj w zajawkach produktów"
290
 
291
- #: includes/admin/settings/class-settings.php:170
292
- msgid "Search in products SKU"
293
- msgstr "Szukaj w SKU"
294
-
295
- #: includes/admin/settings/class-settings.php:176
296
- msgid "Exclude 'out of stock' products"
297
- msgstr "Wyklucz produkty o zerowym stanie magazynowym"
298
-
299
- #: includes/admin/settings/class-settings.php:182
300
- msgid "Taxonomy search"
301
- msgstr "Wyszukiwanie w taksonomiach"
302
 
303
- #: includes/admin/settings/class-settings.php:187
304
- msgid "Show matching categories"
305
- msgstr "Pokaż kategorie pasujące do szukanej frazy"
 
306
 
307
- #: includes/admin/settings/class-settings.php:193
308
- msgid "Show matching tags"
309
- msgstr "Pokaż tagi pasujące do szukanej frazy"
310
 
311
- #: includes/admin/settings/class-settings.php:199
312
  msgid "Suggestions output"
313
  msgstr "Wygląd podpowiedzi"
314
 
315
- #: includes/admin/settings/class-settings.php:204
316
  msgid "Show product image"
317
  msgstr "Pokaż zdjęcie produktu"
318
 
319
- #: includes/admin/settings/class-settings.php:210
320
  msgid "Show price"
321
  msgstr "Pokaż cenę"
322
 
323
- #: includes/admin/settings/class-settings.php:216
324
  msgid "Show product description"
325
  msgstr "Pokaż opis produktu"
326
 
327
- #: includes/admin/settings/class-settings.php:222
328
  msgid "Show SKU"
329
  msgstr "Pokaż SKU"
330
 
331
- #: includes/admin/settings/class-settings.php:242
332
- msgid "Category and tag details:"
333
- msgstr "Szczegóły kategorii i tagów"
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
334
 
335
- #: includes/admin/settings/class-settings.php:247
336
- msgid "Show"
337
- msgstr "Pokaż"
 
338
 
339
- #: includes/admin/settings/class-settings.php:250
340
  msgid "All Product"
341
  msgstr "Wszystkie produkty"
342
 
343
- #: includes/admin/settings/class-settings.php:251
344
  msgid "Featured Products"
345
  msgstr "Produkty wyróżnione"
346
 
347
- #: includes/admin/settings/class-settings.php:252
348
  msgid "On-sale Products"
349
  msgstr "Produkty oznaczone jako \"wyprzedaż\""
350
 
351
- #: includes/admin/settings/class-settings.php:258
352
- #: includes/admin/settings/class-settings.php:270
353
  msgid "Order by"
354
  msgstr "Kolejność przez"
355
 
356
- #: includes/admin/settings/class-settings.php:261
357
  msgid "Date"
358
  msgstr "Data"
359
 
360
- #: includes/admin/settings/class-settings.php:262
361
  msgid "Price"
362
  msgstr "Cena"
363
 
364
- #: includes/admin/settings/class-settings.php:263
365
  msgid "Random"
366
  msgstr "Losowo"
367
 
368
- #: includes/admin/settings/class-settings.php:264
369
  msgid "Sales"
370
  msgstr "Sprzedaż"
371
 
372
- #: includes/admin/settings/class-settings.php:273
 
 
 
 
373
  msgid "DESC"
374
  msgstr "Malejąco"
375
 
376
- #: includes/admin/settings/class-settings.php:274
377
  msgid "ASC"
378
  msgstr "Rosnąco"
379
 
380
- #: includes/admin/settings/class-settings.php:280
381
- msgid "Other"
382
- msgstr "Inne"
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
383
 
384
- #: includes/admin/settings/class-settings.php:285
385
- msgid "Details box position"
386
- msgstr "Pozycja okna z dodatkowymi informacjami"
387
 
388
- #: includes/admin/settings/class-settings.php:287
389
  msgid ""
390
- "If your search form is very close to the right window screen, then select "
391
- "left."
392
  msgstr ""
393
- "Wybierz \"Po lewej\" gdy formularz wyszukiwania jest bardzo blisko prawej "
394
- "krawędzi okna."
395
 
396
- #: includes/admin/settings/class-settings.php:289
397
- msgid "Left"
398
- msgstr "Po lewej"
399
 
400
- #: includes/admin/settings/class-settings.php:290
401
- msgid "Right"
402
- msgstr "Po prawej"
403
 
404
- #: includes/admin/settings/class-settings.php:298
405
- msgid "Search form"
406
- msgstr "Formularz wyszukiwania"
407
 
408
- #: includes/admin/settings/class-settings.php:303
409
- msgid "Search input background"
410
- msgstr "Tło pola do wpisania frazy"
411
 
412
- #: includes/admin/settings/class-settings.php:309
413
- msgid "Search input text"
414
- msgstr "Tekst "
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
2
  msgstr ""
3
  "Project-Id-Version: Ajax Search for WooCommerce\n"
4
  "Report-Msgid-Bugs-To: \n"
5
+ "POT-Creation-Date: 2019-05-03 21:18+0000\n"
6
+ "PO-Revision-Date: 2019-05-03 21:21+0000\n"
7
  "Last-Translator: dev_nIXCkVKHG <admin@webtroter.pl>\n"
8
+ "Language-Team: Polski\n"
9
+ "Language: pl_PL\n"
10
  "Plural-Forms: nplurals=3; plural=(n==1 ? 0 : n%10 >= 2 && n%10<=4 "
11
+ "&&(n%100<10||n%100 >= 20)? 1 : 2);\n"
12
  "MIME-Version: 1.0\n"
13
  "Content-Type: text/plain; charset=UTF-8\n"
14
  "Content-Transfer-Encoding: 8bit\n"
15
+ "X-Generator: Loco https://localise.biz/\n"
16
+ "X-Loco-Version: 2.2.2; wp-5.1.1"
17
 
18
+ #: ajax-search-for-woocommerce.php:198
 
19
  msgid ""
20
+ "<b>AJAX Search for WooCommerce</b>: You need PHP version at least 5.3 to run "
21
+ "this plugin. You are currently using PHP version "
 
 
 
 
 
 
 
 
 
 
 
 
 
22
  msgstr ""
23
 
24
+ #: ajax-search-for-woocommerce.php:221
25
  msgid ""
26
+ "<b>AJAX Search for WooCommerce</b>: You need PHP version at least 5.5 to run "
27
+ "this plugin. You are currently using PHP version "
28
  msgstr ""
29
 
30
+ #: ajax-search-for-woocommerce.php:250
31
+ #, php-format
32
+ msgid ""
33
+ "<b>AJAX Search for WooCommerce</b>:<br /> Your PHP version <b><i>%s</i></b> "
34
+ "will not longer supported in the next plugin releases."
35
  msgstr ""
36
 
37
+ #: ajax-search-for-woocommerce.php:252
38
+ msgid ""
39
+ " You have to update your PHP version to least 5.5 (recommended 7.2 or "
40
+ "greater)."
41
  msgstr ""
42
 
43
+ #: ajax-search-for-woocommerce.php:255
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
44
  msgid ""
45
+ "If you cannot upgrade your PHP version yourself, you can send an email to "
46
+ "your host."
47
  msgstr ""
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
48
 
49
+ #: ajax-search-for-woocommerce.php:258
 
 
 
 
 
50
  msgid ""
51
+ "If you do not upgrade the php version, the next plugin release will not work!"
 
52
  msgstr ""
 
 
53
 
54
+ #: ajax-search-for-woocommerce.php:263
55
+ msgid "Remind me again in week."
 
 
 
56
  msgstr ""
 
 
 
57
 
58
+ #: ajax-search-for-woocommerce.php:285
59
  #, php-format
 
 
 
 
 
 
 
 
 
 
 
 
60
  msgid ""
61
+ "<b>AJAX Search for WooCommerce</b> is enabled but not effective. It requires "
62
+ "%s in order to work."
63
  msgstr ""
 
 
 
 
 
 
 
 
 
 
 
 
 
 
64
 
65
+ #: widget.php:25
66
+ msgid "AJAX (live) search form for WooCommerce"
67
+ msgstr ""
68
 
69
+ #: widget.php:27
70
+ msgid "Woo AJAX Search"
71
+ msgstr ""
72
 
73
+ #: widget.php:32
74
  msgid "Title"
75
  msgstr "Tytuł"
76
 
77
+ #: partials/search-form.php:19 backward-compatibility/1-1-7/search-form.php:67
 
 
 
 
 
 
 
 
 
 
78
  msgid "Products search"
79
  msgstr "Wyszukiwarka produktów"
80
 
81
+ #: partials/search-form.php:26 includes/Settings.php:188
82
+ #: backward-compatibility/1-1-7/search-form.php:74
83
  msgid "Search for products..."
84
  msgstr "Szukaj produktów"
85
 
86
+ #: includes/Settings.php:86
87
  msgid "Basic"
88
  msgstr "Podstawowe"
89
 
90
+ #: includes/Settings.php:90
91
+ msgid "Form"
92
+ msgstr ""
93
+
94
+ #: includes/Settings.php:94
95
+ msgid "Colors"
96
+ msgstr ""
97
+
98
+ #: includes/Settings.php:98
99
+ msgid "Scope"
100
+ msgstr ""
101
+
102
+ #: includes/Settings.php:105 includes/Helpers.php:441 includes/Helpers.php:444
103
+ msgid "Pro"
104
+ msgstr ""
105
 
106
+ #: includes/Settings.php:111
107
+ msgid "Increase sales"
108
+ msgstr ""
109
 
110
+ #: includes/Settings.php:113
111
+ msgid "by simple tricks"
112
+ msgstr ""
113
 
114
+ #: includes/Settings.php:136
115
  msgid "How to use?"
116
  msgstr "Jak używać?"
117
 
118
+ #: includes/Settings.php:142
119
  msgid "Suggestions limit"
120
  msgstr "Limit podpowiedzi"
121
 
122
+ #: includes/Settings.php:145
123
  msgid "Maximum number of suggestions rows."
124
  msgstr "Maksymalna liczba podpowiedzi."
125
 
126
+ #: includes/Settings.php:150
127
  msgid "Minimum characters"
128
  msgstr "Minimalna liczba znaków"
129
 
130
+ #: includes/Settings.php:153
131
  msgid "Minimum number of characters required to trigger autosuggest."
132
  msgstr ""
133
  "Minimalna liczba znaków, które należy wpisać aby pojawiły się podpowiedzi"
134
 
135
+ #: includes/Settings.php:158
136
+ msgid "Max form width"
137
+ msgstr ""
138
+
139
+ #: includes/Settings.php:161
140
+ msgid "To set 100% width leave blank"
141
+ msgstr ""
142
+
143
+ #: includes/Settings.php:166
144
  msgid "Show submit button"
145
  msgstr "Pokaż przycisk \"Szukaj\""
146
 
147
+ #: includes/Settings.php:173
148
+ msgid "Custom labels"
149
+ msgstr ""
150
+
151
+ #: includes/Settings.php:179
152
  msgid "Search submit button text"
153
  msgstr "Własny tekst na przycisku wyszukiwania"
154
 
155
+ #: includes/Settings.php:181
156
+ msgid "To display the magnifier icon leave this field empty."
157
+ msgstr ""
158
 
159
+ #: includes/Settings.php:182
160
  msgid "Search"
161
  msgstr "Szukaj"
162
 
163
+ #: includes/Settings.php:186
164
  msgid "Search input placeholder"
165
  msgstr "Placeholder dla pola wyszukiwania"
166
 
167
+ #: includes/Settings.php:192
168
+ msgid "More results"
 
 
 
 
 
 
 
169
  msgstr ""
 
 
 
 
 
 
 
 
 
 
 
 
 
 
170
 
171
+ #: includes/Settings.php:194 includes/Scripts.php:41
172
+ msgid "See all results..."
173
+ msgstr ""
 
 
 
 
 
 
 
 
174
 
175
+ #: includes/Settings.php:198
176
+ msgctxt "admin"
177
+ msgid "No results"
178
+ msgstr ""
179
 
180
+ #: includes/Settings.php:200 includes/Scripts.php:42
181
+ msgid "No results"
182
+ msgstr "Brak wyników"
183
 
184
+ #: includes/Settings.php:206
185
  msgid "Suggestions output"
186
  msgstr "Wygląd podpowiedzi"
187
 
188
+ #: includes/Settings.php:212
189
  msgid "Show product image"
190
  msgstr "Pokaż zdjęcie produktu"
191
 
192
+ #: includes/Settings.php:218
193
  msgid "Show price"
194
  msgstr "Pokaż cenę"
195
 
196
+ #: includes/Settings.php:224
197
  msgid "Show product description"
198
  msgstr "Pokaż opis produktu"
199
 
200
+ #: includes/Settings.php:230
201
  msgid "Show SKU"
202
  msgstr "Pokaż SKU"
203
 
204
+ #: includes/Settings.php:236
205
+ msgid "Also show matching categories"
206
+ msgstr ""
207
+
208
+ #: includes/Settings.php:242
209
+ msgid "Also show matching tags"
210
+ msgstr ""
211
+
212
+ #: includes/Settings.php:260
213
+ msgid "Mobile"
214
+ msgstr ""
215
+
216
+ #: includes/Settings.php:266
217
+ msgid "Overlay search (beta)"
218
+ msgstr ""
219
+
220
+ #: includes/Settings.php:267
221
+ msgid "Enhances user experience on mobile"
222
+ msgstr ""
223
+
224
+ #: includes/Settings.php:273
225
+ msgid "Preloader"
226
+ msgstr ""
227
+
228
+ #: includes/Settings.php:279
229
+ msgid "Show preloader"
230
+ msgstr "Pokaż preloader"
231
+
232
+ #: includes/Settings.php:285
233
+ msgid "Upload preloader image"
234
+ msgstr "Załaduj zdjęcie na preloader"
235
+
236
+ #: includes/Settings.php:291
237
+ msgid "Details box"
238
+ msgstr ""
239
+
240
+ #: includes/Settings.php:297
241
+ msgid "Show details box"
242
+ msgstr "Pokaż okno z dodatkowymi informacjami"
243
+
244
+ #: includes/Settings.php:301
245
+ #, php-format
246
+ msgid ""
247
+ "The Details box is an additional container for extended information. The "
248
+ "details are changed dynamically when you hover the mouse over one of the "
249
+ "suggestions. <a href=\"%s\" target=\"_blank\">See where the details box will "
250
+ "appear.</a>"
251
+ msgstr ""
252
+
253
+ #: includes/Settings.php:306
254
+ msgid "Products list"
255
+ msgstr ""
256
 
257
+ #: includes/Settings.php:308 includes/Settings.php:322
258
+ #: includes/Settings.php:336
259
+ msgid "Applies only to category or tags suggestions type"
260
+ msgstr ""
261
 
262
+ #: includes/Settings.php:310
263
  msgid "All Product"
264
  msgstr "Wszystkie produkty"
265
 
266
+ #: includes/Settings.php:311
267
  msgid "Featured Products"
268
  msgstr "Produkty wyróżnione"
269
 
270
+ #: includes/Settings.php:312
271
  msgid "On-sale Products"
272
  msgstr "Produkty oznaczone jako \"wyprzedaż\""
273
 
274
+ #: includes/Settings.php:319
 
275
  msgid "Order by"
276
  msgstr "Kolejność przez"
277
 
278
+ #: includes/Settings.php:324
279
  msgid "Date"
280
  msgstr "Data"
281
 
282
+ #: includes/Settings.php:325
283
  msgid "Price"
284
  msgstr "Cena"
285
 
286
+ #: includes/Settings.php:326
287
  msgid "Random"
288
  msgstr "Losowo"
289
 
290
+ #: includes/Settings.php:327
291
  msgid "Sales"
292
  msgstr "Sprzedaż"
293
 
294
+ #: includes/Settings.php:333
295
+ msgid "Order"
296
+ msgstr ""
297
+
298
+ #: includes/Settings.php:338
299
  msgid "DESC"
300
  msgstr "Malejąco"
301
 
302
+ #: includes/Settings.php:339
303
  msgid "ASC"
304
  msgstr "Rosnąco"
305
 
306
+ #: includes/Settings.php:347
307
+ msgid "Search form"
308
+ msgstr "Formularz wyszukiwania"
309
+
310
+ #: includes/Settings.php:353
311
+ msgid "Search input background"
312
+ msgstr "Tło pola do wpisania frazy"
313
+
314
+ #: includes/Settings.php:359
315
+ msgid "Search input text"
316
+ msgstr "Tekst "
317
+
318
+ #: includes/Settings.php:365
319
+ msgid "Search input border"
320
+ msgstr "Obramowanie inputa"
321
+
322
+ #: includes/Settings.php:371
323
+ msgid "Search submit background"
324
+ msgstr "Tło przycisku \"szukaj\""
325
+
326
+ #: includes/Settings.php:377
327
+ msgid "Search submit text"
328
+ msgstr "Tekst na przycisku \"szukaj\""
329
+
330
+ #: includes/Settings.php:383
331
+ msgid "Suggestions"
332
+ msgstr "Podpowiedzi"
333
+
334
+ #: includes/Settings.php:389
335
+ msgid "Suggestion background"
336
+ msgstr "Tło podpowiedzi"
337
+
338
+ #: includes/Settings.php:395
339
+ msgid "Suggestion selected"
340
+ msgstr "Tło zaznaczonej podpowiedzi"
341
+
342
+ #: includes/Settings.php:401
343
+ msgid "Text color"
344
+ msgstr "Kolor tekstu"
345
+
346
+ #: includes/Settings.php:407
347
+ msgid "Highlight color"
348
+ msgstr "Kolor podświetlenia"
349
+
350
+ #: includes/Settings.php:413
351
+ msgid "Border color"
352
+ msgstr "Kolor obramowania"
353
+
354
+ #: includes/Settings.php:421
355
+ msgid "Search scope"
356
+ msgstr ""
357
 
358
+ #: includes/Settings.php:427
359
+ msgid "Info"
360
+ msgstr ""
361
 
362
+ #: includes/Settings.php:429
363
  msgid ""
364
+ "Searching in products names is always enabled. You can extend or narrow the "
365
+ "searching scope using the following options."
366
  msgstr ""
 
 
367
 
368
+ #: includes/Settings.php:434
369
+ msgid "Search in description"
370
+ msgstr ""
371
 
372
+ #: includes/Settings.php:440
373
+ msgid "Search in short description"
374
+ msgstr ""
375
 
376
+ #: includes/Settings.php:446
377
+ msgid "Search in SKU"
378
+ msgstr ""
379
 
380
+ #: includes/Settings.php:448
381
+ msgid "Searching also in variable products SKU"
382
+ msgstr ""
383
 
384
+ #: includes/Settings.php:448
385
+ #, php-format
386
+ msgid ""
387
+ "Searching in variable products SKU is available only in <a href=\"%s\">the "
388
+ "pro version</a>. It will also be available in the free version soon."
389
+ msgstr ""
390
+
391
+ #: includes/Settings.php:453
392
+ msgid "Search in attributes"
393
+ msgstr ""
394
+
395
+ #: includes/Settings.php:460
396
+ msgid "Exclude 'out of stock' products"
397
+ msgstr "Wyklucz produkty o zerowym stanie magazynowym"
398
+
399
+ #: includes/Settings.php:468
400
+ msgid "Pro features"
401
+ msgstr ""
402
+
403
+ #: includes/Settings.php:474
404
+ msgid "Fuzziness"
405
+ msgstr ""
406
+
407
+ #: includes/Settings.php:480
408
+ msgid "Speed up search!"
409
+ msgstr ""
410
+
411
+ #: includes/Settings.php:487
412
+ msgid ""
413
+ "<strong>Increases sales conversions.</strong> Returns sugestions based on "
414
+ "likely relevance even though a search keyword may not exactly match. E.g if "
415
+ "you type \"ipho<b>m</b>e\" you get the same results as for \"iphone\""
416
+ msgstr ""
417
+
418
+ #: includes/Settings.php:493
419
+ msgid "Profits"
420
+ msgstr ""
421
+
422
+ #: includes/Settings.php:500 includes/Settings.php:532
423
+ msgid "Fuzzy matching"
424
+ msgstr ""
425
+
426
+ #: includes/Settings.php:505 includes/Settings.php:537
427
+ msgid "-- Disabled"
428
+ msgstr ""
429
+
430
+ #: includes/Settings.php:506 includes/Settings.php:538
431
+ msgid "Soft"
432
+ msgstr ""
433
+
434
+ #: includes/Settings.php:507 includes/Settings.php:539
435
+ msgid "Normal"
436
+ msgstr ""
437
+
438
+ #: includes/Settings.php:508 includes/Settings.php:540
439
+ msgid "Hard"
440
+ msgstr ""
441
+
442
+ #: includes/Settings.php:518
443
+ msgid "Select the database"
444
+ msgstr ""
445
+
446
+ #: includes/Settings.php:522
447
+ msgid "SQLite"
448
+ msgstr ""
449
+
450
+ #: includes/Settings.php:523
451
+ msgid "MySQL"
452
+ msgstr ""
453
+
454
+ #: includes/Settings.php:552 includes/Settings.php:560
455
+ msgid "Index status"
456
+ msgstr ""
457
+
458
+ #: includes/BackwardCompatibility.php:338 partials/admin/indexer-header.php:21
459
+ msgid "Troubleshooting"
460
+ msgstr ""
461
+
462
+ #: includes/BackwardCompatibility.php:339
463
+ msgid "troubleshooting"
464
+ msgstr ""
465
+
466
+ #: includes/BackwardCompatibility.php:348
467
+ msgid "<span style=\"color:#9b5c8f\">Complete the update process</span>"
468
+ msgstr ""
469
+
470
+ #: includes/BackwardCompatibility.php:348
471
+ msgid ""
472
+ "In the last update we have changed the AJAX search form on the frontend (CSS "
473
+ "styles, names of the HTML classes etc.). You have to check if the AJAX "
474
+ "search form looks correct with your theme after these changes."
475
+ msgstr ""
476
+
477
+ #: includes/BackwardCompatibility.php:356
478
+ msgid "What should you do now?"
479
+ msgstr ""
480
+
481
+ #: includes/BackwardCompatibility.php:359
482
+ msgid ""
483
+ "Switch manually to the latest version to check if the AJAX search form "
484
+ "displays correctly with your theme"
485
+ msgstr ""
486
+
487
+ #: includes/BackwardCompatibility.php:364
488
+ msgid "You have activated the latest version. Follow the steps below:"
489
+ msgstr ""
490
+
491
+ #: includes/BackwardCompatibility.php:367
492
+ #, php-format
493
+ msgid "Visit your <a target=\"_blank\" href=\"%s\">store</a>"
494
+ msgstr ""
495
+
496
+ #: includes/BackwardCompatibility.php:368
497
+ msgid "Check if the AJAX search form displays correctly"
498
+ msgstr ""
499
+
500
+ #: includes/BackwardCompatibility.php:369
501
+ #, php-format
502
+ msgid "If it is ok, click %s"
503
+ msgstr ""
504
+
505
+ #: includes/BackwardCompatibility.php:369
506
+ msgid "finish the update"
507
+ msgstr ""
508
+
509
+ #: includes/BackwardCompatibility.php:370
510
+ #, php-format
511
+ msgid "If not, switch back to <code>previous version %s</code> and see %s"
512
+ msgstr ""
513
+
514
+ #: includes/BackwardCompatibility.php:377
515
+ msgid "Version switcher"
516
+ msgstr ""
517
+
518
+ #: includes/BackwardCompatibility.php:378
519
+ msgid "Something went wrong. Refresh the page and try again."
520
+ msgstr ""
521
+
522
+ #: includes/BackwardCompatibility.php:379
523
+ msgid "Saved!"
524
+ msgstr ""
525
+
526
+ #: includes/BackwardCompatibility.php:381
527
+ msgid "previous version"
528
+ msgstr ""
529
+
530
+ #: includes/BackwardCompatibility.php:388
531
+ msgid "latest version"
532
+ msgstr ""
533
+
534
+ #: includes/BackwardCompatibility.php:395
535
+ #, php-format
536
+ msgid ""
537
+ "If the AJAX search form displays incorrectly after switching to the latest "
538
+ "version, see the %s"
539
+ msgstr ""
540
+
541
+ #: includes/BackwardCompatibility.php:402
542
+ msgid ""
543
+ "Your AJAX search form does not display correctly after manual switching to "
544
+ "the latest version."
545
+ msgstr ""
546
+
547
+ #: includes/BackwardCompatibility.php:406
548
+ msgid ""
549
+ "Probably your theme uses additional CSS styles to customize the appearance "
550
+ "of the AJAX search form. Contact the authors of your theme. Maybe they have "
551
+ "to update their CSS styles if necessary."
552
+ msgstr ""
553
+
554
+ #: includes/BackwardCompatibility.php:412
555
+ msgid "Your Theme Details"
556
+ msgstr ""
557
+
558
+ #: includes/BackwardCompatibility.php:417
559
+ msgctxt "Wordpress theme name"
560
+ msgid "Name:"
561
+ msgstr ""
562
+
563
+ #: includes/BackwardCompatibility.php:432
564
+ msgid "Author:"
565
+ msgstr ""
566
+
567
+ #: includes/BackwardCompatibility.php:449
568
+ msgid "A sample e-mail message that you can send them:"
569
+ msgstr ""
570
+
571
+ #: includes/BackwardCompatibility.php:454
572
+ #, php-format
573
+ msgid ""
574
+ "Hello,\n"
575
+ " <br /><br />\n"
576
+ " I use your %s theme with AJAX Search for WooCommerce "
577
+ "plugin - (https://wordpress.org/plugins/ajax-search-for-woocommerce/)\n"
578
+ " <br /><br />\n"
579
+ " In the lates version of AJAX Search for WooCommerce %s "
580
+ "they have changed the search form on the frontend (CSS, HTML etc.).\n"
581
+ " <br /><br />\n"
582
+ " Could you check it and update your CSS if necessary?"
583
+ msgstr ""
584
+
585
+ #: includes/BackwardCompatibility.php:470
586
+ msgid ""
587
+ "If you have any questions, do not hesitate contact <a href=\"mailto:"
588
+ "dgoraplugins@gmail.com?subject=Ajax Search for WooCommerce - Update "
589
+ "problem\">our support </a> or <a href=\"https://wordpress."
590
+ "org/support/plugin/ajax-search-for-woocommerce\" target=\"_blank\">write on "
591
+ "the WordPress.org Support</a>."
592
+ msgstr ""
593
+
594
+ #: includes/BackwardCompatibility.php:477
595
+ msgid "Remind me later"
596
+ msgstr ""
597
+
598
+ #: includes/Scripts.php:34
599
+ msgctxt "For product badge: on sale"
600
+ msgid "sale"
601
+ msgstr "sprzedaż"
602
+
603
+ #: includes/Scripts.php:35
604
+ msgctxt "For product badge: featured"
605
+ msgid "featured"
606
+ msgstr "wyróżniony"
607
+
608
+ #: includes/Scripts.php:36 includes/Engines/WordPressNative/DetailsBox.php:168
609
+ msgid "Category"
610
+ msgstr "Kategoria"
611
+
612
+ #: includes/Scripts.php:37
613
+ msgid "tag"
614
+ msgstr ""
615
+
616
+ #: includes/Scripts.php:38
617
+ msgid "SKU:"
618
+ msgstr ""
619
+
620
+ #: includes/Scripts.php:64
621
+ msgctxt "in categories fe. in Books > Crime stories"
622
+ msgid "in"
623
+ msgstr ""
624
+
625
+ #: partials/admin/indexer-header.php:8
626
+ #, php-format
627
+ msgid "Indexed <strong>100&#37;</strong>, <strong>%d products</strong>."
628
+ msgstr ""
629
+
630
+ #: partials/admin/indexer-header.php:12
631
+ #, php-format
632
+ msgid "Last build %s"
633
+ msgstr ""
634
+
635
+ #: partials/admin/indexer-header.php:13
636
+ msgid "All products changes will be <strong>re-indexed automatically</strong>"
637
+ msgstr ""
638
+
639
+ #: partials/admin/indexer-header.php:24
640
+ #, php-format
641
+ msgid "First try to <a class=\"%s\" href=\"#\">build the index again</a>"
642
+ msgstr ""
643
+
644
+ #: partials/admin/indexer-header.php:25
645
+ #, php-format
646
+ msgid ""
647
+ "Go to <a target=\"_blank\" href=\"%s\">WooCommerce -> Status -> section "
648
+ "\"AJAX Search for WooCommerce Pro\"</a>. Is everything green?"
649
+ msgstr ""
650
+
651
+ #: partials/admin/indexer-header.php:26
652
+ #, php-format
653
+ msgid ""
654
+ "Go to <a target=\"_blank\" href=\"%s\">WooCommerce -> Status -> Logs (tab)"
655
+ "</a>. Open last \"fatal-errors...\". Look for a phrase \"ajax-search-for-"
656
+ "woocommerce\". Did you find anything significant?"
657
+ msgstr ""
658
+
659
+ #: partials/admin/indexer-header.php:27
660
+ #, php-format
661
+ msgid ""
662
+ "Is it still not working? Write a <a target=\"_blank\" href=\"%s\">support "
663
+ "request</a>."
664
+ msgstr ""
665
+
666
+ #: partials/admin/indexer-header.php:36
667
+ #: partials/admin/indexer-header-demo.php:8
668
+ msgid "Show details"
669
+ msgstr ""
670
+
671
+ #: partials/admin/indexer-header.php:37
672
+ msgid "Hide details"
673
+ msgstr ""
674
+
675
+ #: partials/admin/indexer-body.php:6
676
+ msgid ""
677
+ "Indexing... This process will continue in the background. You can leave this "
678
+ "page."
679
+ msgstr ""
680
+
681
+ #: partials/admin/indexer-body.php:8
682
+ msgid "Index build progress"
683
+ msgstr ""
684
+
685
+ #: partials/admin/indexer-body.php:11
686
+ #, php-format
687
+ msgid "Finalization... Wait a moment. (%s products)"
688
+ msgstr ""
689
+
690
+ #: partials/admin/indexer-body.php:15
691
+ msgid "Cancellation..."
692
+ msgstr ""
693
+
694
+ #: partials/admin/indexer-body.php:32
695
+ msgid "Build ID"
696
+ msgstr ""
697
+
698
+ #: partials/admin/indexer-body.php:36
699
+ msgid "DB"
700
+ msgstr ""
701
+
702
+ #: partials/admin/indexer-body.php:40
703
+ msgid "Index build start"
704
+ msgstr ""
705
+
706
+ #: partials/admin/indexer-body.php:44
707
+ msgid "Status"
708
+ msgstr ""
709
+
710
+ #: partials/admin/indexer-body.php:48
711
+ msgid "Products"
712
+ msgstr ""
713
+
714
+ #: partials/admin/indexer-body.php:52
715
+ msgid "Searchable"
716
+ msgstr ""
717
+
718
+ #: partials/admin/indexer-body.php:56 partials/admin/indexer-body.php:79
719
+ #: partials/admin/indexer-body.php:104
720
+ msgid "Start"
721
+ msgstr ""
722
+
723
+ #: partials/admin/indexer-body.php:60 partials/admin/indexer-body.php:83
724
+ #: partials/admin/indexer-body.php:108
725
+ msgid "End"
726
+ msgstr ""
727
+
728
+ #: partials/admin/indexer-body.php:65 partials/admin/indexer-body.php:88
729
+ #: partials/admin/indexer-body.php:113
730
+ msgid "Time"
731
+ msgstr ""
732
+
733
+ #: partials/admin/indexer-body.php:74
734
+ msgid "Readable"
735
+ msgstr ""
736
+
737
+ #: partials/admin/indexer-body.php:99
738
+ msgid "Taxonomies"
739
+ msgstr ""
740
+
741
+ #: partials/admin/indexer-body.php:127
742
+ msgid "Logs"
743
+ msgstr ""
744
+
745
+ #: partials/admin/pro-starter.php:8
746
+ msgid ""
747
+ "You are using the Pro plugin version. Your customers will find the right "
748
+ "products <span>faster and simpler</span> and your sales will increase."
749
+ msgstr ""
750
+
751
+ #: partials/admin/pro-starter.php:14
752
+ #, php-format
753
+ msgid ""
754
+ "If you have any questions, do not hesitate to <a target=\"_blank\" "
755
+ "href=\"%s\">get in touch</a>."
756
+ msgstr ""
757
+
758
+ #: partials/admin/settings.php:12
759
+ msgid "AJAX Search for WooCommerce (PRO) Settings"
760
+ msgstr ""
761
+
762
+ #: partials/admin/settings.php:14
763
+ msgid "AJAX Search for WooCommerce Settings"
764
+ msgstr ""
765
+
766
+ #: partials/admin/indexer-header-demo.php:3
767
+ #: includes/Engines/TNTSearch/Indexer/Buildier.php:414
768
+ #: includes/Engines/TNTSearchMySQL/Indexer/Buildier.php:398
769
+ msgid "The search index does not exist yet. Build it now."
770
+ msgstr ""
771
+
772
+ #: partials/admin/indexer-header-demo.php:7
773
+ #: includes/Engines/TNTSearch/Indexer/Buildier.php:443
774
+ #: includes/Engines/TNTSearchMySQL/Indexer/Buildier.php:430
775
+ msgid "Build index"
776
+ msgstr ""
777
+
778
+ #: partials/admin/how-to-use.php:10
779
+ msgid "There are two easy ways to display the search form"
780
+ msgstr "Wyszukiwarkę można wyświetlić na dwa sposoby"
781
+
782
+ #: partials/admin/how-to-use.php:11
783
+ #, php-format
784
+ msgid "Use a shortcode %s"
785
+ msgstr "Użyj shortcode %s"
786
+
787
+ #: partials/admin/how-to-use.php:12
788
+ #, php-format
789
+ msgid "Go to the %s and choose \"Woo AJAX Search\""
790
+ msgstr ""
791
+
792
+ #: partials/admin/how-to-use.php:12
793
+ msgid "Widgets Screen"
794
+ msgstr "Widoku widgetów"
795
+
796
+ #: partials/admin/how-to-use.php:14
797
+ #, php-format
798
+ msgid ""
799
+ "Are there any difficulties? <a href=\"%s\">Upgrade now</a> and our "
800
+ "developers will do everything for you."
801
+ msgstr ""
802
+
803
+ #: partials/admin/system-status.php:5
804
+ msgid "Ajax Search for WooCommerce (Pro)"
805
+ msgstr ""
806
+
807
+ #: partials/admin/system-status.php:6
808
+ msgid "This section shows the plugin requirements."
809
+ msgstr ""
810
+
811
+ #: partials/admin/system-status.php:12
812
+ msgid "PHP extension (mbstring)"
813
+ msgstr ""
814
+
815
+ #: partials/admin/system-status.php:29
816
+ msgid "PHP extension (pdo_mysql)"
817
+ msgstr ""
818
+
819
+ #: partials/admin/system-status.php:46
820
+ msgid "PHP extension (sqlite3)"
821
+ msgstr ""
822
+
823
+ #: partials/admin/system-status.php:61
824
+ msgid "PHP extension (pdo_sqlite)"
825
+ msgstr ""
826
+
827
+ #: partials/admin/system-status.php:76
828
+ msgid "Index directory test"
829
+ msgstr ""
830
+
831
+ #: partials/admin/system-status.php:93
832
+ msgid "Default upload path"
833
+ msgstr ""
834
+
835
+ #: partials/admin/system-status.php:96
836
+ msgid "At this moment the plugin works only with default upload directory."
837
+ msgstr ""
838
+
839
+ #: partials/admin/system-status.php:113
840
+ msgid "DB readable tables exist"
841
+ msgstr ""
842
+
843
+ #: partials/admin/system-status.php:134
844
+ msgid "Finding wp-load.php from outside"
845
+ msgstr ""
846
+
847
+ #: partials/admin/system-status.php:143
848
+ msgid "The location of wp-load.php is not the default."
849
+ msgstr ""
850
+
851
+ #: partials/admin/system-status.php:158
852
+ msgid "Multisite"
853
+ msgstr ""
854
+
855
+ #: partials/admin/system-status.php:161
856
+ msgid ""
857
+ "The Ajax Search for WooCommerce (Pro) does not support multisite yet. "
858
+ "Multisite must be disabled."
859
+ msgstr ""
860
+
861
+ #: partials/admin/system-status.php:166
862
+ msgid "disabled"
863
+ msgstr ""
864
+
865
+ #: partials/admin/system-status.php:168
866
+ msgid "enabled"
867
+ msgstr ""
868
+
869
+ #: partials/admin/system-status.php:175
870
+ msgid "Conflicts with other plugins"
871
+ msgstr ""
872
+
873
+ #: partials/admin/system-status.php:178
874
+ msgid ""
875
+ "The Ajax Search for WooCommerce (Pro) does not support multilanguages yet."
876
+ msgstr ""
877
+
878
+ #: partials/admin/system-status.php:184
879
+ msgid "no"
880
+ msgstr ""
881
+
882
+ #: partials/admin/features.php:8
883
+ msgid ""
884
+ "If users can’t find the product they’re searching for, they can’t buy it. "
885
+ "Help your customers to find the right products <span>faster and "
886
+ "simpler</span>."
887
+ msgstr ""
888
+
889
+ #: partials/admin/features.php:10 includes/Admin/Promo/Upgrade.php:62
890
+ msgid ""
891
+ "Update now and increase your sales. You will receive 14-day satisfaction "
892
+ "guarantee. A return on investment will come very quickly."
893
+ msgstr ""
894
+
895
+ #: partials/admin/features.php:13
896
+ msgid "Speed up search! (even <b>10x faster</b>) - users love it!"
897
+ msgstr ""
898
+
899
+ #: partials/admin/features.php:14
900
+ msgid ""
901
+ "Help in embedding the search form in your theme. <b>Our developers will do "
902
+ "it for you</b>."
903
+ msgstr ""
904
+
905
+ #: partials/admin/features.php:15
906
+ msgid ""
907
+ "Efficient with a large number of products. Tested on <b>20 000 products</b>"
908
+ msgstr ""
909
+
910
+ #: partials/admin/features.php:16 includes/Admin/Promo/Upgrade.php:51
911
+ msgid "New modern search engine based on bm25 ranking algorithm"
912
+ msgstr ""
913
+
914
+ #: partials/admin/features.php:17 includes/Admin/Promo/Upgrade.php:52
915
+ msgid "Fuzzy search"
916
+ msgstr ""
917
+
918
+ #: partials/admin/features.php:18
919
+ msgid "Search in variation products SKUs (option)"
920
+ msgstr ""
921
+
922
+ #: partials/admin/features.php:19
923
+ msgid "Search in product attributes (option)"
924
+ msgstr ""
925
+
926
+ #: partials/admin/features.php:20
927
+ msgid "Advanced search analytics and tips (in plans)"
928
+ msgstr ""
929
+
930
+ #: partials/admin/features.php:21 includes/Admin/Promo/Upgrade.php:54
931
+ msgid "Individual customization of the search form (simple CSS improvements)"
932
+ msgstr ""
933
+
934
+ #: partials/admin/features.php:22
935
+ msgid "Individual tips and support"
936
+ msgstr ""
937
+
938
+ #: partials/admin/features.php:23
939
+ msgid "And more..."
940
+ msgstr ""
941
+
942
+ #: partials/admin/features.php:25
943
+ msgid "Upgrade Now!"
944
+ msgstr ""
945
+
946
+ #. Name of the plugin
947
+ #: includes/Admin/AdminMenu.php:31
948
+ msgid "Ajax Search for WooCommerce"
949
+ msgstr ""
950
+
951
+ #: includes/Admin/AdminMenu.php:32
952
+ msgid "AJAX search form"
953
+ msgstr ""
954
+
955
+ #: includes/Admin/SettingsAPI.php:572
956
+ msgid "Contact"
957
+ msgstr ""
958
+
959
+ #: includes/Admin/SettingsAPI.php:575
960
+ msgid "My Account"
961
+ msgstr ""
962
+
963
+ #: includes/Admin/Requirements.php:60
964
+ #, php-format
965
+ msgid "Required PHP version 5.5 or higher. You use %s"
966
+ msgstr ""
967
+
968
+ #: includes/Admin/Requirements.php:79 includes/Admin/Requirements.php:84
969
+ #: includes/Admin/Requirements.php:89 includes/Admin/Requirements.php:94
970
+ #, php-format
971
+ msgid "Required PHP extension: %s"
972
+ msgstr ""
973
+
974
+ #: includes/Admin/Requirements.php:128
975
+ #, php-format
976
+ msgid "Problem with permission for the directory: %s"
977
+ msgstr ""
978
+
979
+ #: includes/Admin/Requirements.php:181
980
+ #, php-format
981
+ msgid ""
982
+ "You use the %s plugin. The Ajax Search for WooCommerce PRO does not support "
983
+ "multilingual yet."
984
+ msgstr ""
985
+
986
+ #: includes/Admin/Requirements.php:205
987
+ msgid ""
988
+ "Your WordPress use the multisite. The Ajax Search for WooCommerce PRO does "
989
+ "not support multisite yet."
990
+ msgstr ""
991
+
992
+ #: includes/Admin/Requirements.php:222
993
+ msgid "Attention! Read this before the upgrade."
994
+ msgstr ""
995
+
996
+ #: includes/Admin/Requirements.php:223
997
+ msgid ""
998
+ "Ajax Search for WooCommerce PRO may not work properly in your environment "
999
+ "for the following reasons:"
1000
+ msgstr ""
1001
+
1002
+ #: includes/Admin/Requirements.php:233
1003
+ msgid "Ajax Search for WooCommerce PRO - Requirements"
1004
+ msgstr ""
1005
+
1006
+ #: includes/Admin/Requirements.php:234
1007
+ #, php-format
1008
+ msgid ""
1009
+ "If you have any questions, do not hesitate contact <a href=\"%s\">our "
1010
+ "support</a>."
1011
+ msgstr ""
1012
+
1013
+ #: includes/Engines/WordPressNative/DetailsBox.php:170
1014
+ msgid "Tag"
1015
+ msgstr "Tag"
1016
+
1017
+ #: includes/Integrations/Themes/Storefront.php:28
1018
+ msgid "Storefront theme"
1019
+ msgstr ""
1020
+
1021
+ #: includes/Integrations/Themes/Storefront.php:35
1022
+ msgid "Replace search form"
1023
+ msgstr ""
1024
+
1025
+ #: includes/Integrations/Themes/Storefront.php:36
1026
+ msgid ""
1027
+ "Replace the Storefront theme's default product search with the Ajax Search "
1028
+ "for WooCommerce form."
1029
+ msgstr ""
1030
+
1031
+ #: includes/Admin/Promo/Upgrade.php:50
1032
+ msgid "Speed up search! (even 10x faster) - users love it!"
1033
+ msgstr ""
1034
+
1035
+ #: includes/Admin/Promo/Upgrade.php:53
1036
+ msgid "Search in attributes and variation products SKUs (option)"
1037
+ msgstr ""
1038
+
1039
+ #: includes/Admin/Promo/Upgrade.php:55
1040
+ msgid "Individual tips and support by Damian Góra - the author of the plugin"
1041
+ msgstr ""
1042
+
1043
+ #: includes/Admin/Promo/Upgrade.php:56
1044
+ msgid "and more..."
1045
+ msgstr ""
1046
+
1047
+ #: includes/Admin/Promo/Upgrade.php:58
1048
+ msgid "Ajax Search for WooCommerce PRO - Upgrade Now"
1049
+ msgstr ""
1050
+
1051
+ #: includes/Admin/Promo/Upgrade.php:68
1052
+ msgid "You can upgrade without leaving the admin panel by clicking below."
1053
+ msgstr ""
1054
+
1055
+ #: includes/Admin/Promo/Upgrade.php:69
1056
+ msgid "Free updates and email support included."
1057
+ msgstr ""
1058
+
1059
+ #: includes/Admin/Promo/Upgrade.php:70
1060
+ msgid "Upgrade Now"
1061
+ msgstr ""
1062
+
1063
+ #: includes/Admin/Promo/FeedbackNotice.php:72
1064
+ #, php-format
1065
+ msgid ""
1066
+ "Hey %s, it's Damian Góra from %s. You have used this free plugin for some "
1067
+ "time now, and I hope you like it!"
1068
+ msgstr ""
1069
+ "Cześć %s, tu Damian Góra z %s. Korzystasz z tej wyszukiwarki produktów od "
1070
+ "pewnego czasu i mam nadzieję że Ci się podoba!"
1071
+
1072
+ #: includes/Admin/Promo/FeedbackNotice.php:77
1073
+ #, php-format
1074
+ msgid ""
1075
+ "I have spent countless hours developing it, and it would mean a lot to me if "
1076
+ "you %ssupport it with a quick review on WordPress.org.%s"
1077
+ msgstr ""
1078
+ "Spędziłem wiele godzin na pisaniu tej wtyczki i potrzebuję motywacji do "
1079
+ "dalszego rozwoju wyszukiwarki. Byłbym bardzo szczęśliwy gdybyś %socenił/a "
1080
+ "moją wtyczkę na WordPress.org.%s Mała rzecz a cieszy :)"
1081
+
1082
+ #: includes/Admin/Promo/FeedbackNotice.php:83
1083
+ #, php-format
1084
+ msgid "Review %s"
1085
+ msgstr "Oceń teraz"
1086
+
1087
+ #: includes/Admin/Promo/FeedbackNotice.php:87
1088
+ msgid "No thanks"
1089
+ msgstr "Zamknij"
1090
+
1091
+ #: includes/Engines/TNTSearch/Indexer/Buildier.php:149
1092
+ #: includes/Engines/TNTSearchMySQL/Indexer/Buildier.php:151
1093
+ msgctxt "Admin, logs"
1094
+ msgid ""
1095
+ "The request to build a new index rejected. Another process is in progress."
1096
+ msgstr ""
1097
+
1098
+ #: includes/Engines/TNTSearch/Indexer/Buildier.php:155
1099
+ #: includes/Engines/TNTSearch/Indexer/Buildier.php:318
1100
+ #: includes/Engines/TNTSearchMySQL/Indexer/Buildier.php:159
1101
+ #: includes/Engines/TNTSearchMySQL/Indexer/Buildier.php:302
1102
+ msgctxt "Admin, logs"
1103
+ msgid "There are no tables in the database"
1104
+ msgstr ""
1105
+
1106
+ #: includes/Engines/TNTSearch/Indexer/Buildier.php:163
1107
+ #: includes/Engines/TNTSearchMySQL/Indexer/Buildier.php:168
1108
+ msgctxt "Admin, logs"
1109
+ msgid "Indexer started"
1110
+ msgstr ""
1111
+
1112
+ #: includes/Engines/TNTSearch/Indexer/Buildier.php:183
1113
+ #: includes/Engines/TNTSearch/Indexer/Buildier.php:202
1114
+ #: includes/Engines/TNTSearchMySQL/Indexer/Buildier.php:192
1115
+ msgctxt "Admin, logs"
1116
+ msgid "[Readable index] Building..."
1117
+ msgstr ""
1118
+
1119
+ #: includes/Engines/TNTSearch/Indexer/Buildier.php:198
1120
+ #: includes/Engines/TNTSearch/Indexer/Readable/AsyncProcess.php:168
1121
+ #: includes/Engines/TNTSearchMySQL/Indexer/Readable/AsyncProcess.php:168
1122
+ msgctxt "Admin, logs"
1123
+ msgid "[Readable index] Completed"
1124
+ msgstr ""
1125
+
1126
+ #: includes/Engines/TNTSearch/Indexer/Buildier.php:209
1127
+ #: includes/Engines/TNTSearch/Indexer/Searchable/AsyncRequest.php:37
1128
+ #: includes/Engines/TNTSearchMySQL/Indexer/Searchable/AsyncRequest.php:37
1129
+ msgctxt "Admin, logs"
1130
+ msgid "[Searchable index] Building..."
1131
+ msgstr ""
1132
+
1133
+ #: includes/Engines/TNTSearch/Indexer/Buildier.php:220
1134
+ #: includes/Engines/TNTSearch/Indexer/Searchable/AsyncRequest.php:53
1135
+ #: includes/Engines/TNTSearchMySQL/Indexer/Searchable/AsyncRequest.php:53
1136
+ msgctxt "Admin, logs"
1137
+ msgid "[Searchable index] Completed"
1138
+ msgstr ""
1139
+
1140
+ #: includes/Engines/TNTSearch/Indexer/Buildier.php:393
1141
+ #: includes/Engines/TNTSearchMySQL/Indexer/Buildier.php:377
1142
+ msgid "Wait... Indexing in progress"
1143
+ msgstr ""
1144
+
1145
+ #: includes/Engines/TNTSearch/Indexer/Buildier.php:394
1146
+ #: includes/Engines/TNTSearchMySQL/Indexer/Buildier.php:378
1147
+ msgid "This process will continue in the background. You can leave this page!"
1148
+ msgstr ""
1149
+
1150
+ #: includes/Engines/TNTSearch/Indexer/Buildier.php:398
1151
+ #: includes/Engines/TNTSearchMySQL/Indexer/Buildier.php:382
1152
+ msgid "Wait... The index build process is canceling"
1153
+ msgstr ""
1154
+
1155
+ #: includes/Engines/TNTSearch/Indexer/Buildier.php:399
1156
+ #: includes/Engines/TNTSearchMySQL/Indexer/Buildier.php:383
1157
+ msgid "Canceling..."
1158
+ msgstr ""
1159
+
1160
+ #: includes/Engines/TNTSearch/Indexer/Buildier.php:404
1161
+ #: includes/Engines/TNTSearchMySQL/Indexer/Buildier.php:388
1162
+ msgid "The search index was built successfully."
1163
+ msgstr ""
1164
+
1165
+ #: includes/Engines/TNTSearch/Indexer/Buildier.php:405
1166
+ #: includes/Engines/TNTSearchMySQL/Indexer/Buildier.php:389
1167
+ msgid "Completed. Works."
1168
+ msgstr ""
1169
+
1170
+ #: includes/Engines/TNTSearch/Indexer/Buildier.php:409
1171
+ #: includes/Engines/TNTSearchMySQL/Indexer/Buildier.php:393
1172
+ msgid "The search index could not be built."
1173
+ msgstr ""
1174
+
1175
+ #: includes/Engines/TNTSearch/Indexer/Buildier.php:410
1176
+ #: includes/Engines/TNTSearchMySQL/Indexer/Buildier.php:394
1177
+ msgid "Errors"
1178
+ msgstr ""
1179
+
1180
+ #: includes/Engines/TNTSearch/Indexer/Buildier.php:415
1181
+ #: includes/Engines/TNTSearchMySQL/Indexer/Buildier.php:399
1182
+ msgid "Not exist"
1183
+ msgstr ""
1184
+
1185
+ #: includes/Engines/TNTSearch/Indexer/Buildier.php:437
1186
+ #: includes/Engines/TNTSearchMySQL/Indexer/Buildier.php:421
1187
+ msgid "Stop process"
1188
+ msgstr ""
1189
+
1190
+ #: includes/Engines/TNTSearch/Indexer/Buildier.php:439
1191
+ #: includes/Engines/TNTSearchMySQL/Indexer/Buildier.php:424
1192
+ msgid "Rebuild index"
1193
+ msgstr ""
1194
+
1195
+ #: includes/Engines/TNTSearch/Indexer/Buildier.php:441
1196
+ #: includes/Engines/TNTSearchMySQL/Indexer/Buildier.php:427
1197
+ msgid "Try to build the index again."
1198
+ msgstr ""
1199
+
1200
+ #: includes/Engines/TNTSearch/Indexer/Taxonomy/Indexer.php:199
1201
+ #: includes/Engines/TNTSearchMySQL/Indexer/Taxonomy/Indexer.php:199
1202
+ msgctxt "Admin, logs"
1203
+ msgid "[Taxonomy index] Cleared"
1204
+ msgstr ""
1205
+
1206
+ #: includes/Engines/TNTSearch/Indexer/Taxonomy/Indexer.php:201
1207
+ #: includes/Engines/TNTSearchMySQL/Indexer/Taxonomy/Indexer.php:201
1208
+ msgctxt "Admin, logs"
1209
+ msgid "[Taxonomy index] Can not be cleared"
1210
+ msgstr ""
1211
+
1212
+ #: includes/Engines/TNTSearch/Indexer/Taxonomy/Request.php:38
1213
+ #: includes/Engines/TNTSearchMySQL/Indexer/Taxonomy/Request.php:38
1214
+ #, php-format
1215
+ msgctxt "Admin, logs"
1216
+ msgid "[Taxonomy index] Building %s..."
1217
+ msgstr ""
1218
+
1219
+ #: includes/Engines/TNTSearch/Indexer/Taxonomy/Request.php:51
1220
+ #: includes/Engines/TNTSearchMySQL/Indexer/Taxonomy/Request.php:51
1221
+ #, php-format
1222
+ msgctxt "Admin, logs"
1223
+ msgid "[Taxonomy index] Completed: %s, Not indexed: %s"
1224
+ msgstr ""
1225
+
1226
+ #: includes/Engines/TNTSearch/Indexer/Searchable/Indexer.php:176
1227
+ #: includes/Engines/TNTSearchMySQL/Indexer/Searchable/Indexer.php:171
1228
+ msgctxt "Admin, logs"
1229
+ msgid "[Searchable index] Cleared"
1230
+ msgstr ""
1231
+
1232
+ #: includes/Engines/TNTSearch/Indexer/Searchable/Indexer.php:178
1233
+ msgctxt "Admin, logs"
1234
+ msgid "[Searchable index] Can not be cleared"
1235
+ msgstr ""
1236
+
1237
+ #: includes/Engines/TNTSearch/Indexer/Readable/Indexer.php:153
1238
+ #: includes/Engines/TNTSearchMySQL/Indexer/Readable/Indexer.php:153
1239
+ msgctxt "Admin, logs"
1240
+ msgid "[Readable index] Cleared"
1241
+ msgstr ""
1242
+
1243
+ #: includes/Engines/TNTSearch/Indexer/Readable/Indexer.php:155
1244
+ #: includes/Engines/TNTSearchMySQL/Indexer/Readable/Indexer.php:155
1245
+ msgctxt "Admin, logs"
1246
+ msgid "[Readable index] Can not be cleared"
1247
+ msgstr ""
1248
+
1249
+ #: includes/Engines/TNTSearch/Indexer/Readable/AsyncProcess.php:121
1250
+ #: includes/Engines/TNTSearchMySQL/Indexer/Readable/AsyncProcess.php:121
1251
+ #, php-format
1252
+ msgctxt "Admin, logs"
1253
+ msgid "[Readable index] The queue <code>%s</code> was deleted "
1254
+ msgstr ""
1255
+
1256
+ #: includes/Engines/TNTSearch/Indexer/Readable/AsyncProcess.php:134
1257
+ #: includes/Engines/TNTSearchMySQL/Indexer/Readable/AsyncProcess.php:134
1258
+ #, php-format
1259
+ msgctxt "Admin, logs"
1260
+ msgid "[Readable index] Schedule <code>%s</code> was created "
1261
+ msgstr ""
1262
+
1263
+ #: includes/Engines/TNTSearch/Indexer/Readable/AsyncProcess.php:150
1264
+ #: includes/Engines/TNTSearchMySQL/Indexer/Readable/AsyncProcess.php:150
1265
+ #, php-format
1266
+ msgctxt "Admin, logs"
1267
+ msgid "[Readable index] The queue <code>%s</code> was created"
1268
+ msgstr ""
1269
+
1270
+ #. Name of the plugin
1271
+ msgid "AJAX Search for WooCommerce MysQL"
1272
+ msgstr ""
1273
+
1274
+ #. Description of the plugin
1275
+ msgid ""
1276
+ "Allows your customers to search products easily and quickly. It will display "
1277
+ "the results instantly while typing in an inputbox."
1278
+ msgstr ""
1279
+
1280
+ #. URI of the plugin
1281
+ msgid "https://wordpress.org/plugins/ajax-search-for-woocommerce/"
1282
+ msgstr "https://pl.wordpress.org/plugins/ajax-search-for-woocommerce/"
1283
+
1284
+ #. Author of the plugin
1285
+ msgid "Damian Góra"
1286
+ msgstr ""
1287
+
1288
+ #. Author URI of the plugin
1289
+ msgid "http://damiangora.com"
1290
+ msgstr ""
languages/ajax-search-for-woocommerce.pot CHANGED
@@ -3,387 +3,1271 @@ msgid ""
3
  msgstr ""
4
  "Project-Id-Version: PACKAGE VERSION\n"
5
  "Report-Msgid-Bugs-To: \n"
6
- "POT-Creation-Date: 2017-09-02 23:59+0000\n"
7
  "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
8
  "Last-Translator: Damian Góra <wp@damiangora.com>\n"
9
  "Language-Team: \n"
10
  "Language: \n"
11
- "Plural-Forms: nplurals=INTEGER; plural=EXPRESSION\n"
12
  "MIME-Version: 1.0\n"
13
  "Content-Type: text/plain; charset=UTF-8\n"
14
  "Content-Transfer-Encoding: 8bit\n"
15
- "X-Generator: Loco - https://localise.biz/"
16
 
17
- #: ajax-search-for-woocommerce.php:94
18
  msgid ""
19
- "<b>Ajax Search for WooCommerce</b>: You need PHP version at least 5.3 to run "
20
  "this plugin. You are currently using PHP version "
21
  msgstr ""
22
 
23
- #: ajax-search-for-woocommerce.php:111
24
- #, php-format
25
  msgid ""
26
- "<b>Ajax Search for WooCommerce</b> is enabled but not effective. It requires "
27
- "%s in order to work."
28
  msgstr ""
29
 
30
- #: includes/class-result-details.php:147
31
- msgid "Category"
 
 
 
32
  msgstr ""
33
 
34
- #: includes/class-result-details.php:149
35
- msgid "Tag"
 
 
36
  msgstr ""
37
 
38
- #: includes/class-search.php:167
39
- msgid "No results"
 
 
40
  msgstr ""
41
 
42
- #: includes/class-search.php:263 includes/class-search.php:314
43
- msgid "in"
 
44
  msgstr ""
45
 
46
- #: includes/widget.php:19
47
- msgid "Ajax (live) search form for WooCommerce"
48
  msgstr ""
49
 
50
- #: includes/widget.php:21 includes/admin/admin-menus.php:23
51
- msgid "Woo Ajax Search"
 
 
 
52
  msgstr ""
53
 
54
- #: includes/widget.php:26
55
- msgid "Title"
56
  msgstr ""
57
 
58
- #: includes/register-scripts.php:28
59
- msgctxt "For product badge: on sale"
60
- msgid "sale"
61
  msgstr ""
62
 
63
- #: includes/register-scripts.php:29
64
- msgctxt "For product badge: featured"
65
- msgid "featured"
66
  msgstr ""
67
 
68
- #: includes/tmpl/search-form.php:19
69
  msgid "Products search"
70
  msgstr ""
71
 
72
- #: includes/tmpl/search-form.php:27
73
- #: includes/admin/settings/class-settings.php:139
74
  msgid "Search for products..."
75
  msgstr ""
76
 
77
- #. Name of the plugin
78
- #: includes/admin/admin-menus.php:23 includes/admin/views/settings.php:9
79
- msgid "Ajax Search for WooCommerce"
80
  msgstr ""
81
 
82
- #: includes/admin/settings/class-settings.php:69
83
- msgid "Basic"
 
 
 
 
84
  msgstr ""
85
 
86
- #: includes/admin/settings/class-settings.php:73
87
- msgid "Advanced"
88
  msgstr ""
89
 
90
- #: includes/admin/settings/class-settings.php:77
91
- msgid "Extra Details"
92
  msgstr ""
93
 
94
- #: includes/admin/settings/class-settings.php:81
95
- msgid "Style"
96
  msgstr ""
97
 
98
- #: includes/admin/settings/class-settings.php:101
 
 
 
 
99
  msgid "How to use?"
100
  msgstr ""
101
 
102
- #: includes/admin/settings/class-settings.php:107
103
  msgid "Suggestions limit"
104
  msgstr ""
105
 
106
- #: includes/admin/settings/class-settings.php:110
107
  msgid "Maximum number of suggestions rows."
108
  msgstr ""
109
 
110
- #: includes/admin/settings/class-settings.php:115
111
  msgid "Minimum characters"
112
  msgstr ""
113
 
114
- #: includes/admin/settings/class-settings.php:118
115
  msgid "Minimum number of characters required to trigger autosuggest."
116
  msgstr ""
117
 
118
- #: includes/admin/settings/class-settings.php:123
 
 
 
 
 
 
 
 
119
  msgid "Show submit button"
120
  msgstr ""
121
 
122
- #: includes/admin/settings/class-settings.php:130
 
 
 
 
123
  msgid "Search submit button text"
124
  msgstr ""
125
 
126
- #: includes/admin/settings/class-settings.php:132
127
- msgid "To display a magnifier icon leave this field empty."
128
  msgstr ""
129
 
130
- #: includes/admin/settings/class-settings.php:133
131
  msgid "Search"
132
  msgstr ""
133
 
134
- #: includes/admin/settings/class-settings.php:137
135
  msgid "Search input placeholder"
136
  msgstr ""
137
 
138
- #: includes/admin/settings/class-settings.php:143
139
- msgid "Show details box"
140
  msgstr ""
141
 
142
- #: includes/admin/settings/class-settings.php:146
143
- msgid ""
144
- "The Details box is an additional container for extended information. The "
145
- "details are changed dynamically when you hover the mouse over one of the "
146
- "suggestions."
147
  msgstr ""
148
 
149
- #: includes/admin/settings/class-settings.php:153
150
- msgid "Product search"
 
151
  msgstr ""
152
 
153
- #: includes/admin/settings/class-settings.php:158
154
- msgid "Search in products content"
155
  msgstr ""
156
 
157
- #: includes/admin/settings/class-settings.php:164
158
- msgid "Search in products excerpt"
159
  msgstr ""
160
 
161
- #: includes/admin/settings/class-settings.php:170
162
- msgid "Search in products SKU"
163
  msgstr ""
164
 
165
- #: includes/admin/settings/class-settings.php:176
166
- msgid "Exclude 'out of stock' products"
167
  msgstr ""
168
 
169
- #: includes/admin/settings/class-settings.php:182
170
- msgid "Taxonomy search"
171
  msgstr ""
172
 
173
- #: includes/admin/settings/class-settings.php:187
174
- msgid "Show matching categories"
175
  msgstr ""
176
 
177
- #: includes/admin/settings/class-settings.php:193
178
- msgid "Show matching tags"
179
  msgstr ""
180
 
181
- #: includes/admin/settings/class-settings.php:199
182
- msgid "Suggestions output"
183
  msgstr ""
184
 
185
- #: includes/admin/settings/class-settings.php:204
186
- msgid "Show product image"
187
  msgstr ""
188
 
189
- #: includes/admin/settings/class-settings.php:210
190
- msgid "Show price"
191
  msgstr ""
192
 
193
- #: includes/admin/settings/class-settings.php:216
194
- msgid "Show product description"
195
  msgstr ""
196
 
197
- #: includes/admin/settings/class-settings.php:222
198
- msgid "Show SKU"
199
  msgstr ""
200
 
201
- #: includes/admin/settings/class-settings.php:242
202
- msgid "Category and tag details:"
203
  msgstr ""
204
 
205
- #: includes/admin/settings/class-settings.php:247
206
- msgid "Show"
207
  msgstr ""
208
 
209
- #: includes/admin/settings/class-settings.php:250
210
- msgid "All Product"
211
  msgstr ""
212
 
213
- #: includes/admin/settings/class-settings.php:251
214
- msgid "Featured Products"
215
  msgstr ""
216
 
217
- #: includes/admin/settings/class-settings.php:252
218
- msgid "On-sale Products"
 
 
 
 
 
219
  msgstr ""
220
 
221
- #: includes/admin/settings/class-settings.php:258
222
- #: includes/admin/settings/class-settings.php:270
223
- msgid "Order by"
224
  msgstr ""
225
 
226
- #: includes/admin/settings/class-settings.php:261
227
- msgid "Date"
 
228
  msgstr ""
229
 
230
- #: includes/admin/settings/class-settings.php:262
231
- msgid "Price"
232
  msgstr ""
233
 
234
- #: includes/admin/settings/class-settings.php:263
235
- msgid "Random"
236
  msgstr ""
237
 
238
- #: includes/admin/settings/class-settings.php:264
239
- msgid "Sales"
240
  msgstr ""
241
 
242
- #: includes/admin/settings/class-settings.php:273
243
- msgid "DESC"
244
  msgstr ""
245
 
246
- #: includes/admin/settings/class-settings.php:274
247
- msgid "ASC"
248
  msgstr ""
249
 
250
- #: includes/admin/settings/class-settings.php:280
251
- msgid "Other"
252
  msgstr ""
253
 
254
- #: includes/admin/settings/class-settings.php:285
255
- msgid "Details box position"
256
  msgstr ""
257
 
258
- #: includes/admin/settings/class-settings.php:287
259
- msgid ""
260
- "If your search form is very close to the right window screen, then select "
261
- "left."
 
 
262
  msgstr ""
263
 
264
- #: includes/admin/settings/class-settings.php:289
265
- msgid "Left"
266
  msgstr ""
267
 
268
- #: includes/admin/settings/class-settings.php:290
269
- msgid "Right"
270
  msgstr ""
271
 
272
- #: includes/admin/settings/class-settings.php:298
273
  msgid "Search form"
274
  msgstr ""
275
 
276
- #: includes/admin/settings/class-settings.php:303
277
  msgid "Search input background"
278
  msgstr ""
279
 
280
- #: includes/admin/settings/class-settings.php:309
281
  msgid "Search input text"
282
  msgstr ""
283
 
284
- #: includes/admin/settings/class-settings.php:315
285
  msgid "Search input border"
286
  msgstr ""
287
 
288
- #: includes/admin/settings/class-settings.php:321
289
  msgid "Search submit background"
290
  msgstr ""
291
 
292
- #: includes/admin/settings/class-settings.php:327
293
  msgid "Search submit text"
294
  msgstr ""
295
 
296
- #: includes/admin/settings/class-settings.php:333
297
  msgid "Suggestions"
298
  msgstr ""
299
 
300
- #: includes/admin/settings/class-settings.php:338
301
  msgid "Suggestion background"
302
  msgstr ""
303
 
304
- #: includes/admin/settings/class-settings.php:344
305
  msgid "Suggestion selected"
306
  msgstr ""
307
 
308
- #: includes/admin/settings/class-settings.php:350
309
  msgid "Text color"
310
  msgstr ""
311
 
312
- #: includes/admin/settings/class-settings.php:356
313
  msgid "Highlight color"
314
  msgstr ""
315
 
316
- #: includes/admin/settings/class-settings.php:362
317
  msgid "Border color"
318
  msgstr ""
319
 
320
- #: includes/admin/settings/class-settings.php:368
321
- msgid "Suggestions width"
 
 
 
 
322
  msgstr ""
323
 
324
- #: includes/admin/settings/class-settings.php:371
325
  msgid ""
326
- "Overvrite the suggestions container width. Leave this field empty to adjust "
327
- "the suggestions container width to the search input width."
328
  msgstr ""
329
 
330
- #: includes/admin/settings/class-settings.php:376
331
- msgid "Preloader"
332
  msgstr ""
333
 
334
- #: includes/admin/settings/class-settings.php:381
335
- msgid "Show preloader"
336
  msgstr ""
337
 
338
- #: includes/admin/settings/class-settings.php:387
339
- msgid "Upload preloader image"
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
340
  msgstr ""
341
 
342
- #: includes/admin/views/how-to-use.php:2
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
343
  msgid "There are two easy ways to display the search form"
344
  msgstr ""
345
 
346
- #: includes/admin/views/how-to-use.php:3
347
  #, php-format
348
  msgid "Use a shortcode %s"
349
  msgstr ""
350
 
351
- #: includes/admin/views/how-to-use.php:4
352
  #, php-format
353
- msgid "Go to the %s and choose \"Woo Ajax Search\""
354
  msgstr ""
355
 
356
- #: includes/admin/views/how-to-use.php:4
357
  msgid "Widgets Screen"
358
  msgstr ""
359
 
360
- #: includes/admin/Promo/FeedbackNotice.php:68
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
361
  #, php-format
362
  msgid ""
363
  "Hey %s, it's Damian Góra from %s. You have used this free plugin for some "
364
  "time now, and I hope you like it!"
365
  msgstr ""
366
 
367
- #: includes/admin/Promo/FeedbackNotice.php:73
368
  #, php-format
369
  msgid ""
370
  "I have spent countless hours developing it, and it would mean a lot to me if "
371
  "you %ssupport it with a quick review on WordPress.org.%s"
372
  msgstr ""
373
 
374
- #: includes/admin/Promo/FeedbackNotice.php:79
375
  #, php-format
376
  msgid "Review %s"
377
  msgstr ""
378
 
379
- #: includes/admin/Promo/FeedbackNotice.php:83
380
  msgid "No thanks"
381
  msgstr ""
382
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
383
  #. Description of the plugin
384
  msgid ""
385
- "The plugin allows you to display the WooCommerce AJAX search form anywhere "
386
- "on the page."
387
  msgstr ""
388
 
389
  #. URI of the plugin
3
  msgstr ""
4
  "Project-Id-Version: PACKAGE VERSION\n"
5
  "Report-Msgid-Bugs-To: \n"
6
+ "POT-Creation-Date: 2019-05-03 21:18+0000\n"
7
  "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
8
  "Last-Translator: Damian Góra <wp@damiangora.com>\n"
9
  "Language-Team: \n"
10
  "Language: \n"
11
+ "Plural-Forms: nplurals=INTEGER; plural=EXPRESSION;\n"
12
  "MIME-Version: 1.0\n"
13
  "Content-Type: text/plain; charset=UTF-8\n"
14
  "Content-Transfer-Encoding: 8bit\n"
15
+ "X-Generator: Loco https://localise.biz/"
16
 
17
+ #: ajax-search-for-woocommerce.php:198
18
  msgid ""
19
+ "<b>AJAX Search for WooCommerce</b>: You need PHP version at least 5.3 to run "
20
  "this plugin. You are currently using PHP version "
21
  msgstr ""
22
 
23
+ #: ajax-search-for-woocommerce.php:221
 
24
  msgid ""
25
+ "<b>AJAX Search for WooCommerce</b>: You need PHP version at least 5.5 to run "
26
+ "this plugin. You are currently using PHP version "
27
  msgstr ""
28
 
29
+ #: ajax-search-for-woocommerce.php:250
30
+ #, php-format
31
+ msgid ""
32
+ "<b>AJAX Search for WooCommerce</b>:<br /> Your PHP version <b><i>%s</i></b> "
33
+ "will not longer supported in the next plugin releases."
34
  msgstr ""
35
 
36
+ #: ajax-search-for-woocommerce.php:252
37
+ msgid ""
38
+ " You have to update your PHP version to least 5.5 (recommended 7.2 or "
39
+ "greater)."
40
  msgstr ""
41
 
42
+ #: ajax-search-for-woocommerce.php:255
43
+ msgid ""
44
+ "If you cannot upgrade your PHP version yourself, you can send an email to "
45
+ "your host."
46
  msgstr ""
47
 
48
+ #: ajax-search-for-woocommerce.php:258
49
+ msgid ""
50
+ "If you do not upgrade the php version, the next plugin release will not work!"
51
  msgstr ""
52
 
53
+ #: ajax-search-for-woocommerce.php:263
54
+ msgid "Remind me again in week."
55
  msgstr ""
56
 
57
+ #: ajax-search-for-woocommerce.php:285
58
+ #, php-format
59
+ msgid ""
60
+ "<b>AJAX Search for WooCommerce</b> is enabled but not effective. It requires "
61
+ "%s in order to work."
62
  msgstr ""
63
 
64
+ #: widget.php:25
65
+ msgid "AJAX (live) search form for WooCommerce"
66
  msgstr ""
67
 
68
+ #: widget.php:27
69
+ msgid "Woo AJAX Search"
 
70
  msgstr ""
71
 
72
+ #: widget.php:32
73
+ msgid "Title"
 
74
  msgstr ""
75
 
76
+ #: partials/search-form.php:19 backward-compatibility/1-1-7/search-form.php:67
77
  msgid "Products search"
78
  msgstr ""
79
 
80
+ #: partials/search-form.php:26 includes/Settings.php:188
81
+ #: backward-compatibility/1-1-7/search-form.php:74
82
  msgid "Search for products..."
83
  msgstr ""
84
 
85
+ #: includes/Settings.php:86
86
+ msgid "Basic"
 
87
  msgstr ""
88
 
89
+ #: includes/Settings.php:90
90
+ msgid "Form"
91
+ msgstr ""
92
+
93
+ #: includes/Settings.php:94
94
+ msgid "Colors"
95
  msgstr ""
96
 
97
+ #: includes/Settings.php:98
98
+ msgid "Scope"
99
  msgstr ""
100
 
101
+ #: includes/Settings.php:105 includes/Helpers.php:441 includes/Helpers.php:444
102
+ msgid "Pro"
103
  msgstr ""
104
 
105
+ #: includes/Settings.php:111
106
+ msgid "Increase sales"
107
  msgstr ""
108
 
109
+ #: includes/Settings.php:113
110
+ msgid "by simple tricks"
111
+ msgstr ""
112
+
113
+ #: includes/Settings.php:136
114
  msgid "How to use?"
115
  msgstr ""
116
 
117
+ #: includes/Settings.php:142
118
  msgid "Suggestions limit"
119
  msgstr ""
120
 
121
+ #: includes/Settings.php:145
122
  msgid "Maximum number of suggestions rows."
123
  msgstr ""
124
 
125
+ #: includes/Settings.php:150
126
  msgid "Minimum characters"
127
  msgstr ""
128
 
129
+ #: includes/Settings.php:153
130
  msgid "Minimum number of characters required to trigger autosuggest."
131
  msgstr ""
132
 
133
+ #: includes/Settings.php:158
134
+ msgid "Max form width"
135
+ msgstr ""
136
+
137
+ #: includes/Settings.php:161
138
+ msgid "To set 100% width leave blank"
139
+ msgstr ""
140
+
141
+ #: includes/Settings.php:166
142
  msgid "Show submit button"
143
  msgstr ""
144
 
145
+ #: includes/Settings.php:173
146
+ msgid "Custom labels"
147
+ msgstr ""
148
+
149
+ #: includes/Settings.php:179
150
  msgid "Search submit button text"
151
  msgstr ""
152
 
153
+ #: includes/Settings.php:181
154
+ msgid "To display the magnifier icon leave this field empty."
155
  msgstr ""
156
 
157
+ #: includes/Settings.php:182
158
  msgid "Search"
159
  msgstr ""
160
 
161
+ #: includes/Settings.php:186
162
  msgid "Search input placeholder"
163
  msgstr ""
164
 
165
+ #: includes/Settings.php:192
166
+ msgid "More results"
167
  msgstr ""
168
 
169
+ #: includes/Settings.php:194 includes/Scripts.php:41
170
+ msgid "See all results..."
 
 
 
171
  msgstr ""
172
 
173
+ #: includes/Settings.php:198
174
+ msgctxt "admin"
175
+ msgid "No results"
176
  msgstr ""
177
 
178
+ #: includes/Settings.php:200 includes/Scripts.php:42
179
+ msgid "No results"
180
  msgstr ""
181
 
182
+ #: includes/Settings.php:206
183
+ msgid "Suggestions output"
184
  msgstr ""
185
 
186
+ #: includes/Settings.php:212
187
+ msgid "Show product image"
188
  msgstr ""
189
 
190
+ #: includes/Settings.php:218
191
+ msgid "Show price"
192
  msgstr ""
193
 
194
+ #: includes/Settings.php:224
195
+ msgid "Show product description"
196
  msgstr ""
197
 
198
+ #: includes/Settings.php:230
199
+ msgid "Show SKU"
200
  msgstr ""
201
 
202
+ #: includes/Settings.php:236
203
+ msgid "Also show matching categories"
204
  msgstr ""
205
 
206
+ #: includes/Settings.php:242
207
+ msgid "Also show matching tags"
208
  msgstr ""
209
 
210
+ #: includes/Settings.php:260
211
+ msgid "Mobile"
212
  msgstr ""
213
 
214
+ #: includes/Settings.php:266
215
+ msgid "Overlay search (beta)"
216
  msgstr ""
217
 
218
+ #: includes/Settings.php:267
219
+ msgid "Enhances user experience on mobile"
220
  msgstr ""
221
 
222
+ #: includes/Settings.php:273
223
+ msgid "Preloader"
224
  msgstr ""
225
 
226
+ #: includes/Settings.php:279
227
+ msgid "Show preloader"
228
  msgstr ""
229
 
230
+ #: includes/Settings.php:285
231
+ msgid "Upload preloader image"
232
  msgstr ""
233
 
234
+ #: includes/Settings.php:291
235
+ msgid "Details box"
236
  msgstr ""
237
 
238
+ #: includes/Settings.php:297
239
+ msgid "Show details box"
240
  msgstr ""
241
 
242
+ #: includes/Settings.php:301
243
+ #, php-format
244
+ msgid ""
245
+ "The Details box is an additional container for extended information. The "
246
+ "details are changed dynamically when you hover the mouse over one of the "
247
+ "suggestions. <a href=\"%s\" target=\"_blank\">See where the details box will "
248
+ "appear.</a>"
249
  msgstr ""
250
 
251
+ #: includes/Settings.php:306
252
+ msgid "Products list"
 
253
  msgstr ""
254
 
255
+ #: includes/Settings.php:308 includes/Settings.php:322
256
+ #: includes/Settings.php:336
257
+ msgid "Applies only to category or tags suggestions type"
258
  msgstr ""
259
 
260
+ #: includes/Settings.php:310
261
+ msgid "All Product"
262
  msgstr ""
263
 
264
+ #: includes/Settings.php:311
265
+ msgid "Featured Products"
266
  msgstr ""
267
 
268
+ #: includes/Settings.php:312
269
+ msgid "On-sale Products"
270
  msgstr ""
271
 
272
+ #: includes/Settings.php:319
273
+ msgid "Order by"
274
  msgstr ""
275
 
276
+ #: includes/Settings.php:324
277
+ msgid "Date"
278
  msgstr ""
279
 
280
+ #: includes/Settings.php:325
281
+ msgid "Price"
282
  msgstr ""
283
 
284
+ #: includes/Settings.php:326
285
+ msgid "Random"
286
  msgstr ""
287
 
288
+ #: includes/Settings.php:327
289
+ msgid "Sales"
290
+ msgstr ""
291
+
292
+ #: includes/Settings.php:333
293
+ msgid "Order"
294
  msgstr ""
295
 
296
+ #: includes/Settings.php:338
297
+ msgid "DESC"
298
  msgstr ""
299
 
300
+ #: includes/Settings.php:339
301
+ msgid "ASC"
302
  msgstr ""
303
 
304
+ #: includes/Settings.php:347
305
  msgid "Search form"
306
  msgstr ""
307
 
308
+ #: includes/Settings.php:353
309
  msgid "Search input background"
310
  msgstr ""
311
 
312
+ #: includes/Settings.php:359
313
  msgid "Search input text"
314
  msgstr ""
315
 
316
+ #: includes/Settings.php:365
317
  msgid "Search input border"
318
  msgstr ""
319
 
320
+ #: includes/Settings.php:371
321
  msgid "Search submit background"
322
  msgstr ""
323
 
324
+ #: includes/Settings.php:377
325
  msgid "Search submit text"
326
  msgstr ""
327
 
328
+ #: includes/Settings.php:383
329
  msgid "Suggestions"
330
  msgstr ""
331
 
332
+ #: includes/Settings.php:389
333
  msgid "Suggestion background"
334
  msgstr ""
335
 
336
+ #: includes/Settings.php:395
337
  msgid "Suggestion selected"
338
  msgstr ""
339
 
340
+ #: includes/Settings.php:401
341
  msgid "Text color"
342
  msgstr ""
343
 
344
+ #: includes/Settings.php:407
345
  msgid "Highlight color"
346
  msgstr ""
347
 
348
+ #: includes/Settings.php:413
349
  msgid "Border color"
350
  msgstr ""
351
 
352
+ #: includes/Settings.php:421
353
+ msgid "Search scope"
354
+ msgstr ""
355
+
356
+ #: includes/Settings.php:427
357
+ msgid "Info"
358
  msgstr ""
359
 
360
+ #: includes/Settings.php:429
361
  msgid ""
362
+ "Searching in products names is always enabled. You can extend or narrow the "
363
+ "searching scope using the following options."
364
  msgstr ""
365
 
366
+ #: includes/Settings.php:434
367
+ msgid "Search in description"
368
  msgstr ""
369
 
370
+ #: includes/Settings.php:440
371
+ msgid "Search in short description"
372
  msgstr ""
373
 
374
+ #: includes/Settings.php:446
375
+ msgid "Search in SKU"
376
+ msgstr ""
377
+
378
+ #: includes/Settings.php:448
379
+ msgid "Searching also in variable products SKU"
380
+ msgstr ""
381
+
382
+ #: includes/Settings.php:448
383
+ #, php-format
384
+ msgid ""
385
+ "Searching in variable products SKU is available only in <a href=\"%s\">the "
386
+ "pro version</a>. It will also be available in the free version soon."
387
+ msgstr ""
388
+
389
+ #: includes/Settings.php:453
390
+ msgid "Search in attributes"
391
+ msgstr ""
392
+
393
+ #: includes/Settings.php:460
394
+ msgid "Exclude 'out of stock' products"
395
+ msgstr ""
396
+
397
+ #: includes/Settings.php:468
398
+ msgid "Pro features"
399
+ msgstr ""
400
+
401
+ #: includes/Settings.php:474
402
+ msgid "Fuzziness"
403
+ msgstr ""
404
+
405
+ #: includes/Settings.php:480
406
+ msgid "Speed up search!"
407
+ msgstr ""
408
+
409
+ #: includes/Settings.php:487
410
+ msgid ""
411
+ "<strong>Increases sales conversions.</strong> Returns sugestions based on "
412
+ "likely relevance even though a search keyword may not exactly match. E.g if "
413
+ "you type \"ipho<b>m</b>e\" you get the same results as for \"iphone\""
414
+ msgstr ""
415
+
416
+ #: includes/Settings.php:493
417
+ msgid "Profits"
418
+ msgstr ""
419
+
420
+ #: includes/Settings.php:500 includes/Settings.php:532
421
+ msgid "Fuzzy matching"
422
+ msgstr ""
423
+
424
+ #: includes/Settings.php:505 includes/Settings.php:537
425
+ msgid "-- Disabled"
426
+ msgstr ""
427
+
428
+ #: includes/Settings.php:506 includes/Settings.php:538
429
+ msgid "Soft"
430
+ msgstr ""
431
+
432
+ #: includes/Settings.php:507 includes/Settings.php:539
433
+ msgid "Normal"
434
+ msgstr ""
435
+
436
+ #: includes/Settings.php:508 includes/Settings.php:540
437
+ msgid "Hard"
438
+ msgstr ""
439
+
440
+ #: includes/Settings.php:518
441
+ msgid "Select the database"
442
+ msgstr ""
443
+
444
+ #: includes/Settings.php:522
445
+ msgid "SQLite"
446
+ msgstr ""
447
+
448
+ #: includes/Settings.php:523
449
+ msgid "MySQL"
450
+ msgstr ""
451
+
452
+ #: includes/Settings.php:552 includes/Settings.php:560
453
+ msgid "Index status"
454
+ msgstr ""
455
+
456
+ #: includes/BackwardCompatibility.php:338 partials/admin/indexer-header.php:21
457
+ msgid "Troubleshooting"
458
+ msgstr ""
459
+
460
+ #: includes/BackwardCompatibility.php:339
461
+ msgid "troubleshooting"
462
+ msgstr ""
463
+
464
+ #: includes/BackwardCompatibility.php:348
465
+ msgid "<span style=\"color:#9b5c8f\">Complete the update process</span>"
466
+ msgstr ""
467
+
468
+ #: includes/BackwardCompatibility.php:348
469
+ msgid ""
470
+ "In the last update we have changed the AJAX search form on the frontend (CSS "
471
+ "styles, names of the HTML classes etc.). You have to check if the AJAX "
472
+ "search form looks correct with your theme after these changes."
473
+ msgstr ""
474
+
475
+ #: includes/BackwardCompatibility.php:356
476
+ msgid "What should you do now?"
477
+ msgstr ""
478
+
479
+ #: includes/BackwardCompatibility.php:359
480
+ msgid ""
481
+ "Switch manually to the latest version to check if the AJAX search form "
482
+ "displays correctly with your theme"
483
+ msgstr ""
484
+
485
+ #: includes/BackwardCompatibility.php:364
486
+ msgid "You have activated the latest version. Follow the steps below:"
487
+ msgstr ""
488
+
489
+ #: includes/BackwardCompatibility.php:367
490
+ #, php-format
491
+ msgid "Visit your <a target=\"_blank\" href=\"%s\">store</a>"
492
+ msgstr ""
493
+
494
+ #: includes/BackwardCompatibility.php:368
495
+ msgid "Check if the AJAX search form displays correctly"
496
+ msgstr ""
497
+
498
+ #: includes/BackwardCompatibility.php:369
499
+ #, php-format
500
+ msgid "If it is ok, click %s"
501
+ msgstr ""
502
+
503
+ #: includes/BackwardCompatibility.php:369
504
+ msgid "finish the update"
505
+ msgstr ""
506
+
507
+ #: includes/BackwardCompatibility.php:370
508
+ #, php-format
509
+ msgid "If not, switch back to <code>previous version %s</code> and see %s"
510
+ msgstr ""
511
+
512
+ #: includes/BackwardCompatibility.php:377
513
+ msgid "Version switcher"
514
+ msgstr ""
515
+
516
+ #: includes/BackwardCompatibility.php:378
517
+ msgid "Something went wrong. Refresh the page and try again."
518
+ msgstr ""
519
+
520
+ #: includes/BackwardCompatibility.php:379
521
+ msgid "Saved!"
522
+ msgstr ""
523
+
524
+ #: includes/BackwardCompatibility.php:381
525
+ msgid "previous version"
526
+ msgstr ""
527
+
528
+ #: includes/BackwardCompatibility.php:388
529
+ msgid "latest version"
530
+ msgstr ""
531
+
532
+ #: includes/BackwardCompatibility.php:395
533
+ #, php-format
534
+ msgid ""
535
+ "If the AJAX search form displays incorrectly after switching to the latest "
536
+ "version, see the %s"
537
+ msgstr ""
538
+
539
+ #: includes/BackwardCompatibility.php:402
540
+ msgid ""
541
+ "Your AJAX search form does not display correctly after manual switching to "
542
+ "the latest version."
543
+ msgstr ""
544
+
545
+ #: includes/BackwardCompatibility.php:406
546
+ msgid ""
547
+ "Probably your theme uses additional CSS styles to customize the appearance "
548
+ "of the AJAX search form. Contact the authors of your theme. Maybe they have "
549
+ "to update their CSS styles if necessary."
550
+ msgstr ""
551
+
552
+ #: includes/BackwardCompatibility.php:412
553
+ msgid "Your Theme Details"
554
+ msgstr ""
555
+
556
+ #: includes/BackwardCompatibility.php:417
557
+ msgctxt "Wordpress theme name"
558
+ msgid "Name:"
559
+ msgstr ""
560
+
561
+ #: includes/BackwardCompatibility.php:432
562
+ msgid "Author:"
563
+ msgstr ""
564
+
565
+ #: includes/BackwardCompatibility.php:449
566
+ msgid "A sample e-mail message that you can send them:"
567
+ msgstr ""
568
+
569
+ #: includes/BackwardCompatibility.php:454
570
+ #, php-format
571
+ msgid ""
572
+ "Hello,\n"
573
+ " <br /><br />\n"
574
+ " I use your %s theme with AJAX Search for WooCommerce "
575
+ "plugin - (https://wordpress.org/plugins/ajax-search-for-woocommerce/)\n"
576
+ " <br /><br />\n"
577
+ " In the lates version of AJAX Search for WooCommerce %s "
578
+ "they have changed the search form on the frontend (CSS, HTML etc.).\n"
579
+ " <br /><br />\n"
580
+ " Could you check it and update your CSS if necessary?"
581
+ msgstr ""
582
+
583
+ #: includes/BackwardCompatibility.php:470
584
+ msgid ""
585
+ "If you have any questions, do not hesitate contact <a href=\"mailto:"
586
+ "dgoraplugins@gmail.com?subject=Ajax Search for WooCommerce - Update "
587
+ "problem\">our support </a> or <a href=\"https://wordpress."
588
+ "org/support/plugin/ajax-search-for-woocommerce\" target=\"_blank\">write on "
589
+ "the WordPress.org Support</a>."
590
+ msgstr ""
591
+
592
+ #: includes/BackwardCompatibility.php:477
593
+ msgid "Remind me later"
594
+ msgstr ""
595
+
596
+ #: includes/Scripts.php:34
597
+ msgctxt "For product badge: on sale"
598
+ msgid "sale"
599
+ msgstr ""
600
+
601
+ #: includes/Scripts.php:35
602
+ msgctxt "For product badge: featured"
603
+ msgid "featured"
604
+ msgstr ""
605
+
606
+ #: includes/Scripts.php:36 includes/Engines/WordPressNative/DetailsBox.php:168
607
+ msgid "Category"
608
+ msgstr ""
609
+
610
+ #: includes/Scripts.php:37
611
+ msgid "tag"
612
+ msgstr ""
613
+
614
+ #: includes/Scripts.php:38
615
+ msgid "SKU:"
616
+ msgstr ""
617
+
618
+ #: includes/Scripts.php:64
619
+ msgctxt "in categories fe. in Books > Crime stories"
620
+ msgid "in"
621
+ msgstr ""
622
+
623
+ #: partials/admin/indexer-header.php:8
624
+ #, php-format
625
+ msgid "Indexed <strong>100&#37;</strong>, <strong>%d products</strong>."
626
+ msgstr ""
627
+
628
+ #: partials/admin/indexer-header.php:12
629
+ #, php-format
630
+ msgid "Last build %s"
631
+ msgstr ""
632
+
633
+ #: partials/admin/indexer-header.php:13
634
+ msgid "All products changes will be <strong>re-indexed automatically</strong>"
635
+ msgstr ""
636
+
637
+ #: partials/admin/indexer-header.php:24
638
+ #, php-format
639
+ msgid "First try to <a class=\"%s\" href=\"#\">build the index again</a>"
640
+ msgstr ""
641
+
642
+ #: partials/admin/indexer-header.php:25
643
+ #, php-format
644
+ msgid ""
645
+ "Go to <a target=\"_blank\" href=\"%s\">WooCommerce -> Status -> section "
646
+ "\"AJAX Search for WooCommerce Pro\"</a>. Is everything green?"
647
+ msgstr ""
648
+
649
+ #: partials/admin/indexer-header.php:26
650
+ #, php-format
651
+ msgid ""
652
+ "Go to <a target=\"_blank\" href=\"%s\">WooCommerce -> Status -> Logs (tab)"
653
+ "</a>. Open last \"fatal-errors...\". Look for a phrase \"ajax-search-for-"
654
+ "woocommerce\". Did you find anything significant?"
655
+ msgstr ""
656
+
657
+ #: partials/admin/indexer-header.php:27
658
+ #, php-format
659
+ msgid ""
660
+ "Is it still not working? Write a <a target=\"_blank\" href=\"%s\">support "
661
+ "request</a>."
662
+ msgstr ""
663
+
664
+ #: partials/admin/indexer-header.php:36
665
+ #: partials/admin/indexer-header-demo.php:8
666
+ msgid "Show details"
667
+ msgstr ""
668
+
669
+ #: partials/admin/indexer-header.php:37
670
+ msgid "Hide details"
671
+ msgstr ""
672
+
673
+ #: partials/admin/indexer-body.php:6
674
+ msgid ""
675
+ "Indexing... This process will continue in the background. You can leave this "
676
+ "page."
677
+ msgstr ""
678
+
679
+ #: partials/admin/indexer-body.php:8
680
+ msgid "Index build progress"
681
+ msgstr ""
682
+
683
+ #: partials/admin/indexer-body.php:11
684
+ #, php-format
685
+ msgid "Finalization... Wait a moment. (%s products)"
686
+ msgstr ""
687
+
688
+ #: partials/admin/indexer-body.php:15
689
+ msgid "Cancellation..."
690
  msgstr ""
691
 
692
+ #: partials/admin/indexer-body.php:32
693
+ msgid "Build ID"
694
+ msgstr ""
695
+
696
+ #: partials/admin/indexer-body.php:36
697
+ msgid "DB"
698
+ msgstr ""
699
+
700
+ #: partials/admin/indexer-body.php:40
701
+ msgid "Index build start"
702
+ msgstr ""
703
+
704
+ #: partials/admin/indexer-body.php:44
705
+ msgid "Status"
706
+ msgstr ""
707
+
708
+ #: partials/admin/indexer-body.php:48
709
+ msgid "Products"
710
+ msgstr ""
711
+
712
+ #: partials/admin/indexer-body.php:52
713
+ msgid "Searchable"
714
+ msgstr ""
715
+
716
+ #: partials/admin/indexer-body.php:56 partials/admin/indexer-body.php:79
717
+ #: partials/admin/indexer-body.php:104
718
+ msgid "Start"
719
+ msgstr ""
720
+
721
+ #: partials/admin/indexer-body.php:60 partials/admin/indexer-body.php:83
722
+ #: partials/admin/indexer-body.php:108
723
+ msgid "End"
724
+ msgstr ""
725
+
726
+ #: partials/admin/indexer-body.php:65 partials/admin/indexer-body.php:88
727
+ #: partials/admin/indexer-body.php:113
728
+ msgid "Time"
729
+ msgstr ""
730
+
731
+ #: partials/admin/indexer-body.php:74
732
+ msgid "Readable"
733
+ msgstr ""
734
+
735
+ #: partials/admin/indexer-body.php:99
736
+ msgid "Taxonomies"
737
+ msgstr ""
738
+
739
+ #: partials/admin/indexer-body.php:127
740
+ msgid "Logs"
741
+ msgstr ""
742
+
743
+ #: partials/admin/pro-starter.php:8
744
+ msgid ""
745
+ "You are using the Pro plugin version. Your customers will find the right "
746
+ "products <span>faster and simpler</span> and your sales will increase."
747
+ msgstr ""
748
+
749
+ #: partials/admin/pro-starter.php:14
750
+ #, php-format
751
+ msgid ""
752
+ "If you have any questions, do not hesitate to <a target=\"_blank\" "
753
+ "href=\"%s\">get in touch</a>."
754
+ msgstr ""
755
+
756
+ #: partials/admin/settings.php:12
757
+ msgid "AJAX Search for WooCommerce (PRO) Settings"
758
+ msgstr ""
759
+
760
+ #: partials/admin/settings.php:14
761
+ msgid "AJAX Search for WooCommerce Settings"
762
+ msgstr ""
763
+
764
+ #: partials/admin/indexer-header-demo.php:3
765
+ #: includes/Engines/TNTSearch/Indexer/Buildier.php:414
766
+ #: includes/Engines/TNTSearchMySQL/Indexer/Buildier.php:398
767
+ msgid "The search index does not exist yet. Build it now."
768
+ msgstr ""
769
+
770
+ #: partials/admin/indexer-header-demo.php:7
771
+ #: includes/Engines/TNTSearch/Indexer/Buildier.php:443
772
+ #: includes/Engines/TNTSearchMySQL/Indexer/Buildier.php:430
773
+ msgid "Build index"
774
+ msgstr ""
775
+
776
+ #: partials/admin/how-to-use.php:10
777
  msgid "There are two easy ways to display the search form"
778
  msgstr ""
779
 
780
+ #: partials/admin/how-to-use.php:11
781
  #, php-format
782
  msgid "Use a shortcode %s"
783
  msgstr ""
784
 
785
+ #: partials/admin/how-to-use.php:12
786
  #, php-format
787
+ msgid "Go to the %s and choose \"Woo AJAX Search\""
788
  msgstr ""
789
 
790
+ #: partials/admin/how-to-use.php:12
791
  msgid "Widgets Screen"
792
  msgstr ""
793
 
794
+ #: partials/admin/how-to-use.php:14
795
+ #, php-format
796
+ msgid ""
797
+ "Are there any difficulties? <a href=\"%s\">Upgrade now</a> and our "
798
+ "developers will do everything for you."
799
+ msgstr ""
800
+
801
+ #: partials/admin/system-status.php:5
802
+ msgid "Ajax Search for WooCommerce (Pro)"
803
+ msgstr ""
804
+
805
+ #: partials/admin/system-status.php:6
806
+ msgid "This section shows the plugin requirements."
807
+ msgstr ""
808
+
809
+ #: partials/admin/system-status.php:12
810
+ msgid "PHP extension (mbstring)"
811
+ msgstr ""
812
+
813
+ #: partials/admin/system-status.php:29
814
+ msgid "PHP extension (pdo_mysql)"
815
+ msgstr ""
816
+
817
+ #: partials/admin/system-status.php:46
818
+ msgid "PHP extension (sqlite3)"
819
+ msgstr ""
820
+
821
+ #: partials/admin/system-status.php:61
822
+ msgid "PHP extension (pdo_sqlite)"
823
+ msgstr ""
824
+
825
+ #: partials/admin/system-status.php:76
826
+ msgid "Index directory test"
827
+ msgstr ""
828
+
829
+ #: partials/admin/system-status.php:93
830
+ msgid "Default upload path"
831
+ msgstr ""
832
+
833
+ #: partials/admin/system-status.php:96
834
+ msgid "At this moment the plugin works only with default upload directory."
835
+ msgstr ""
836
+
837
+ #: partials/admin/system-status.php:113
838
+ msgid "DB readable tables exist"
839
+ msgstr ""
840
+
841
+ #: partials/admin/system-status.php:134
842
+ msgid "Finding wp-load.php from outside"
843
+ msgstr ""
844
+
845
+ #: partials/admin/system-status.php:143
846
+ msgid "The location of wp-load.php is not the default."
847
+ msgstr ""
848
+
849
+ #: partials/admin/system-status.php:158
850
+ msgid "Multisite"
851
+ msgstr ""
852
+
853
+ #: partials/admin/system-status.php:161
854
+ msgid ""
855
+ "The Ajax Search for WooCommerce (Pro) does not support multisite yet. "
856
+ "Multisite must be disabled."
857
+ msgstr ""
858
+
859
+ #: partials/admin/system-status.php:166
860
+ msgid "disabled"
861
+ msgstr ""
862
+
863
+ #: partials/admin/system-status.php:168
864
+ msgid "enabled"
865
+ msgstr ""
866
+
867
+ #: partials/admin/system-status.php:175
868
+ msgid "Conflicts with other plugins"
869
+ msgstr ""
870
+
871
+ #: partials/admin/system-status.php:178
872
+ msgid ""
873
+ "The Ajax Search for WooCommerce (Pro) does not support multilanguages yet."
874
+ msgstr ""
875
+
876
+ #: partials/admin/system-status.php:184
877
+ msgid "no"
878
+ msgstr ""
879
+
880
+ #: partials/admin/features.php:8
881
+ msgid ""
882
+ "If users can’t find the product they’re searching for, they can’t buy it. "
883
+ "Help your customers to find the right products <span>faster and "
884
+ "simpler</span>."
885
+ msgstr ""
886
+
887
+ #: partials/admin/features.php:10 includes/Admin/Promo/Upgrade.php:62
888
+ msgid ""
889
+ "Update now and increase your sales. You will receive 14-day satisfaction "
890
+ "guarantee. A return on investment will come very quickly."
891
+ msgstr ""
892
+
893
+ #: partials/admin/features.php:13
894
+ msgid "Speed up search! (even <b>10x faster</b>) - users love it!"
895
+ msgstr ""
896
+
897
+ #: partials/admin/features.php:14
898
+ msgid ""
899
+ "Help in embedding the search form in your theme. <b>Our developers will do "
900
+ "it for you</b>."
901
+ msgstr ""
902
+
903
+ #: partials/admin/features.php:15
904
+ msgid ""
905
+ "Efficient with a large number of products. Tested on <b>20 000 products</b>"
906
+ msgstr ""
907
+
908
+ #: partials/admin/features.php:16 includes/Admin/Promo/Upgrade.php:51
909
+ msgid "New modern search engine based on bm25 ranking algorithm"
910
+ msgstr ""
911
+
912
+ #: partials/admin/features.php:17 includes/Admin/Promo/Upgrade.php:52
913
+ msgid "Fuzzy search"
914
+ msgstr ""
915
+
916
+ #: partials/admin/features.php:18
917
+ msgid "Search in variation products SKUs (option)"
918
+ msgstr ""
919
+
920
+ #: partials/admin/features.php:19
921
+ msgid "Search in product attributes (option)"
922
+ msgstr ""
923
+
924
+ #: partials/admin/features.php:20
925
+ msgid "Advanced search analytics and tips (in plans)"
926
+ msgstr ""
927
+
928
+ #: partials/admin/features.php:21 includes/Admin/Promo/Upgrade.php:54
929
+ msgid "Individual customization of the search form (simple CSS improvements)"
930
+ msgstr ""
931
+
932
+ #: partials/admin/features.php:22
933
+ msgid "Individual tips and support"
934
+ msgstr ""
935
+
936
+ #: partials/admin/features.php:23
937
+ msgid "And more..."
938
+ msgstr ""
939
+
940
+ #: partials/admin/features.php:25
941
+ msgid "Upgrade Now!"
942
+ msgstr ""
943
+
944
+ #. Name of the plugin
945
+ #: includes/Admin/AdminMenu.php:31
946
+ msgid "Ajax Search for WooCommerce"
947
+ msgstr ""
948
+
949
+ #: includes/Admin/AdminMenu.php:32
950
+ msgid "AJAX search form"
951
+ msgstr ""
952
+
953
+ #: includes/Admin/SettingsAPI.php:572
954
+ msgid "Contact"
955
+ msgstr ""
956
+
957
+ #: includes/Admin/SettingsAPI.php:575
958
+ msgid "My Account"
959
+ msgstr ""
960
+
961
+ #: includes/Admin/Requirements.php:60
962
+ #, php-format
963
+ msgid "Required PHP version 5.5 or higher. You use %s"
964
+ msgstr ""
965
+
966
+ #: includes/Admin/Requirements.php:79 includes/Admin/Requirements.php:84
967
+ #: includes/Admin/Requirements.php:89 includes/Admin/Requirements.php:94
968
+ #, php-format
969
+ msgid "Required PHP extension: %s"
970
+ msgstr ""
971
+
972
+ #: includes/Admin/Requirements.php:128
973
+ #, php-format
974
+ msgid "Problem with permission for the directory: %s"
975
+ msgstr ""
976
+
977
+ #: includes/Admin/Requirements.php:181
978
+ #, php-format
979
+ msgid ""
980
+ "You use the %s plugin. The Ajax Search for WooCommerce PRO does not support "
981
+ "multilingual yet."
982
+ msgstr ""
983
+
984
+ #: includes/Admin/Requirements.php:205
985
+ msgid ""
986
+ "Your WordPress use the multisite. The Ajax Search for WooCommerce PRO does "
987
+ "not support multisite yet."
988
+ msgstr ""
989
+
990
+ #: includes/Admin/Requirements.php:222
991
+ msgid "Attention! Read this before the upgrade."
992
+ msgstr ""
993
+
994
+ #: includes/Admin/Requirements.php:223
995
+ msgid ""
996
+ "Ajax Search for WooCommerce PRO may not work properly in your environment "
997
+ "for the following reasons:"
998
+ msgstr ""
999
+
1000
+ #: includes/Admin/Requirements.php:233
1001
+ msgid "Ajax Search for WooCommerce PRO - Requirements"
1002
+ msgstr ""
1003
+
1004
+ #: includes/Admin/Requirements.php:234
1005
+ #, php-format
1006
+ msgid ""
1007
+ "If you have any questions, do not hesitate contact <a href=\"%s\">our "
1008
+ "support</a>."
1009
+ msgstr ""
1010
+
1011
+ #: includes/Engines/WordPressNative/DetailsBox.php:170
1012
+ msgid "Tag"
1013
+ msgstr ""
1014
+
1015
+ #: includes/Integrations/Themes/Storefront.php:28
1016
+ msgid "Storefront theme"
1017
+ msgstr ""
1018
+
1019
+ #: includes/Integrations/Themes/Storefront.php:35
1020
+ msgid "Replace search form"
1021
+ msgstr ""
1022
+
1023
+ #: includes/Integrations/Themes/Storefront.php:36
1024
+ msgid ""
1025
+ "Replace the Storefront theme's default product search with the Ajax Search "
1026
+ "for WooCommerce form."
1027
+ msgstr ""
1028
+
1029
+ #: includes/Admin/Promo/Upgrade.php:50
1030
+ msgid "Speed up search! (even 10x faster) - users love it!"
1031
+ msgstr ""
1032
+
1033
+ #: includes/Admin/Promo/Upgrade.php:53
1034
+ msgid "Search in attributes and variation products SKUs (option)"
1035
+ msgstr ""
1036
+
1037
+ #: includes/Admin/Promo/Upgrade.php:55
1038
+ msgid "Individual tips and support by Damian Góra - the author of the plugin"
1039
+ msgstr ""
1040
+
1041
+ #: includes/Admin/Promo/Upgrade.php:56
1042
+ msgid "and more..."
1043
+ msgstr ""
1044
+
1045
+ #: includes/Admin/Promo/Upgrade.php:58
1046
+ msgid "Ajax Search for WooCommerce PRO - Upgrade Now"
1047
+ msgstr ""
1048
+
1049
+ #: includes/Admin/Promo/Upgrade.php:68
1050
+ msgid "You can upgrade without leaving the admin panel by clicking below."
1051
+ msgstr ""
1052
+
1053
+ #: includes/Admin/Promo/Upgrade.php:69
1054
+ msgid "Free updates and email support included."
1055
+ msgstr ""
1056
+
1057
+ #: includes/Admin/Promo/Upgrade.php:70
1058
+ msgid "Upgrade Now"
1059
+ msgstr ""
1060
+
1061
+ #: includes/Admin/Promo/FeedbackNotice.php:72
1062
  #, php-format
1063
  msgid ""
1064
  "Hey %s, it's Damian Góra from %s. You have used this free plugin for some "
1065
  "time now, and I hope you like it!"
1066
  msgstr ""
1067
 
1068
+ #: includes/Admin/Promo/FeedbackNotice.php:77
1069
  #, php-format
1070
  msgid ""
1071
  "I have spent countless hours developing it, and it would mean a lot to me if "
1072
  "you %ssupport it with a quick review on WordPress.org.%s"
1073
  msgstr ""
1074
 
1075
+ #: includes/Admin/Promo/FeedbackNotice.php:83
1076
  #, php-format
1077
  msgid "Review %s"
1078
  msgstr ""
1079
 
1080
+ #: includes/Admin/Promo/FeedbackNotice.php:87
1081
  msgid "No thanks"
1082
  msgstr ""
1083
 
1084
+ #: includes/Engines/TNTSearch/Indexer/Buildier.php:149
1085
+ #: includes/Engines/TNTSearchMySQL/Indexer/Buildier.php:151
1086
+ msgctxt "Admin, logs"
1087
+ msgid ""
1088
+ "The request to build a new index rejected. Another process is in progress."
1089
+ msgstr ""
1090
+
1091
+ #: includes/Engines/TNTSearch/Indexer/Buildier.php:155
1092
+ #: includes/Engines/TNTSearch/Indexer/Buildier.php:318
1093
+ #: includes/Engines/TNTSearchMySQL/Indexer/Buildier.php:159
1094
+ #: includes/Engines/TNTSearchMySQL/Indexer/Buildier.php:302
1095
+ msgctxt "Admin, logs"
1096
+ msgid "There are no tables in the database"
1097
+ msgstr ""
1098
+
1099
+ #: includes/Engines/TNTSearch/Indexer/Buildier.php:163
1100
+ #: includes/Engines/TNTSearchMySQL/Indexer/Buildier.php:168
1101
+ msgctxt "Admin, logs"
1102
+ msgid "Indexer started"
1103
+ msgstr ""
1104
+
1105
+ #: includes/Engines/TNTSearch/Indexer/Buildier.php:183
1106
+ #: includes/Engines/TNTSearch/Indexer/Buildier.php:202
1107
+ #: includes/Engines/TNTSearchMySQL/Indexer/Buildier.php:192
1108
+ msgctxt "Admin, logs"
1109
+ msgid "[Readable index] Building..."
1110
+ msgstr ""
1111
+
1112
+ #: includes/Engines/TNTSearch/Indexer/Buildier.php:198
1113
+ #: includes/Engines/TNTSearch/Indexer/Readable/AsyncProcess.php:168
1114
+ #: includes/Engines/TNTSearchMySQL/Indexer/Readable/AsyncProcess.php:168
1115
+ msgctxt "Admin, logs"
1116
+ msgid "[Readable index] Completed"
1117
+ msgstr ""
1118
+
1119
+ #: includes/Engines/TNTSearch/Indexer/Buildier.php:209
1120
+ #: includes/Engines/TNTSearch/Indexer/Searchable/AsyncRequest.php:37
1121
+ #: includes/Engines/TNTSearchMySQL/Indexer/Searchable/AsyncRequest.php:37
1122
+ msgctxt "Admin, logs"
1123
+ msgid "[Searchable index] Building..."
1124
+ msgstr ""
1125
+
1126
+ #: includes/Engines/TNTSearch/Indexer/Buildier.php:220
1127
+ #: includes/Engines/TNTSearch/Indexer/Searchable/AsyncRequest.php:53
1128
+ #: includes/Engines/TNTSearchMySQL/Indexer/Searchable/AsyncRequest.php:53
1129
+ msgctxt "Admin, logs"
1130
+ msgid "[Searchable index] Completed"
1131
+ msgstr ""
1132
+
1133
+ #: includes/Engines/TNTSearch/Indexer/Buildier.php:393
1134
+ #: includes/Engines/TNTSearchMySQL/Indexer/Buildier.php:377
1135
+ msgid "Wait... Indexing in progress"
1136
+ msgstr ""
1137
+
1138
+ #: includes/Engines/TNTSearch/Indexer/Buildier.php:394
1139
+ #: includes/Engines/TNTSearchMySQL/Indexer/Buildier.php:378
1140
+ msgid "This process will continue in the background. You can leave this page!"
1141
+ msgstr ""
1142
+
1143
+ #: includes/Engines/TNTSearch/Indexer/Buildier.php:398
1144
+ #: includes/Engines/TNTSearchMySQL/Indexer/Buildier.php:382
1145
+ msgid "Wait... The index build process is canceling"
1146
+ msgstr ""
1147
+
1148
+ #: includes/Engines/TNTSearch/Indexer/Buildier.php:399
1149
+ #: includes/Engines/TNTSearchMySQL/Indexer/Buildier.php:383
1150
+ msgid "Canceling..."
1151
+ msgstr ""
1152
+
1153
+ #: includes/Engines/TNTSearch/Indexer/Buildier.php:404
1154
+ #: includes/Engines/TNTSearchMySQL/Indexer/Buildier.php:388
1155
+ msgid "The search index was built successfully."
1156
+ msgstr ""
1157
+
1158
+ #: includes/Engines/TNTSearch/Indexer/Buildier.php:405
1159
+ #: includes/Engines/TNTSearchMySQL/Indexer/Buildier.php:389
1160
+ msgid "Completed. Works."
1161
+ msgstr ""
1162
+
1163
+ #: includes/Engines/TNTSearch/Indexer/Buildier.php:409
1164
+ #: includes/Engines/TNTSearchMySQL/Indexer/Buildier.php:393
1165
+ msgid "The search index could not be built."
1166
+ msgstr ""
1167
+
1168
+ #: includes/Engines/TNTSearch/Indexer/Buildier.php:410
1169
+ #: includes/Engines/TNTSearchMySQL/Indexer/Buildier.php:394
1170
+ msgid "Errors"
1171
+ msgstr ""
1172
+
1173
+ #: includes/Engines/TNTSearch/Indexer/Buildier.php:415
1174
+ #: includes/Engines/TNTSearchMySQL/Indexer/Buildier.php:399
1175
+ msgid "Not exist"
1176
+ msgstr ""
1177
+
1178
+ #: includes/Engines/TNTSearch/Indexer/Buildier.php:437
1179
+ #: includes/Engines/TNTSearchMySQL/Indexer/Buildier.php:421
1180
+ msgid "Stop process"
1181
+ msgstr ""
1182
+
1183
+ #: includes/Engines/TNTSearch/Indexer/Buildier.php:439
1184
+ #: includes/Engines/TNTSearchMySQL/Indexer/Buildier.php:424
1185
+ msgid "Rebuild index"
1186
+ msgstr ""
1187
+
1188
+ #: includes/Engines/TNTSearch/Indexer/Buildier.php:441
1189
+ #: includes/Engines/TNTSearchMySQL/Indexer/Buildier.php:427
1190
+ msgid "Try to build the index again."
1191
+ msgstr ""
1192
+
1193
+ #: includes/Engines/TNTSearch/Indexer/Taxonomy/Indexer.php:199
1194
+ #: includes/Engines/TNTSearchMySQL/Indexer/Taxonomy/Indexer.php:199
1195
+ msgctxt "Admin, logs"
1196
+ msgid "[Taxonomy index] Cleared"
1197
+ msgstr ""
1198
+
1199
+ #: includes/Engines/TNTSearch/Indexer/Taxonomy/Indexer.php:201
1200
+ #: includes/Engines/TNTSearchMySQL/Indexer/Taxonomy/Indexer.php:201
1201
+ msgctxt "Admin, logs"
1202
+ msgid "[Taxonomy index] Can not be cleared"
1203
+ msgstr ""
1204
+
1205
+ #: includes/Engines/TNTSearch/Indexer/Taxonomy/Request.php:38
1206
+ #: includes/Engines/TNTSearchMySQL/Indexer/Taxonomy/Request.php:38
1207
+ #, php-format
1208
+ msgctxt "Admin, logs"
1209
+ msgid "[Taxonomy index] Building %s..."
1210
+ msgstr ""
1211
+
1212
+ #: includes/Engines/TNTSearch/Indexer/Taxonomy/Request.php:51
1213
+ #: includes/Engines/TNTSearchMySQL/Indexer/Taxonomy/Request.php:51
1214
+ #, php-format
1215
+ msgctxt "Admin, logs"
1216
+ msgid "[Taxonomy index] Completed: %s, Not indexed: %s"
1217
+ msgstr ""
1218
+
1219
+ #: includes/Engines/TNTSearch/Indexer/Searchable/Indexer.php:176
1220
+ #: includes/Engines/TNTSearchMySQL/Indexer/Searchable/Indexer.php:171
1221
+ msgctxt "Admin, logs"
1222
+ msgid "[Searchable index] Cleared"
1223
+ msgstr ""
1224
+
1225
+ #: includes/Engines/TNTSearch/Indexer/Searchable/Indexer.php:178
1226
+ msgctxt "Admin, logs"
1227
+ msgid "[Searchable index] Can not be cleared"
1228
+ msgstr ""
1229
+
1230
+ #: includes/Engines/TNTSearch/Indexer/Readable/Indexer.php:153
1231
+ #: includes/Engines/TNTSearchMySQL/Indexer/Readable/Indexer.php:153
1232
+ msgctxt "Admin, logs"
1233
+ msgid "[Readable index] Cleared"
1234
+ msgstr ""
1235
+
1236
+ #: includes/Engines/TNTSearch/Indexer/Readable/Indexer.php:155
1237
+ #: includes/Engines/TNTSearchMySQL/Indexer/Readable/Indexer.php:155
1238
+ msgctxt "Admin, logs"
1239
+ msgid "[Readable index] Can not be cleared"
1240
+ msgstr ""
1241
+
1242
+ #: includes/Engines/TNTSearch/Indexer/Readable/AsyncProcess.php:121
1243
+ #: includes/Engines/TNTSearchMySQL/Indexer/Readable/AsyncProcess.php:121
1244
+ #, php-format
1245
+ msgctxt "Admin, logs"
1246
+ msgid "[Readable index] The queue <code>%s</code> was deleted "
1247
+ msgstr ""
1248
+
1249
+ #: includes/Engines/TNTSearch/Indexer/Readable/AsyncProcess.php:134
1250
+ #: includes/Engines/TNTSearchMySQL/Indexer/Readable/AsyncProcess.php:134
1251
+ #, php-format
1252
+ msgctxt "Admin, logs"
1253
+ msgid "[Readable index] Schedule <code>%s</code> was created "
1254
+ msgstr ""
1255
+
1256
+ #: includes/Engines/TNTSearch/Indexer/Readable/AsyncProcess.php:150
1257
+ #: includes/Engines/TNTSearchMySQL/Indexer/Readable/AsyncProcess.php:150
1258
+ #, php-format
1259
+ msgctxt "Admin, logs"
1260
+ msgid "[Readable index] The queue <code>%s</code> was created"
1261
+ msgstr ""
1262
+
1263
+ #. Name of the plugin
1264
+ msgid "AJAX Search for WooCommerce MysQL"
1265
+ msgstr ""
1266
+
1267
  #. Description of the plugin
1268
  msgid ""
1269
+ "Allows your customers to search products easily and quickly. It will display "
1270
+ "the results instantly while typing in an inputbox."
1271
  msgstr ""
1272
 
1273
  #. URI of the plugin
partials/storefront.php CHANGED
@@ -1,40 +1,42 @@
1
  <?php
2
 
3
  // Exit if accessed directly
4
- if ( ! defined( 'ABSPATH' ) ) {
5
  exit;
6
  }
7
 
8
- if ( ! function_exists( 'storefront_product_search' ) ) {
9
- function storefront_product_search() {
10
- if ( storefront_is_woocommerce_activated() ) { ?>
 
11
  <div class="site-search">
12
- <?php echo do_shortcode( '[wcas-search-form]' ); ?>
13
  </div>
14
  <?php
15
  }
16
  }
17
  }
18
- add_action( 'wp_footer', 'dgwt_wcas_storefront_inverse_orientation' );
19
 
20
- function dgwt_wcas_storefront_inverse_orientation() {
21
- ?>
22
- <script>
23
- jQuery(window).on('load', function () {
24
- var $footerSearch = jQuery('.storefront-handheld-footer-bar .dgwt-wcas-search-input');
25
- if ($footerSearch.length > 0) {
26
 
27
- $footerSearch.each(function(){
28
- jQuery(this).dgwtWcasAutocomplete('setOptions', {
29
- orientation: 'top',
30
- positionFixed: true
31
- }
32
 
33
- );
34
- });
 
 
 
35
 
36
- }
37
- });
38
- </script>
39
- <?php
 
 
 
 
 
 
40
  }
1
  <?php
2
 
3
  // Exit if accessed directly
4
+ if (!defined('ABSPATH')) {
5
  exit;
6
  }
7
 
8
+ if (!function_exists('storefront_product_search')) {
9
+ function storefront_product_search()
10
+ {
11
+ if (storefront_is_woocommerce_activated()) { ?>
12
  <div class="site-search">
13
+ <?php echo do_shortcode('[wcas-search-form]'); ?>
14
  </div>
15
  <?php
16
  }
17
  }
18
  }
 
19
 
20
+ add_action('wp_footer', 'dgwt_wcas_storefront_inverse_orientation', 100);
 
 
 
 
 
21
 
22
+ function dgwt_wcas_storefront_inverse_orientation()
23
+ {
24
+ if (DGWT_WCAS()->settings->get_opt('enable_mobile_overlay') === 'on') {
 
 
25
 
26
+ ?>
27
+ <script>
28
+ (function ($) {
29
+ $(window).on('load', function () {
30
+ var $searchHandheld = $('.storefront-handheld-footer-bar .search a');
31
 
32
+ $(document).on('click', '.storefront-handheld-footer-bar .search > a', function (e) {
33
+ $(this).parent().removeClass('active');
34
+ $(this).parent().find('.dgwt-wcas-search-input').trigger('focus.autocomplete');
35
+ e.preventDefault();
36
+ });
37
+ });
38
+ }(jQuery));
39
+ </script>
40
+ <?php
41
+ }
42
  }
readme.txt CHANGED
@@ -3,9 +3,9 @@ Contributors: damian-gora
3
  Donate link: https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=LD2ALVRLXPZPC
4
  Tags: woocomerce search, ajax search, live search, product search, woocommerce
5
  Requires at least: 3.8
6
- Tested up to: 5.1
7
  Requires PHP: 5.5
8
- Stable tag: 1.3.3
9
  License: GPLv2 or later
10
  License URI: http://www.gnu.org/licenses/gpl-2.0.html
11
 
@@ -67,6 +67,15 @@ Any suggestions or comments are welcome. Feel free to contact me using this [con
67
  4. Settings page with colour schemes
68
 
69
  == Changelog ==
 
 
 
 
 
 
 
 
 
70
  = 1.3.3, March 02, 2019 =
71
 
72
  * FIX: Deactivate browser native "X" icon for search input
3
  Donate link: https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=LD2ALVRLXPZPC
4
  Tags: woocomerce search, ajax search, live search, product search, woocommerce
5
  Requires at least: 3.8
6
+ Tested up to: 5.2
7
  Requires PHP: 5.5
8
+ Stable tag: 1.4.0
9
  License: GPLv2 or later
10
  License URI: http://www.gnu.org/licenses/gpl-2.0.html
11
 
67
  4. Settings page with colour schemes
68
 
69
  == Changelog ==
70
+ = 1.4.0, May 04, 2019 =
71
+
72
+ * ADD: New modern mobile search UX (beta, disabled by default, enabled only for Storefront theme)
73
+ * ADD: Italian translations
74
+ * ADD: Spain translations
75
+ * FIX: Error with WP Search WooCommerce Integration
76
+ * FIX: Conflict with the Divi theme for some cases
77
+ * CHANGE: Implementing flexbox grid (CSS)
78
+
79
  = 1.3.3, March 02, 2019 =
80
 
81
  * FIX: Deactivate browser native "X" icon for search input
vendor/autoload.php CHANGED
@@ -4,4 +4,4 @@
4
 
5
  require_once __DIR__ . '/composer/autoload_real.php';
6
 
7
- return ComposerAutoloaderInit9867a0c98a3853c7a15f674ab851dc30::getLoader();
4
 
5
  require_once __DIR__ . '/composer/autoload_real.php';
6
 
7
+ return ComposerAutoloaderInitca6b3ab2a3db9f21bb7ad9197b22b2fe::getLoader();
vendor/composer/ClassLoader.php CHANGED
@@ -279,7 +279,7 @@ class ClassLoader
279
  */
280
  public function setApcuPrefix($apcuPrefix)
281
  {
282
- $this->apcuPrefix = function_exists('apcu_fetch') && ini_get('apc.enabled') ? $apcuPrefix : null;
283
  }
284
 
285
  /**
@@ -377,7 +377,7 @@ class ClassLoader
377
  $subPath = $class;
378
  while (false !== $lastPos = strrpos($subPath, '\\')) {
379
  $subPath = substr($subPath, 0, $lastPos);
380
- $search = $subPath.'\\';
381
  if (isset($this->prefixDirsPsr4[$search])) {
382
  $pathEnd = DIRECTORY_SEPARATOR . substr($logicalPathPsr4, $lastPos + 1);
383
  foreach ($this->prefixDirsPsr4[$search] as $dir) {
279
  */
280
  public function setApcuPrefix($apcuPrefix)
281
  {
282
+ $this->apcuPrefix = function_exists('apcu_fetch') && filter_var(ini_get('apc.enabled'), FILTER_VALIDATE_BOOLEAN) ? $apcuPrefix : null;
283
  }
284
 
285
  /**
377
  $subPath = $class;
378
  while (false !== $lastPos = strrpos($subPath, '\\')) {
379
  $subPath = substr($subPath, 0, $lastPos);
380
+ $search = $subPath . '\\';
381
  if (isset($this->prefixDirsPsr4[$search])) {
382
  $pathEnd = DIRECTORY_SEPARATOR . substr($logicalPathPsr4, $lastPos + 1);
383
  foreach ($this->prefixDirsPsr4[$search] as $dir) {
vendor/composer/autoload_classmap.php CHANGED
@@ -6,4 +6,5 @@ $vendorDir = dirname(dirname(__FILE__));
6
  $baseDir = dirname($vendorDir).'/composer';
7
 
8
  return array(
 
9
  );
6
  $baseDir = dirname($vendorDir).'/composer';
7
 
8
  return array(
9
+ 'Mobile_Detect' => $vendorDir . '/mobiledetect/mobiledetectlib/Mobile_Detect.php',
10
  );
vendor/composer/autoload_namespaces.php CHANGED
@@ -6,4 +6,5 @@ $vendorDir = dirname(dirname(__FILE__));
6
  $baseDir = dirname($vendorDir).'/composer';
7
 
8
  return array(
 
9
  );
6
  $baseDir = dirname($vendorDir).'/composer';
7
 
8
  return array(
9
+ 'Detection' => array($vendorDir . '/mobiledetect/mobiledetectlib/namespaced'),
10
  );
vendor/composer/autoload_real.php CHANGED
@@ -2,7 +2,7 @@
2
 
3
  // autoload_real.php @generated by Composer
4
 
5
- class ComposerAutoloaderInit9867a0c98a3853c7a15f674ab851dc30
6
  {
7
  private static $loader;
8
 
@@ -19,15 +19,15 @@ class ComposerAutoloaderInit9867a0c98a3853c7a15f674ab851dc30
19
  return self::$loader;
20
  }
21
 
22
- spl_autoload_register(array('ComposerAutoloaderInit9867a0c98a3853c7a15f674ab851dc30', 'loadClassLoader'), true, true);
23
  self::$loader = $loader = new \Composer\Autoload\ClassLoader();
24
- spl_autoload_unregister(array('ComposerAutoloaderInit9867a0c98a3853c7a15f674ab851dc30', 'loadClassLoader'));
25
 
26
  $useStaticLoader = PHP_VERSION_ID >= 50600 && !defined('HHVM_VERSION') && (!function_exists('zend_loader_file_encoded') || !zend_loader_file_encoded());
27
  if ($useStaticLoader) {
28
  require_once __DIR__ . '/autoload_static.php';
29
 
30
- call_user_func(\Composer\Autoload\ComposerStaticInit9867a0c98a3853c7a15f674ab851dc30::getInitializer($loader));
31
  } else {
32
  $map = require __DIR__ . '/autoload_namespaces.php';
33
  foreach ($map as $namespace => $path) {
2
 
3
  // autoload_real.php @generated by Composer
4
 
5
+ class ComposerAutoloaderInitca6b3ab2a3db9f21bb7ad9197b22b2fe
6
  {
7
  private static $loader;
8
 
19
  return self::$loader;
20
  }
21
 
22
+ spl_autoload_register(array('ComposerAutoloaderInitca6b3ab2a3db9f21bb7ad9197b22b2fe', 'loadClassLoader'), true, true);
23
  self::$loader = $loader = new \Composer\Autoload\ClassLoader();
24
+ spl_autoload_unregister(array('ComposerAutoloaderInitca6b3ab2a3db9f21bb7ad9197b22b2fe', 'loadClassLoader'));
25
 
26
  $useStaticLoader = PHP_VERSION_ID >= 50600 && !defined('HHVM_VERSION') && (!function_exists('zend_loader_file_encoded') || !zend_loader_file_encoded());
27
  if ($useStaticLoader) {
28
  require_once __DIR__ . '/autoload_static.php';
29
 
30
+ call_user_func(\Composer\Autoload\ComposerStaticInitca6b3ab2a3db9f21bb7ad9197b22b2fe::getInitializer($loader));
31
  } else {
32
  $map = require __DIR__ . '/autoload_namespaces.php';
33
  foreach ($map as $namespace => $path) {
vendor/composer/autoload_static.php CHANGED
@@ -4,7 +4,7 @@
4
 
5
  namespace Composer\Autoload;
6
 
7
- class ComposerStaticInit9867a0c98a3853c7a15f674ab851dc30
8
  {
9
  public static $prefixLengthsPsr4 = array (
10
  'D' =>
@@ -20,11 +20,27 @@ class ComposerStaticInit9867a0c98a3853c7a15f674ab851dc30
20
  ),
21
  );
22
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
23
  public static function getInitializer(ClassLoader $loader)
24
  {
25
  return \Closure::bind(function () use ($loader) {
26
- $loader->prefixLengthsPsr4 = ComposerStaticInit9867a0c98a3853c7a15f674ab851dc30::$prefixLengthsPsr4;
27
- $loader->prefixDirsPsr4 = ComposerStaticInit9867a0c98a3853c7a15f674ab851dc30::$prefixDirsPsr4;
 
 
28
 
29
  }, null, ClassLoader::class);
30
  }
4
 
5
  namespace Composer\Autoload;
6
 
7
+ class ComposerStaticInitca6b3ab2a3db9f21bb7ad9197b22b2fe
8
  {
9
  public static $prefixLengthsPsr4 = array (
10
  'D' =>
20
  ),
21
  );
22
 
23
+ public static $prefixesPsr0 = array (
24
+ 'D' =>
25
+ array (
26
+ 'Detection' =>
27
+ array (
28
+ 0 => __DIR__ . '/..' . '/mobiledetect/mobiledetectlib/namespaced',
29
+ ),
30
+ ),
31
+ );
32
+
33
+ public static $classMap = array (
34
+ 'Mobile_Detect' => __DIR__ . '/..' . '/mobiledetect/mobiledetectlib/Mobile_Detect.php',
35
+ );
36
+
37
  public static function getInitializer(ClassLoader $loader)
38
  {
39
  return \Closure::bind(function () use ($loader) {
40
+ $loader->prefixLengthsPsr4 = ComposerStaticInitca6b3ab2a3db9f21bb7ad9197b22b2fe::$prefixLengthsPsr4;
41
+ $loader->prefixDirsPsr4 = ComposerStaticInitca6b3ab2a3db9f21bb7ad9197b22b2fe::$prefixDirsPsr4;
42
+ $loader->prefixesPsr0 = ComposerStaticInitca6b3ab2a3db9f21bb7ad9197b22b2fe::$prefixesPsr0;
43
+ $loader->classMap = ComposerStaticInitca6b3ab2a3db9f21bb7ad9197b22b2fe::$classMap;
44
 
45
  }, null, ClassLoader::class);
46
  }
vendor/composer/installed.json CHANGED
@@ -1 +1,56 @@
1
- []
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ [
2
+ {
3
+ "name": "mobiledetect/mobiledetectlib",
4
+ "version": "2.8.33",
5
+ "version_normalized": "2.8.33.0",
6
+ "source": {
7
+ "type": "git",
8
+ "url": "https://github.com/serbanghita/Mobile-Detect.git",
9
+ "reference": "cd385290f9a0d609d2eddd165a1e44ec1bf12102"
10
+ },
11
+ "dist": {
12
+ "type": "zip",
13
+ "url": "https://api.github.com/repos/serbanghita/Mobile-Detect/zipball/cd385290f9a0d609d2eddd165a1e44ec1bf12102",
14
+ "reference": "cd385290f9a0d609d2eddd165a1e44ec1bf12102",
15
+ "shasum": ""
16
+ },
17
+ "require": {
18
+ "php": ">=5.0.0"
19
+ },
20
+ "require-dev": {
21
+ "phpunit/phpunit": "~4.8.35||~5.7"
22
+ },
23
+ "time": "2018-09-01T15:05:15+00:00",
24
+ "type": "library",
25
+ "installation-source": "dist",
26
+ "autoload": {
27
+ "classmap": [
28
+ "Mobile_Detect.php"
29
+ ],
30
+ "psr-0": {
31
+ "Detection": "namespaced/"
32
+ }
33
+ },
34
+ "notification-url": "https://packagist.org/downloads/",
35
+ "license": [
36
+ "MIT"
37
+ ],
38
+ "authors": [
39
+ {
40
+ "name": "Serban Ghita",
41
+ "email": "serbanghita@gmail.com",
42
+ "homepage": "http://mobiledetect.net",
43
+ "role": "Developer"
44
+ }
45
+ ],
46
+ "description": "Mobile_Detect is a lightweight PHP class for detecting mobile devices. It uses the User-Agent string combined with specific HTTP headers to detect the mobile environment.",
47
+ "homepage": "https://github.com/serbanghita/Mobile-Detect",
48
+ "keywords": [
49
+ "detect mobile devices",
50
+ "mobile",
51
+ "mobile detect",
52
+ "mobile detector",
53
+ "php mobile detect"
54
+ ]
55
+ }
56
+ ]
vendor/mobiledetect/mobiledetectlib/LICENSE.txt ADDED
@@ -0,0 +1,48 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ MIT License
2
+
3
+ Copyright (c) <2011-2015> Serban Ghita, Nick Ilyin and contributors.
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining
6
+ a copy of this software and associated documentation files (the
7
+ "Software"), to deal in the Software without restriction, including
8
+ without limitation the rights to use, copy, modify, merge, publish,
9
+ distribute, sublicense, and/or sell copies of the Software, and to
10
+ permit persons to whom the Software is furnished to do so, subject to
11
+ the following conditions:
12
+
13
+ The above copyright notice and this permission notice shall be included
14
+ in all copies or substantial portions of the Software.
15
+
16
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
17
+ OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
18
+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
19
+ IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
20
+ CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
21
+ TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
22
+ SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
23
+
24
+ Developer’s Certificate of Origin 1.1
25
+
26
+ By making a contribution to this project, I certify that:
27
+
28
+ (a) The contribution was created in whole or in part by me and I
29
+ have the right to submit it under the open source license
30
+ indicated in the file; or
31
+
32
+ (b) The contribution is based upon previous work that, to the best
33
+ of my knowledge, is covered under an appropriate open source
34
+ license and I have the right under that license to submit that
35
+ work with modifications, whether created in whole or in part
36
+ by me, under the same open source license (unless I am
37
+ permitted to submit under a different license), as indicated
38
+ in the file; or
39
+
40
+ (c) The contribution was provided directly to me by some other
41
+ person who certified (a), (b) or (c) and I have not modified
42
+ it.
43
+
44
+ (d) I understand and agree that this project and the contribution
45
+ are public and that a record of the contribution (including all
46
+ personal information I submit with it, including my sign-off) is
47
+ maintained indefinitely and may be redistributed consistent with
48
+ this project or the open source license(s) involved.
vendor/mobiledetect/mobiledetectlib/Mobile_Detect.json ADDED
@@ -0,0 +1 @@
 
1
+ {"version":"2.8.33","headerMatch":{"HTTP_ACCEPT":{"matches":["application\/x-obml2d","application\/vnd.rim.html","text\/vnd.wap.wml","application\/vnd.wap.xhtml+xml"]},"HTTP_X_WAP_PROFILE":null,"HTTP_X_WAP_CLIENTID":null,"HTTP_WAP_CONNECTION":null,"HTTP_PROFILE":null,"HTTP_X_OPERAMINI_PHONE_UA":null,"HTTP_X_NOKIA_GATEWAY_ID":null,"HTTP_X_ORANGE_ID":null,"HTTP_X_VODAFONE_3GPDPCONTEXT":null,"HTTP_X_HUAWEI_USERID":null,"HTTP_UA_OS":null,"HTTP_X_MOBILE_GATEWAY":null,"HTTP_X_ATT_DEVICEID":null,"HTTP_UA_CPU":{"matches":["ARM"]}},"uaHttpHeaders":["HTTP_USER_AGENT","HTTP_X_OPERAMINI_PHONE_UA","HTTP_X_DEVICE_USER_AGENT","HTTP_X_ORIGINAL_USER_AGENT","HTTP_X_SKYFIRE_PHONE","HTTP_X_BOLT_PHONE_UA","HTTP_DEVICE_STOCK_UA","HTTP_X_UCBROWSER_DEVICE_UA"],"uaMatch":{"phones":{"iPhone":"\\biPhone\\b|\\biPod\\b","BlackBerry":"BlackBerry|\\bBB10\\b|rim[0-9]+","HTC":"HTC|HTC.*(Sensation|Evo|Vision|Explorer|6800|8100|8900|A7272|S510e|C110e|Legend|Desire|T8282)|APX515CKT|Qtek9090|APA9292KT|HD_mini|Sensation.*Z710e|PG86100|Z715e|Desire.*(A8181|HD)|ADR6200|ADR6400L|ADR6425|001HT|Inspire 4G|Android.*\\bEVO\\b|T-Mobile G1|Z520m|Android [0-9.]+; Pixel","Nexus":"Nexus One|Nexus S|Galaxy.*Nexus|Android.*Nexus.*Mobile|Nexus 4|Nexus 5|Nexus 6","Dell":"Dell[;]? (Streak|Aero|Venue|Venue Pro|Flash|Smoke|Mini 3iX)|XCD28|XCD35|\\b001DL\\b|\\b101DL\\b|\\bGS01\\b","Motorola":"Motorola|DROIDX|DROID BIONIC|\\bDroid\\b.*Build|Android.*Xoom|HRI39|MOT-|A1260|A1680|A555|A853|A855|A953|A955|A956|Motorola.*ELECTRIFY|Motorola.*i1|i867|i940|MB200|MB300|MB501|MB502|MB508|MB511|MB520|MB525|MB526|MB611|MB612|MB632|MB810|MB855|MB860|MB861|MB865|MB870|ME501|ME502|ME511|ME525|ME600|ME632|ME722|ME811|ME860|ME863|ME865|MT620|MT710|MT716|MT720|MT810|MT870|MT917|Motorola.*TITANIUM|WX435|WX445|XT300|XT301|XT311|XT316|XT317|XT319|XT320|XT390|XT502|XT530|XT531|XT532|XT535|XT603|XT610|XT611|XT615|XT681|XT701|XT702|XT711|XT720|XT800|XT806|XT860|XT862|XT875|XT882|XT883|XT894|XT901|XT907|XT909|XT910|XT912|XT928|XT926|XT915|XT919|XT925|XT1021|\\bMoto E\\b|XT1068|XT1092|XT1052","Samsung":"\\bSamsung\\b|SM-G950F|SM-G955F|SM-G9250|GT-19300|SGH-I337|BGT-S5230|GT-B2100|GT-B2700|GT-B2710|GT-B3210|GT-B3310|GT-B3410|GT-B3730|GT-B3740|GT-B5510|GT-B5512|GT-B5722|GT-B6520|GT-B7300|GT-B7320|GT-B7330|GT-B7350|GT-B7510|GT-B7722|GT-B7800|GT-C3010|GT-C3011|GT-C3060|GT-C3200|GT-C3212|GT-C3212I|GT-C3262|GT-C3222|GT-C3300|GT-C3300K|GT-C3303|GT-C3303K|GT-C3310|GT-C3322|GT-C3330|GT-C3350|GT-C3500|GT-C3510|GT-C3530|GT-C3630|GT-C3780|GT-C5010|GT-C5212|GT-C6620|GT-C6625|GT-C6712|GT-E1050|GT-E1070|GT-E1075|GT-E1080|GT-E1081|GT-E1085|GT-E1087|GT-E1100|GT-E1107|GT-E1110|GT-E1120|GT-E1125|GT-E1130|GT-E1160|GT-E1170|GT-E1175|GT-E1180|GT-E1182|GT-E1200|GT-E1210|GT-E1225|GT-E1230|GT-E1390|GT-E2100|GT-E2120|GT-E2121|GT-E2152|GT-E2220|GT-E2222|GT-E2230|GT-E2232|GT-E2250|GT-E2370|GT-E2550|GT-E2652|GT-E3210|GT-E3213|GT-I5500|GT-I5503|GT-I5700|GT-I5800|GT-I5801|GT-I6410|GT-I6420|GT-I7110|GT-I7410|GT-I7500|GT-I8000|GT-I8150|GT-I8160|GT-I8190|GT-I8320|GT-I8330|GT-I8350|GT-I8530|GT-I8700|GT-I8703|GT-I8910|GT-I9000|GT-I9001|GT-I9003|GT-I9010|GT-I9020|GT-I9023|GT-I9070|GT-I9082|GT-I9100|GT-I9103|GT-I9220|GT-I9250|GT-I9300|GT-I9305|GT-I9500|GT-I9505|GT-M3510|GT-M5650|GT-M7500|GT-M7600|GT-M7603|GT-M8800|GT-M8910|GT-N7000|GT-S3110|GT-S3310|GT-S3350|GT-S3353|GT-S3370|GT-S3650|GT-S3653|GT-S3770|GT-S3850|GT-S5210|GT-S5220|GT-S5229|GT-S5230|GT-S5233|GT-S5250|GT-S5253|GT-S5260|GT-S5263|GT-S5270|GT-S5300|GT-S5330|GT-S5350|GT-S5360|GT-S5363|GT-S5369|GT-S5380|GT-S5380D|GT-S5560|GT-S5570|GT-S5600|GT-S5603|GT-S5610|GT-S5620|GT-S5660|GT-S5670|GT-S5690|GT-S5750|GT-S5780|GT-S5830|GT-S5839|GT-S6102|GT-S6500|GT-S7070|GT-S7200|GT-S7220|GT-S7230|GT-S7233|GT-S7250|GT-S7500|GT-S7530|GT-S7550|GT-S7562|GT-S7710|GT-S8000|GT-S8003|GT-S8500|GT-S8530|GT-S8600|SCH-A310|SCH-A530|SCH-A570|SCH-A610|SCH-A630|SCH-A650|SCH-A790|SCH-A795|SCH-A850|SCH-A870|SCH-A890|SCH-A930|SCH-A950|SCH-A970|SCH-A990|SCH-I100|SCH-I110|SCH-I400|SCH-I405|SCH-I500|SCH-I510|SCH-I515|SCH-I600|SCH-I730|SCH-I760|SCH-I770|SCH-I830|SCH-I910|SCH-I920|SCH-I959|SCH-LC11|SCH-N150|SCH-N300|SCH-R100|SCH-R300|SCH-R351|SCH-R400|SCH-R410|SCH-T300|SCH-U310|SCH-U320|SCH-U350|SCH-U360|SCH-U365|SCH-U370|SCH-U380|SCH-U410|SCH-U430|SCH-U450|SCH-U460|SCH-U470|SCH-U490|SCH-U540|SCH-U550|SCH-U620|SCH-U640|SCH-U650|SCH-U660|SCH-U700|SCH-U740|SCH-U750|SCH-U810|SCH-U820|SCH-U900|SCH-U940|SCH-U960|SCS-26UC|SGH-A107|SGH-A117|SGH-A127|SGH-A137|SGH-A157|SGH-A167|SGH-A177|SGH-A187|SGH-A197|SGH-A227|SGH-A237|SGH-A257|SGH-A437|SGH-A517|SGH-A597|SGH-A637|SGH-A657|SGH-A667|SGH-A687|SGH-A697|SGH-A707|SGH-A717|SGH-A727|SGH-A737|SGH-A747|SGH-A767|SGH-A777|SGH-A797|SGH-A817|SGH-A827|SGH-A837|SGH-A847|SGH-A867|SGH-A877|SGH-A887|SGH-A897|SGH-A927|SGH-B100|SGH-B130|SGH-B200|SGH-B220|SGH-C100|SGH-C110|SGH-C120|SGH-C130|SGH-C140|SGH-C160|SGH-C170|SGH-C180|SGH-C200|SGH-C207|SGH-C210|SGH-C225|SGH-C230|SGH-C417|SGH-C450|SGH-D307|SGH-D347|SGH-D357|SGH-D407|SGH-D415|SGH-D780|SGH-D807|SGH-D980|SGH-E105|SGH-E200|SGH-E315|SGH-E316|SGH-E317|SGH-E335|SGH-E590|SGH-E635|SGH-E715|SGH-E890|SGH-F300|SGH-F480|SGH-I200|SGH-I300|SGH-I320|SGH-I550|SGH-I577|SGH-I600|SGH-I607|SGH-I617|SGH-I627|SGH-I637|SGH-I677|SGH-I700|SGH-I717|SGH-I727|SGH-i747M|SGH-I777|SGH-I780|SGH-I827|SGH-I847|SGH-I857|SGH-I896|SGH-I897|SGH-I900|SGH-I907|SGH-I917|SGH-I927|SGH-I937|SGH-I997|SGH-J150|SGH-J200|SGH-L170|SGH-L700|SGH-M110|SGH-M150|SGH-M200|SGH-N105|SGH-N500|SGH-N600|SGH-N620|SGH-N625|SGH-N700|SGH-N710|SGH-P107|SGH-P207|SGH-P300|SGH-P310|SGH-P520|SGH-P735|SGH-P777|SGH-Q105|SGH-R210|SGH-R220|SGH-R225|SGH-S105|SGH-S307|SGH-T109|SGH-T119|SGH-T139|SGH-T209|SGH-T219|SGH-T229|SGH-T239|SGH-T249|SGH-T259|SGH-T309|SGH-T319|SGH-T329|SGH-T339|SGH-T349|SGH-T359|SGH-T369|SGH-T379|SGH-T409|SGH-T429|SGH-T439|SGH-T459|SGH-T469|SGH-T479|SGH-T499|SGH-T509|SGH-T519|SGH-T539|SGH-T559|SGH-T589|SGH-T609|SGH-T619|SGH-T629|SGH-T639|SGH-T659|SGH-T669|SGH-T679|SGH-T709|SGH-T719|SGH-T729|SGH-T739|SGH-T746|SGH-T749|SGH-T759|SGH-T769|SGH-T809|SGH-T819|SGH-T839|SGH-T919|SGH-T929|SGH-T939|SGH-T959|SGH-T989|SGH-U100|SGH-U200|SGH-U800|SGH-V205|SGH-V206|SGH-X100|SGH-X105|SGH-X120|SGH-X140|SGH-X426|SGH-X427|SGH-X475|SGH-X495|SGH-X497|SGH-X507|SGH-X600|SGH-X610|SGH-X620|SGH-X630|SGH-X700|SGH-X820|SGH-X890|SGH-Z130|SGH-Z150|SGH-Z170|SGH-ZX10|SGH-ZX20|SHW-M110|SPH-A120|SPH-A400|SPH-A420|SPH-A460|SPH-A500|SPH-A560|SPH-A600|SPH-A620|SPH-A660|SPH-A700|SPH-A740|SPH-A760|SPH-A790|SPH-A800|SPH-A820|SPH-A840|SPH-A880|SPH-A900|SPH-A940|SPH-A960|SPH-D600|SPH-D700|SPH-D710|SPH-D720|SPH-I300|SPH-I325|SPH-I330|SPH-I350|SPH-I500|SPH-I600|SPH-I700|SPH-L700|SPH-M100|SPH-M220|SPH-M240|SPH-M300|SPH-M305|SPH-M320|SPH-M330|SPH-M350|SPH-M360|SPH-M370|SPH-M380|SPH-M510|SPH-M540|SPH-M550|SPH-M560|SPH-M570|SPH-M580|SPH-M610|SPH-M620|SPH-M630|SPH-M800|SPH-M810|SPH-M850|SPH-M900|SPH-M910|SPH-M920|SPH-M930|SPH-N100|SPH-N200|SPH-N240|SPH-N300|SPH-N400|SPH-Z400|SWC-E100|SCH-i909|GT-N7100|GT-N7105|SCH-I535|SM-N900A|SGH-I317|SGH-T999L|GT-S5360B|GT-I8262|GT-S6802|GT-S6312|GT-S6310|GT-S5312|GT-S5310|GT-I9105|GT-I8510|GT-S6790N|SM-G7105|SM-N9005|GT-S5301|GT-I9295|GT-I9195|SM-C101|GT-S7392|GT-S7560|GT-B7610|GT-I5510|GT-S7582|GT-S7530E|GT-I8750|SM-G9006V|SM-G9008V|SM-G9009D|SM-G900A|SM-G900D|SM-G900F|SM-G900H|SM-G900I|SM-G900J|SM-G900K|SM-G900L|SM-G900M|SM-G900P|SM-G900R4|SM-G900S|SM-G900T|SM-G900V|SM-G900W8|SHV-E160K|SCH-P709|SCH-P729|SM-T2558|GT-I9205|SM-G9350|SM-J120F|SM-G920F|SM-G920V|SM-G930F|SM-N910C|SM-A310F|GT-I9190|SM-J500FN|SM-G903F|SM-J330F","LG":"\\bLG\\b;|LG[- ]?(C800|C900|E400|E610|E900|E-900|F160|F180K|F180L|F180S|730|855|L160|LS740|LS840|LS970|LU6200|MS690|MS695|MS770|MS840|MS870|MS910|P500|P700|P705|VM696|AS680|AS695|AX840|C729|E970|GS505|272|C395|E739BK|E960|L55C|L75C|LS696|LS860|P769BK|P350|P500|P509|P870|UN272|US730|VS840|VS950|LN272|LN510|LS670|LS855|LW690|MN270|MN510|P509|P769|P930|UN200|UN270|UN510|UN610|US670|US740|US760|UX265|UX840|VN271|VN530|VS660|VS700|VS740|VS750|VS910|VS920|VS930|VX9200|VX11000|AX840A|LW770|P506|P925|P999|E612|D955|D802|MS323|M257)","Sony":"SonyST|SonyLT|SonyEricsson|SonyEricssonLT15iv|LT18i|E10i|LT28h|LT26w|SonyEricssonMT27i|C5303|C6902|C6903|C6906|C6943|D2533","Asus":"Asus.*Galaxy|PadFone.*Mobile","NokiaLumia":"Lumia [0-9]{3,4}","Micromax":"Micromax.*\\b(A210|A92|A88|A72|A111|A110Q|A115|A116|A110|A90S|A26|A51|A35|A54|A25|A27|A89|A68|A65|A57|A90)\\b","Palm":"PalmSource|Palm","Vertu":"Vertu|Vertu.*Ltd|Vertu.*Ascent|Vertu.*Ayxta|Vertu.*Constellation(F|Quest)?|Vertu.*Monika|Vertu.*Signature","Pantech":"PANTECH|IM-A850S|IM-A840S|IM-A830L|IM-A830K|IM-A830S|IM-A820L|IM-A810K|IM-A810S|IM-A800S|IM-T100K|IM-A725L|IM-A780L|IM-A775C|IM-A770K|IM-A760S|IM-A750K|IM-A740S|IM-A730S|IM-A720L|IM-A710K|IM-A690L|IM-A690S|IM-A650S|IM-A630K|IM-A600S|VEGA PTL21|PT003|P8010|ADR910L|P6030|P6020|P9070|P4100|P9060|P5000|CDM8992|TXT8045|ADR8995|IS11PT|P2030|P6010|P8000|PT002|IS06|CDM8999|P9050|PT001|TXT8040|P2020|P9020|P2000|P7040|P7000|C790","Fly":"IQ230|IQ444|IQ450|IQ440|IQ442|IQ441|IQ245|IQ256|IQ236|IQ255|IQ235|IQ245|IQ275|IQ240|IQ285|IQ280|IQ270|IQ260|IQ250","Wiko":"KITE 4G|HIGHWAY|GETAWAY|STAIRWAY|DARKSIDE|DARKFULL|DARKNIGHT|DARKMOON|SLIDE|WAX 4G|RAINBOW|BLOOM|SUNSET|GOA(?!nna)|LENNY|BARRY|IGGY|OZZY|CINK FIVE|CINK PEAX|CINK PEAX 2|CINK SLIM|CINK SLIM 2|CINK +|CINK KING|CINK PEAX|CINK SLIM|SUBLIM","iMobile":"i-mobile (IQ|i-STYLE|idea|ZAA|Hitz)","SimValley":"\\b(SP-80|XT-930|SX-340|XT-930|SX-310|SP-360|SP60|SPT-800|SP-120|SPT-800|SP-140|SPX-5|SPX-8|SP-100|SPX-8|SPX-12)\\b","Wolfgang":"AT-B24D|AT-AS50HD|AT-AS40W|AT-AS55HD|AT-AS45q2|AT-B26D|AT-AS50Q","Alcatel":"Alcatel","Nintendo":"Nintendo (3DS|Switch)","Amoi":"Amoi","INQ":"INQ","GenericPhone":"Tapatalk|PDA;|SAGEM|\\bmmp\\b|pocket|\\bpsp\\b|symbian|Smartphone|smartfon|treo|up.browser|up.link|vodafone|\\bwap\\b|nokia|Series40|Series60|S60|SonyEricsson|N900|MAUI.*WAP.*Browser"},"tablets":{"iPad":"iPad|iPad.*Mobile","NexusTablet":"Android.*Nexus[\\s]+(7|9|10)","GoogleTablet":"Android.*Pixel C","SamsungTablet":"SAMSUNG.*Tablet|Galaxy.*Tab|SC-01C|GT-P1000|GT-P1003|GT-P1010|GT-P3105|GT-P6210|GT-P6800|GT-P6810|GT-P7100|GT-P7300|GT-P7310|GT-P7500|GT-P7510|SCH-I800|SCH-I815|SCH-I905|SGH-I957|SGH-I987|SGH-T849|SGH-T859|SGH-T869|SPH-P100|GT-P3100|GT-P3108|GT-P3110|GT-P5100|GT-P5110|GT-P6200|GT-P7320|GT-P7511|GT-N8000|GT-P8510|SGH-I497|SPH-P500|SGH-T779|SCH-I705|SCH-I915|GT-N8013|GT-P3113|GT-P5113|GT-P8110|GT-N8010|GT-N8005|GT-N8020|GT-P1013|GT-P6201|GT-P7501|GT-N5100|GT-N5105|GT-N5110|SHV-E140K|SHV-E140L|SHV-E140S|SHV-E150S|SHV-E230K|SHV-E230L|SHV-E230S|SHW-M180K|SHW-M180L|SHW-M180S|SHW-M180W|SHW-M300W|SHW-M305W|SHW-M380K|SHW-M380S|SHW-M380W|SHW-M430W|SHW-M480K|SHW-M480S|SHW-M480W|SHW-M485W|SHW-M486W|SHW-M500W|GT-I9228|SCH-P739|SCH-I925|GT-I9200|GT-P5200|GT-P5210|GT-P5210X|SM-T311|SM-T310|SM-T310X|SM-T210|SM-T210R|SM-T211|SM-P600|SM-P601|SM-P605|SM-P900|SM-P901|SM-T217|SM-T217A|SM-T217S|SM-P6000|SM-T3100|SGH-I467|XE500|SM-T110|GT-P5220|GT-I9200X|GT-N5110X|GT-N5120|SM-P905|SM-T111|SM-T2105|SM-T315|SM-T320|SM-T320X|SM-T321|SM-T520|SM-T525|SM-T530NU|SM-T230NU|SM-T330NU|SM-T900|XE500T1C|SM-P605V|SM-P905V|SM-T337V|SM-T537V|SM-T707V|SM-T807V|SM-P600X|SM-P900X|SM-T210X|SM-T230|SM-T230X|SM-T325|GT-P7503|SM-T531|SM-T330|SM-T530|SM-T705|SM-T705C|SM-T535|SM-T331|SM-T800|SM-T700|SM-T537|SM-T807|SM-P907A|SM-T337A|SM-T537A|SM-T707A|SM-T807A|SM-T237|SM-T807P|SM-P607T|SM-T217T|SM-T337T|SM-T807T|SM-T116NQ|SM-T116BU|SM-P550|SM-T350|SM-T550|SM-T9000|SM-P9000|SM-T705Y|SM-T805|GT-P3113|SM-T710|SM-T810|SM-T815|SM-T360|SM-T533|SM-T113|SM-T335|SM-T715|SM-T560|SM-T670|SM-T677|SM-T377|SM-T567|SM-T357T|SM-T555|SM-T561|SM-T713|SM-T719|SM-T813|SM-T819|SM-T580|SM-T355Y?|SM-T280|SM-T817A|SM-T820|SM-W700|SM-P580|SM-T587|SM-P350|SM-P555M|SM-P355M|SM-T113NU|SM-T815Y|SM-T585|SM-T285|SM-T825|SM-W708|SM-T835","Kindle":"Kindle|Silk.*Accelerated|Android.*\\b(KFOT|KFTT|KFJWI|KFJWA|KFOTE|KFSOWI|KFTHWI|KFTHWA|KFAPWI|KFAPWA|WFJWAE|KFSAWA|KFSAWI|KFASWI|KFARWI|KFFOWI|KFGIWI|KFMEWI)\\b|Android.*Silk\/[0-9.]+ like Chrome\/[0-9.]+ (?!Mobile)","SurfaceTablet":"Windows NT [0-9.]+; ARM;.*(Tablet|ARMBJS)","HPTablet":"HP Slate (7|8|10)|HP ElitePad 900|hp-tablet|EliteBook.*Touch|HP 8|Slate 21|HP SlateBook 10","AsusTablet":"^.*PadFone((?!Mobile).)*$|Transformer|TF101|TF101G|TF300T|TF300TG|TF300TL|TF700T|TF700KL|TF701T|TF810C|ME171|ME301T|ME302C|ME371MG|ME370T|ME372MG|ME172V|ME173X|ME400C|Slider SL101|\\bK00F\\b|\\bK00C\\b|\\bK00E\\b|\\bK00L\\b|TX201LA|ME176C|ME102A|\\bM80TA\\b|ME372CL|ME560CG|ME372CG|ME302KL| K010 | K011 | K017 | K01E |ME572C|ME103K|ME170C|ME171C|\\bME70C\\b|ME581C|ME581CL|ME8510C|ME181C|P01Y|PO1MA|P01Z|\\bP027\\b|\\bP024\\b|\\bP00C\\b","BlackBerryTablet":"PlayBook|RIM Tablet","HTCtablet":"HTC_Flyer_P512|HTC Flyer|HTC Jetstream|HTC-P715a|HTC EVO View 4G|PG41200|PG09410","MotorolaTablet":"xoom|sholest|MZ615|MZ605|MZ505|MZ601|MZ602|MZ603|MZ604|MZ606|MZ607|MZ608|MZ609|MZ615|MZ616|MZ617","NookTablet":"Android.*Nook|NookColor|nook browser|BNRV200|BNRV200A|BNTV250|BNTV250A|BNTV400|BNTV600|LogicPD Zoom2","AcerTablet":"Android.*; \\b(A100|A101|A110|A200|A210|A211|A500|A501|A510|A511|A700|A701|W500|W500P|W501|W501P|W510|W511|W700|G100|G100W|B1-A71|B1-710|B1-711|A1-810|A1-811|A1-830)\\b|W3-810|\\bA3-A10\\b|\\bA3-A11\\b|\\bA3-A20\\b|\\bA3-A30","ToshibaTablet":"Android.*(AT100|AT105|AT200|AT205|AT270|AT275|AT300|AT305|AT1S5|AT500|AT570|AT700|AT830)|TOSHIBA.*FOLIO","LGTablet":"\\bL-06C|LG-V909|LG-V900|LG-V700|LG-V510|LG-V500|LG-V410|LG-V400|LG-VK810\\b","FujitsuTablet":"Android.*\\b(F-01D|F-02F|F-05E|F-10D|M532|Q572)\\b","PrestigioTablet":"PMP3170B|PMP3270B|PMP3470B|PMP7170B|PMP3370B|PMP3570C|PMP5870C|PMP3670B|PMP5570C|PMP5770D|PMP3970B|PMP3870C|PMP5580C|PMP5880D|PMP5780D|PMP5588C|PMP7280C|PMP7280C3G|PMP7280|PMP7880D|PMP5597D|PMP5597|PMP7100D|PER3464|PER3274|PER3574|PER3884|PER5274|PER5474|PMP5097CPRO|PMP5097|PMP7380D|PMP5297C|PMP5297C_QUAD|PMP812E|PMP812E3G|PMP812F|PMP810E|PMP880TD|PMT3017|PMT3037|PMT3047|PMT3057|PMT7008|PMT5887|PMT5001|PMT5002","LenovoTablet":"Lenovo TAB|Idea(Tab|Pad)( A1|A10| K1|)|ThinkPad([ ]+)?Tablet|YT3-850M|YT3-X90L|YT3-X90F|YT3-X90X|Lenovo.*(S2109|S2110|S5000|S6000|K3011|A3000|A3500|A1000|A2107|A2109|A1107|A5500|A7600|B6000|B8000|B8080)(-|)(FL|F|HV|H|)|TB-X103F|TB-X304F|TB-X304L|TB-8703F|Tab2A7-10F|TB2-X30L","DellTablet":"Venue 11|Venue 8|Venue 7|Dell Streak 10|Dell Streak 7","YarvikTablet":"Android.*\\b(TAB210|TAB211|TAB224|TAB250|TAB260|TAB264|TAB310|TAB360|TAB364|TAB410|TAB411|TAB420|TAB424|TAB450|TAB460|TAB461|TAB464|TAB465|TAB467|TAB468|TAB07-100|TAB07-101|TAB07-150|TAB07-151|TAB07-152|TAB07-200|TAB07-201-3G|TAB07-210|TAB07-211|TAB07-212|TAB07-214|TAB07-220|TAB07-400|TAB07-485|TAB08-150|TAB08-200|TAB08-201-3G|TAB08-201-30|TAB09-100|TAB09-211|TAB09-410|TAB10-150|TAB10-201|TAB10-211|TAB10-400|TAB10-410|TAB13-201|TAB274EUK|TAB275EUK|TAB374EUK|TAB462EUK|TAB474EUK|TAB9-200)\\b","MedionTablet":"Android.*\\bOYO\\b|LIFE.*(P9212|P9514|P9516|S9512)|LIFETAB","ArnovaTablet":"97G4|AN10G2|AN7bG3|AN7fG3|AN8G3|AN8cG3|AN7G3|AN9G3|AN7dG3|AN7dG3ST|AN7dG3ChildPad|AN10bG3|AN10bG3DT|AN9G2","IntensoTablet":"INM8002KP|INM1010FP|INM805ND|Intenso Tab|TAB1004","IRUTablet":"M702pro","MegafonTablet":"MegaFon V9|\\bZTE V9\\b|Android.*\\bMT7A\\b","EbodaTablet":"E-Boda (Supreme|Impresspeed|Izzycomm|Essential)","AllViewTablet":"Allview.*(Viva|Alldro|City|Speed|All TV|Frenzy|Quasar|Shine|TX1|AX1|AX2)","ArchosTablet":"\\b(101G9|80G9|A101IT)\\b|Qilive 97R|Archos5|\\bARCHOS (70|79|80|90|97|101|FAMILYPAD|)(b|c|)(G10| Cobalt| TITANIUM(HD|)| Xenon| Neon|XSK| 2| XS 2| PLATINUM| CARBON|GAMEPAD)\\b","AinolTablet":"NOVO7|NOVO8|NOVO10|Novo7Aurora|Novo7Basic|NOVO7PALADIN|novo9-Spark","NokiaLumiaTablet":"Lumia 2520","SonyTablet":"Sony.*Tablet|Xperia Tablet|Sony Tablet S|SO-03E|SGPT12|SGPT13|SGPT114|SGPT121|SGPT122|SGPT123|SGPT111|SGPT112|SGPT113|SGPT131|SGPT132|SGPT133|SGPT211|SGPT212|SGPT213|SGP311|SGP312|SGP321|EBRD1101|EBRD1102|EBRD1201|SGP351|SGP341|SGP511|SGP512|SGP521|SGP541|SGP551|SGP621|SGP641|SGP612|SOT31|SGP771|SGP611|SGP612|SGP712","PhilipsTablet":"\\b(PI2010|PI3000|PI3100|PI3105|PI3110|PI3205|PI3210|PI3900|PI4010|PI7000|PI7100)\\b","CubeTablet":"Android.*(K8GT|U9GT|U10GT|U16GT|U17GT|U18GT|U19GT|U20GT|U23GT|U30GT)|CUBE U8GT","CobyTablet":"MID1042|MID1045|MID1125|MID1126|MID7012|MID7014|MID7015|MID7034|MID7035|MID7036|MID7042|MID7048|MID7127|MID8042|MID8048|MID8127|MID9042|MID9740|MID9742|MID7022|MID7010","MIDTablet":"M9701|M9000|M9100|M806|M1052|M806|T703|MID701|MID713|MID710|MID727|MID760|MID830|MID728|MID933|MID125|MID810|MID732|MID120|MID930|MID800|MID731|MID900|MID100|MID820|MID735|MID980|MID130|MID833|MID737|MID960|MID135|MID860|MID736|MID140|MID930|MID835|MID733|MID4X10","MSITablet":"MSI \\b(Primo 73K|Primo 73L|Primo 81L|Primo 77|Primo 93|Primo 75|Primo 76|Primo 73|Primo 81|Primo 91|Primo 90|Enjoy 71|Enjoy 7|Enjoy 10)\\b","SMiTTablet":"Android.*(\\bMID\\b|MID-560|MTV-T1200|MTV-PND531|MTV-P1101|MTV-PND530)","RockChipTablet":"Android.*(RK2818|RK2808A|RK2918|RK3066)|RK2738|RK2808A","FlyTablet":"IQ310|Fly Vision","bqTablet":"Android.*(bq)?.*(Elcano|Curie|Edison|Maxwell|Kepler|Pascal|Tesla|Hypatia|Platon|Newton|Livingstone|Cervantes|Avant|Aquaris ([E|M]10|M8))|Maxwell.*Lite|Maxwell.*Plus","HuaweiTablet":"MediaPad|MediaPad 7 Youth|IDEOS S7|S7-201c|S7-202u|S7-101|S7-103|S7-104|S7-105|S7-106|S7-201|S7-Slim|M2-A01L|BAH-L09|BAH-W09","NecTablet":"\\bN-06D|\\bN-08D","PantechTablet":"Pantech.*P4100","BronchoTablet":"Broncho.*(N701|N708|N802|a710)","VersusTablet":"TOUCHPAD.*[78910]|\\bTOUCHTAB\\b","ZyncTablet":"z1000|Z99 2G|z99|z930|z999|z990|z909|Z919|z900","PositivoTablet":"TB07STA|TB10STA|TB07FTA|TB10FTA","NabiTablet":"Android.*\\bNabi","KoboTablet":"Kobo Touch|\\bK080\\b|\\bVox\\b Build|\\bArc\\b Build","DanewTablet":"DSlide.*\\b(700|701R|702|703R|704|802|970|971|972|973|974|1010|1012)\\b","TexetTablet":"NaviPad|TB-772A|TM-7045|TM-7055|TM-9750|TM-7016|TM-7024|TM-7026|TM-7041|TM-7043|TM-7047|TM-8041|TM-9741|TM-9747|TM-9748|TM-9751|TM-7022|TM-7021|TM-7020|TM-7011|TM-7010|TM-7023|TM-7025|TM-7037W|TM-7038W|TM-7027W|TM-9720|TM-9725|TM-9737W|TM-1020|TM-9738W|TM-9740|TM-9743W|TB-807A|TB-771A|TB-727A|TB-725A|TB-719A|TB-823A|TB-805A|TB-723A|TB-715A|TB-707A|TB-705A|TB-709A|TB-711A|TB-890HD|TB-880HD|TB-790HD|TB-780HD|TB-770HD|TB-721HD|TB-710HD|TB-434HD|TB-860HD|TB-840HD|TB-760HD|TB-750HD|TB-740HD|TB-730HD|TB-722HD|TB-720HD|TB-700HD|TB-500HD|TB-470HD|TB-431HD|TB-430HD|TB-506|TB-504|TB-446|TB-436|TB-416|TB-146SE|TB-126SE","PlaystationTablet":"Playstation.*(Portable|Vita)","TrekstorTablet":"ST10416-1|VT10416-1|ST70408-1|ST702xx-1|ST702xx-2|ST80208|ST97216|ST70104-2|VT10416-2|ST10216-2A|SurfTab","PyleAudioTablet":"\\b(PTBL10CEU|PTBL10C|PTBL72BC|PTBL72BCEU|PTBL7CEU|PTBL7C|PTBL92BC|PTBL92BCEU|PTBL9CEU|PTBL9CUK|PTBL9C)\\b","AdvanTablet":"Android.* \\b(E3A|T3X|T5C|T5B|T3E|T3C|T3B|T1J|T1F|T2A|T1H|T1i|E1C|T1-E|T5-A|T4|E1-B|T2Ci|T1-B|T1-D|O1-A|E1-A|T1-A|T3A|T4i)\\b ","DanyTechTablet":"Genius Tab G3|Genius Tab S2|Genius Tab Q3|Genius Tab G4|Genius Tab Q4|Genius Tab G-II|Genius TAB GII|Genius TAB GIII|Genius Tab S1","GalapadTablet":"Android.*\\bG1\\b(?!\\))","MicromaxTablet":"Funbook|Micromax.*\\b(P250|P560|P360|P362|P600|P300|P350|P500|P275)\\b","KarbonnTablet":"Android.*\\b(A39|A37|A34|ST8|ST10|ST7|Smart Tab3|Smart Tab2)\\b","AllFineTablet":"Fine7 Genius|Fine7 Shine|Fine7 Air|Fine8 Style|Fine9 More|Fine10 Joy|Fine11 Wide","PROSCANTablet":"\\b(PEM63|PLT1023G|PLT1041|PLT1044|PLT1044G|PLT1091|PLT4311|PLT4311PL|PLT4315|PLT7030|PLT7033|PLT7033D|PLT7035|PLT7035D|PLT7044K|PLT7045K|PLT7045KB|PLT7071KG|PLT7072|PLT7223G|PLT7225G|PLT7777G|PLT7810K|PLT7849G|PLT7851G|PLT7852G|PLT8015|PLT8031|PLT8034|PLT8036|PLT8080K|PLT8082|PLT8088|PLT8223G|PLT8234G|PLT8235G|PLT8816K|PLT9011|PLT9045K|PLT9233G|PLT9735|PLT9760G|PLT9770G)\\b","YONESTablet":"BQ1078|BC1003|BC1077|RK9702|BC9730|BC9001|IT9001|BC7008|BC7010|BC708|BC728|BC7012|BC7030|BC7027|BC7026","ChangJiaTablet":"TPC7102|TPC7103|TPC7105|TPC7106|TPC7107|TPC7201|TPC7203|TPC7205|TPC7210|TPC7708|TPC7709|TPC7712|TPC7110|TPC8101|TPC8103|TPC8105|TPC8106|TPC8203|TPC8205|TPC8503|TPC9106|TPC9701|TPC97101|TPC97103|TPC97105|TPC97106|TPC97111|TPC97113|TPC97203|TPC97603|TPC97809|TPC97205|TPC10101|TPC10103|TPC10106|TPC10111|TPC10203|TPC10205|TPC10503","GUTablet":"TX-A1301|TX-M9002|Q702|kf026","PointOfViewTablet":"TAB-P506|TAB-navi-7-3G-M|TAB-P517|TAB-P-527|TAB-P701|TAB-P703|TAB-P721|TAB-P731N|TAB-P741|TAB-P825|TAB-P905|TAB-P925|TAB-PR945|TAB-PL1015|TAB-P1025|TAB-PI1045|TAB-P1325|TAB-PROTAB[0-9]+|TAB-PROTAB25|TAB-PROTAB26|TAB-PROTAB27|TAB-PROTAB26XL|TAB-PROTAB2-IPS9|TAB-PROTAB30-IPS9|TAB-PROTAB25XXL|TAB-PROTAB26-IPS10|TAB-PROTAB30-IPS10","OvermaxTablet":"OV-(SteelCore|NewBase|Basecore|Baseone|Exellen|Quattor|EduTab|Solution|ACTION|BasicTab|TeddyTab|MagicTab|Stream|TB-08|TB-09)|Qualcore 1027","HCLTablet":"HCL.*Tablet|Connect-3G-2.0|Connect-2G-2.0|ME Tablet U1|ME Tablet U2|ME Tablet G1|ME Tablet X1|ME Tablet Y2|ME Tablet Sync","DPSTablet":"DPS Dream 9|DPS Dual 7","VistureTablet":"V97 HD|i75 3G|Visture V4( HD)?|Visture V5( HD)?|Visture V10","CrestaTablet":"CTP(-)?810|CTP(-)?818|CTP(-)?828|CTP(-)?838|CTP(-)?888|CTP(-)?978|CTP(-)?980|CTP(-)?987|CTP(-)?988|CTP(-)?989","MediatekTablet":"\\bMT8125|MT8389|MT8135|MT8377\\b","ConcordeTablet":"Concorde([ ]+)?Tab|ConCorde ReadMan","GoCleverTablet":"GOCLEVER TAB|A7GOCLEVER|M1042|M7841|M742|R1042BK|R1041|TAB A975|TAB A7842|TAB A741|TAB A741L|TAB M723G|TAB M721|TAB A1021|TAB I921|TAB R721|TAB I720|TAB T76|TAB R70|TAB R76.2|TAB R106|TAB R83.2|TAB M813G|TAB I721|GCTA722|TAB I70|TAB I71|TAB S73|TAB R73|TAB R74|TAB R93|TAB R75|TAB R76.1|TAB A73|TAB A93|TAB A93.2|TAB T72|TAB R83|TAB R974|TAB R973|TAB A101|TAB A103|TAB A104|TAB A104.2|R105BK|M713G|A972BK|TAB A971|TAB R974.2|TAB R104|TAB R83.3|TAB A1042","ModecomTablet":"FreeTAB 9000|FreeTAB 7.4|FreeTAB 7004|FreeTAB 7800|FreeTAB 2096|FreeTAB 7.5|FreeTAB 1014|FreeTAB 1001 |FreeTAB 8001|FreeTAB 9706|FreeTAB 9702|FreeTAB 7003|FreeTAB 7002|FreeTAB 1002|FreeTAB 7801|FreeTAB 1331|FreeTAB 1004|FreeTAB 8002|FreeTAB 8014|FreeTAB 9704|FreeTAB 1003","VoninoTablet":"\\b(Argus[ _]?S|Diamond[ _]?79HD|Emerald[ _]?78E|Luna[ _]?70C|Onyx[ _]?S|Onyx[ _]?Z|Orin[ _]?HD|Orin[ _]?S|Otis[ _]?S|SpeedStar[ _]?S|Magnet[ _]?M9|Primus[ _]?94[ _]?3G|Primus[ _]?94HD|Primus[ _]?QS|Android.*\\bQ8\\b|Sirius[ _]?EVO[ _]?QS|Sirius[ _]?QS|Spirit[ _]?S)\\b","ECSTablet":"V07OT2|TM105A|S10OT1|TR10CS1","StorexTablet":"eZee[_']?(Tab|Go)[0-9]+|TabLC7|Looney Tunes Tab","VodafoneTablet":"SmartTab([ ]+)?[0-9]+|SmartTabII10|SmartTabII7|VF-1497","EssentielBTablet":"Smart[ ']?TAB[ ]+?[0-9]+|Family[ ']?TAB2","RossMoorTablet":"RM-790|RM-997|RMD-878G|RMD-974R|RMT-705A|RMT-701|RME-601|RMT-501|RMT-711","iMobileTablet":"i-mobile i-note","TolinoTablet":"tolino tab [0-9.]+|tolino shine","AudioSonicTablet":"\\bC-22Q|T7-QC|T-17B|T-17P\\b","AMPETablet":"Android.* A78 ","SkkTablet":"Android.* (SKYPAD|PHOENIX|CYCLOPS)","TecnoTablet":"TECNO P9|TECNO DP8D","JXDTablet":"Android.* \\b(F3000|A3300|JXD5000|JXD3000|JXD2000|JXD300B|JXD300|S5800|S7800|S602b|S5110b|S7300|S5300|S602|S603|S5100|S5110|S601|S7100a|P3000F|P3000s|P101|P200s|P1000m|P200m|P9100|P1000s|S6600b|S908|P1000|P300|S18|S6600|S9100)\\b","iJoyTablet":"Tablet (Spirit 7|Essentia|Galatea|Fusion|Onix 7|Landa|Titan|Scooby|Deox|Stella|Themis|Argon|Unique 7|Sygnus|Hexen|Finity 7|Cream|Cream X2|Jade|Neon 7|Neron 7|Kandy|Scape|Saphyr 7|Rebel|Biox|Rebel|Rebel 8GB|Myst|Draco 7|Myst|Tab7-004|Myst|Tadeo Jones|Tablet Boing|Arrow|Draco Dual Cam|Aurix|Mint|Amity|Revolution|Finity 9|Neon 9|T9w|Amity 4GB Dual Cam|Stone 4GB|Stone 8GB|Andromeda|Silken|X2|Andromeda II|Halley|Flame|Saphyr 9,7|Touch 8|Planet|Triton|Unique 10|Hexen 10|Memphis 4GB|Memphis 8GB|Onix 10)","FX2Tablet":"FX2 PAD7|FX2 PAD10","XoroTablet":"KidsPAD 701|PAD[ ]?712|PAD[ ]?714|PAD[ ]?716|PAD[ ]?717|PAD[ ]?718|PAD[ ]?720|PAD[ ]?721|PAD[ ]?722|PAD[ ]?790|PAD[ ]?792|PAD[ ]?900|PAD[ ]?9715D|PAD[ ]?9716DR|PAD[ ]?9718DR|PAD[ ]?9719QR|PAD[ ]?9720QR|TelePAD1030|Telepad1032|TelePAD730|TelePAD731|TelePAD732|TelePAD735Q|TelePAD830|TelePAD9730|TelePAD795|MegaPAD 1331|MegaPAD 1851|MegaPAD 2151","ViewsonicTablet":"ViewPad 10pi|ViewPad 10e|ViewPad 10s|ViewPad E72|ViewPad7|ViewPad E100|ViewPad 7e|ViewSonic VB733|VB100a","VerizonTablet":"QTAQZ3|QTAIR7|QTAQTZ3|QTASUN1|QTASUN2|QTAXIA1","OdysTablet":"LOOX|XENO10|ODYS[ -](Space|EVO|Xpress|NOON)|\\bXELIO\\b|Xelio10Pro|XELIO7PHONETAB|XELIO10EXTREME|XELIOPT2|NEO_QUAD10","CaptivaTablet":"CAPTIVA PAD","IconbitTablet":"NetTAB|NT-3702|NT-3702S|NT-3702S|NT-3603P|NT-3603P|NT-0704S|NT-0704S|NT-3805C|NT-3805C|NT-0806C|NT-0806C|NT-0909T|NT-0909T|NT-0907S|NT-0907S|NT-0902S|NT-0902S","TeclastTablet":"T98 4G|\\bP80\\b|\\bX90HD\\b|X98 Air|X98 Air 3G|\\bX89\\b|P80 3G|\\bX80h\\b|P98 Air|\\bX89HD\\b|P98 3G|\\bP90HD\\b|P89 3G|X98 3G|\\bP70h\\b|P79HD 3G|G18d 3G|\\bP79HD\\b|\\bP89s\\b|\\bA88\\b|\\bP10HD\\b|\\bP19HD\\b|G18 3G|\\bP78HD\\b|\\bA78\\b|\\bP75\\b|G17s 3G|G17h 3G|\\bP85t\\b|\\bP90\\b|\\bP11\\b|\\bP98t\\b|\\bP98HD\\b|\\bG18d\\b|\\bP85s\\b|\\bP11HD\\b|\\bP88s\\b|\\bA80HD\\b|\\bA80se\\b|\\bA10h\\b|\\bP89\\b|\\bP78s\\b|\\bG18\\b|\\bP85\\b|\\bA70h\\b|\\bA70\\b|\\bG17\\b|\\bP18\\b|\\bA80s\\b|\\bA11s\\b|\\bP88HD\\b|\\bA80h\\b|\\bP76s\\b|\\bP76h\\b|\\bP98\\b|\\bA10HD\\b|\\bP78\\b|\\bP88\\b|\\bA11\\b|\\bA10t\\b|\\bP76a\\b|\\bP76t\\b|\\bP76e\\b|\\bP85HD\\b|\\bP85a\\b|\\bP86\\b|\\bP75HD\\b|\\bP76v\\b|\\bA12\\b|\\bP75a\\b|\\bA15\\b|\\bP76Ti\\b|\\bP81HD\\b|\\bA10\\b|\\bT760VE\\b|\\bT720HD\\b|\\bP76\\b|\\bP73\\b|\\bP71\\b|\\bP72\\b|\\bT720SE\\b|\\bC520Ti\\b|\\bT760\\b|\\bT720VE\\b|T720-3GE|T720-WiFi","OndaTablet":"\\b(V975i|Vi30|VX530|V701|Vi60|V701s|Vi50|V801s|V719|Vx610w|VX610W|V819i|Vi10|VX580W|Vi10|V711s|V813|V811|V820w|V820|Vi20|V711|VI30W|V712|V891w|V972|V819w|V820w|Vi60|V820w|V711|V813s|V801|V819|V975s|V801|V819|V819|V818|V811|V712|V975m|V101w|V961w|V812|V818|V971|V971s|V919|V989|V116w|V102w|V973|Vi40)\\b[\\s]+|V10 \\b4G\\b","JaytechTablet":"TPC-PA762","BlaupunktTablet":"Endeavour 800NG|Endeavour 1010","DigmaTablet":"\\b(iDx10|iDx9|iDx8|iDx7|iDxD7|iDxD8|iDsQ8|iDsQ7|iDsQ8|iDsD10|iDnD7|3TS804H|iDsQ11|iDj7|iDs10)\\b","EvolioTablet":"ARIA_Mini_wifi|Aria[ _]Mini|Evolio X10|Evolio X7|Evolio X8|\\bEvotab\\b|\\bNeura\\b","LavaTablet":"QPAD E704|\\bIvoryS\\b|E-TAB IVORY|\\bE-TAB\\b","AocTablet":"MW0811|MW0812|MW0922|MTK8382|MW1031|MW0831|MW0821|MW0931|MW0712","MpmanTablet":"MP11 OCTA|MP10 OCTA|MPQC1114|MPQC1004|MPQC994|MPQC974|MPQC973|MPQC804|MPQC784|MPQC780|\\bMPG7\\b|MPDCG75|MPDCG71|MPDC1006|MP101DC|MPDC9000|MPDC905|MPDC706HD|MPDC706|MPDC705|MPDC110|MPDC100|MPDC99|MPDC97|MPDC88|MPDC8|MPDC77|MP709|MID701|MID711|MID170|MPDC703|MPQC1010","CelkonTablet":"CT695|CT888|CT[\\s]?910|CT7 Tab|CT9 Tab|CT3 Tab|CT2 Tab|CT1 Tab|C820|C720|\\bCT-1\\b","WolderTablet":"miTab \\b(DIAMOND|SPACE|BROOKLYN|NEO|FLY|MANHATTAN|FUNK|EVOLUTION|SKY|GOCAR|IRON|GENIUS|POP|MINT|EPSILON|BROADWAY|JUMP|HOP|LEGEND|NEW AGE|LINE|ADVANCE|FEEL|FOLLOW|LIKE|LINK|LIVE|THINK|FREEDOM|CHICAGO|CLEVELAND|BALTIMORE-GH|IOWA|BOSTON|SEATTLE|PHOENIX|DALLAS|IN 101|MasterChef)\\b","MediacomTablet":"M-MPI10C3G|M-SP10EG|M-SP10EGP|M-SP10HXAH|M-SP7HXAH|M-SP10HXBH|M-SP8HXAH|M-SP8MXA","MiTablet":"\\bMI PAD\\b|\\bHM NOTE 1W\\b","NibiruTablet":"Nibiru M1|Nibiru Jupiter One","NexoTablet":"NEXO NOVA|NEXO 10|NEXO AVIO|NEXO FREE|NEXO GO|NEXO EVO|NEXO 3G|NEXO SMART|NEXO KIDDO|NEXO MOBI","LeaderTablet":"TBLT10Q|TBLT10I|TBL-10WDKB|TBL-10WDKBO2013|TBL-W230V2|TBL-W450|TBL-W500|SV572|TBLT7I|TBA-AC7-8G|TBLT79|TBL-8W16|TBL-10W32|TBL-10WKB|TBL-W100","UbislateTablet":"UbiSlate[\\s]?7C","PocketBookTablet":"Pocketbook","KocasoTablet":"\\b(TB-1207)\\b","HisenseTablet":"\\b(F5281|E2371)\\b","Hudl":"Hudl HT7S3|Hudl 2","TelstraTablet":"T-Hub2","GenericTablet":"Android.*\\b97D\\b|Tablet(?!.*PC)|BNTV250A|MID-WCDMA|LogicPD Zoom2|\\bA7EB\\b|CatNova8|A1_07|CT704|CT1002|\\bM721\\b|rk30sdk|\\bEVOTAB\\b|M758A|ET904|ALUMIUM10|Smartfren Tab|Endeavour 1010|Tablet-PC-4|Tagi Tab|\\bM6pro\\b|CT1020W|arc 10HD|\\bTP750\\b|\\bQTAQZ3\\b|WVT101|TM1088|KT107"},"browsers":{"Chrome":"\\bCrMo\\b|CriOS|Android.*Chrome\/[.0-9]* (Mobile)?","Dolfin":"\\bDolfin\\b","Opera":"Opera.*Mini|Opera.*Mobi|Android.*Opera|Mobile.*OPR\/[0-9.]+$|Coast\/[0-9.]+","Skyfire":"Skyfire","Edge":"Mobile Safari\/[.0-9]* Edge","IE":"IEMobile|MSIEMobile","Firefox":"fennec|firefox.*maemo|(Mobile|Tablet).*Firefox|Firefox.*Mobile|FxiOS","Bolt":"bolt","TeaShark":"teashark","Blazer":"Blazer","Safari":"Version.*Mobile.*Safari|Safari.*Mobile|MobileSafari","WeChat":"\\bMicroMessenger\\b","UCBrowser":"UC.*Browser|UCWEB","baiduboxapp":"baiduboxapp","baidubrowser":"baidubrowser","DiigoBrowser":"DiigoBrowser","Puffin":"Puffin","Mercury":"\\bMercury\\b","ObigoBrowser":"Obigo","NetFront":"NF-Browser","GenericBrowser":"NokiaBrowser|OviBrowser|OneBrowser|TwonkyBeamBrowser|SEMC.*Browser|FlyFlow|Minimo|NetFront|Novarra-Vision|MQQBrowser|MicroMessenger","PaleMoon":"Android.*PaleMoon|Mobile.*PaleMoon"},"os":{"AndroidOS":"Android","BlackBerryOS":"blackberry|\\bBB10\\b|rim tablet os","PalmOS":"PalmOS|avantgo|blazer|elaine|hiptop|palm|plucker|xiino","SymbianOS":"Symbian|SymbOS|Series60|Series40|SYB-[0-9]+|\\bS60\\b","WindowsMobileOS":"Windows CE.*(PPC|Smartphone|Mobile|[0-9]{3}x[0-9]{3})|Window Mobile|Windows Phone [0-9.]+|WCE;","WindowsPhoneOS":"Windows Phone 10.0|Windows Phone 8.1|Windows Phone 8.0|Windows Phone OS|XBLWP7|ZuneWP7|Windows NT 6.[23]; ARM;","iOS":"\\biPhone.*Mobile|\\biPod|\\biPad|AppleCoreMedia","MeeGoOS":"MeeGo","MaemoOS":"Maemo","JavaOS":"J2ME\/|\\bMIDP\\b|\\bCLDC\\b","webOS":"webOS|hpwOS","badaOS":"\\bBada\\b","BREWOS":"BREW"},"utilities":{"Bot":"Googlebot|facebookexternalhit|AdsBot-Google|Google Keyword Suggestion|Facebot|YandexBot|YandexMobileBot|bingbot|ia_archiver|AhrefsBot|Ezooms|GSLFbot|WBSearchBot|Twitterbot|TweetmemeBot|Twikle|PaperLiBot|Wotbox|UnwindFetchor|Exabot|MJ12bot|YandexImages|TurnitinBot|Pingdom","MobileBot":"Googlebot-Mobile|AdsBot-Google-Mobile|YahooSeeker\/M1A1-R2D2","DesktopMode":"WPDesktop","TV":"SonyDTV|HbbTV","WebKit":"(webkit)[ \/]([\\w.]+)","Console":"\\b(Nintendo|Nintendo WiiU|Nintendo 3DS|Nintendo Switch|PLAYSTATION|Xbox)\\b","Watch":"SM-V700"}}}
vendor/mobiledetect/mobiledetectlib/Mobile_Detect.php ADDED
@@ -0,0 +1,1473 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * Mobile Detect Library
4
+ * Motto: "Every business should have a mobile detection script to detect mobile readers"
5
+ *
6
+ * Mobile_Detect is a lightweight PHP class for detecting mobile devices (including tablets).
7
+ * It uses the User-Agent string combined with specific HTTP headers to detect the mobile environment.
8
+ *
9
+ * Homepage: http://mobiledetect.net
10
+ * GitHub: https://github.com/serbanghita/Mobile-Detect
11
+ * README: https://github.com/serbanghita/Mobile-Detect/blob/master/README.md
12
+ * CONTRIBUTING: https://github.com/serbanghita/Mobile-Detect/blob/master/docs/CONTRIBUTING.md
13
+ * KNOWN LIMITATIONS: https://github.com/serbanghita/Mobile-Detect/blob/master/docs/KNOWN_LIMITATIONS.md
14
+ * EXAMPLES: https://github.com/serbanghita/Mobile-Detect/wiki/Code-examples
15
+ *
16
+ * @license https://github.com/serbanghita/Mobile-Detect/blob/master/LICENSE.txt MIT License
17
+ * @author Serban Ghita <serbanghita@gmail.com>
18
+ * @author Nick Ilyin <nick.ilyin@gmail.com>
19
+ * Original author: Victor Stanciu <vic.stanciu@gmail.com>
20
+ *
21
+ * @version 2.8.33
22
+ */
23
+ class Mobile_Detect
24
+ {
25
+ /**
26
+ * Mobile detection type.
27
+ *
28
+ * @deprecated since version 2.6.9
29
+ */
30
+ const DETECTION_TYPE_MOBILE = 'mobile';
31
+
32
+ /**
33
+ * Extended detection type.
34
+ *
35
+ * @deprecated since version 2.6.9
36
+ */
37
+ const DETECTION_TYPE_EXTENDED = 'extended';
38
+
39
+ /**
40
+ * A frequently used regular expression to extract version #s.
41
+ *
42
+ * @deprecated since version 2.6.9
43
+ */
44
+ const VER = '([\w._\+]+)';
45
+
46
+ /**
47
+ * Top-level device.
48
+ */
49
+ const MOBILE_GRADE_A = 'A';
50
+
51
+ /**
52
+ * Mid-level device.
53
+ */
54
+ const MOBILE_GRADE_B = 'B';
55
+
56
+ /**
57
+ * Low-level device.
58
+ */
59
+ const MOBILE_GRADE_C = 'C';
60
+
61
+ /**
62
+ * Stores the version number of the current release.
63
+ */
64
+ const VERSION = '2.8.33';
65
+
66
+ /**
67
+ * A type for the version() method indicating a string return value.
68
+ */
69
+ const VERSION_TYPE_STRING = 'text';
70
+
71
+ /**
72
+ * A type for the version() method indicating a float return value.
73
+ */
74
+ const VERSION_TYPE_FLOAT = 'float';
75
+
76
+ /**
77
+ * A cache for resolved matches
78
+ * @var array
79
+ */
80
+ protected $cache = array();
81
+
82
+ /**
83
+ * The User-Agent HTTP header is stored in here.
84
+ * @var string
85
+ */
86
+ protected $userAgent = null;
87
+
88
+ /**
89
+ * HTTP headers in the PHP-flavor. So HTTP_USER_AGENT and SERVER_SOFTWARE.
90
+ * @var array
91
+ */
92
+ protected $httpHeaders = array();
93
+
94
+ /**
95
+ * CloudFront headers. E.g. CloudFront-Is-Desktop-Viewer, CloudFront-Is-Mobile-Viewer & CloudFront-Is-Tablet-Viewer.
96
+ * @var array
97
+ */
98
+ protected $cloudfrontHeaders = array();
99
+
100
+ /**
101
+ * The matching Regex.
102
+ * This is good for debug.
103
+ * @var string
104
+ */
105
+ protected $matchingRegex = null;
106
+
107
+ /**
108
+ * The matches extracted from the regex expression.
109
+ * This is good for debug.
110
+ *
111
+ * @var string
112
+ */
113
+ protected $matchesArray = null;
114
+
115
+ /**
116
+ * The detection type, using self::DETECTION_TYPE_MOBILE or self::DETECTION_TYPE_EXTENDED.
117
+ *
118
+ * @deprecated since version 2.6.9
119
+ *
120
+ * @var string
121
+ */
122
+ protected $detectionType = self::DETECTION_TYPE_MOBILE;
123
+
124
+ /**
125
+ * HTTP headers that trigger the 'isMobile' detection
126
+ * to be true.
127
+ *
128
+ * @var array
129
+ */
130
+ protected static $mobileHeaders = array(
131
+
132
+ 'HTTP_ACCEPT' => array('matches' => array(
133
+ // Opera Mini; @reference: http://dev.opera.com/articles/view/opera-binary-markup-language/
134
+ 'application/x-obml2d',
135
+ // BlackBerry devices.
136
+ 'application/vnd.rim.html',
137
+ 'text/vnd.wap.wml',
138
+ 'application/vnd.wap.xhtml+xml'
139
+ )),
140
+ 'HTTP_X_WAP_PROFILE' => null,
141
+ 'HTTP_X_WAP_CLIENTID' => null,
142
+ 'HTTP_WAP_CONNECTION' => null,
143
+ 'HTTP_PROFILE' => null,
144
+ // Reported by Opera on Nokia devices (eg. C3).
145
+ 'HTTP_X_OPERAMINI_PHONE_UA' => null,
146
+ 'HTTP_X_NOKIA_GATEWAY_ID' => null,
147
+ 'HTTP_X_ORANGE_ID' => null,
148
+ 'HTTP_X_VODAFONE_3GPDPCONTEXT' => null,
149
+ 'HTTP_X_HUAWEI_USERID' => null,
150
+ // Reported by Windows Smartphones.
151
+ 'HTTP_UA_OS' => null,
152
+ // Reported by Verizon, Vodafone proxy system.
153
+ 'HTTP_X_MOBILE_GATEWAY' => null,
154
+ // Seen this on HTC Sensation. SensationXE_Beats_Z715e.
155
+ 'HTTP_X_ATT_DEVICEID' => null,
156
+ // Seen this on a HTC.
157
+ 'HTTP_UA_CPU' => array('matches' => array('ARM')),
158
+ );
159
+
160
+ /**
161
+ * List of mobile devices (phones).
162
+ *
163
+ * @var array
164
+ */
165
+ protected static $phoneDevices = array(
166
+ 'iPhone' => '\biPhone\b|\biPod\b', // |\biTunes
167
+ 'BlackBerry' => 'BlackBerry|\bBB10\b|rim[0-9]+',
168
+ 'HTC' => 'HTC|HTC.*(Sensation|Evo|Vision|Explorer|6800|8100|8900|A7272|S510e|C110e|Legend|Desire|T8282)|APX515CKT|Qtek9090|APA9292KT|HD_mini|Sensation.*Z710e|PG86100|Z715e|Desire.*(A8181|HD)|ADR6200|ADR6400L|ADR6425|001HT|Inspire 4G|Android.*\bEVO\b|T-Mobile G1|Z520m|Android [0-9.]+; Pixel',
169
+ 'Nexus' => 'Nexus One|Nexus S|Galaxy.*Nexus|Android.*Nexus.*Mobile|Nexus 4|Nexus 5|Nexus 6',
170
+ // @todo: Is 'Dell Streak' a tablet or a phone? ;)
171
+ 'Dell' => 'Dell[;]? (Streak|Aero|Venue|Venue Pro|Flash|Smoke|Mini 3iX)|XCD28|XCD35|\b001DL\b|\b101DL\b|\bGS01\b',
172
+ 'Motorola' => 'Motorola|DROIDX|DROID BIONIC|\bDroid\b.*Build|Android.*Xoom|HRI39|MOT-|A1260|A1680|A555|A853|A855|A953|A955|A956|Motorola.*ELECTRIFY|Motorola.*i1|i867|i940|MB200|MB300|MB501|MB502|MB508|MB511|MB520|MB525|MB526|MB611|MB612|MB632|MB810|MB855|MB860|MB861|MB865|MB870|ME501|ME502|ME511|ME525|ME600|ME632|ME722|ME811|ME860|ME863|ME865|MT620|MT710|MT716|MT720|MT810|MT870|MT917|Motorola.*TITANIUM|WX435|WX445|XT300|XT301|XT311|XT316|XT317|XT319|XT320|XT390|XT502|XT530|XT531|XT532|XT535|XT603|XT610|XT611|XT615|XT681|XT701|XT702|XT711|XT720|XT800|XT806|XT860|XT862|XT875|XT882|XT883|XT894|XT901|XT907|XT909|XT910|XT912|XT928|XT926|XT915|XT919|XT925|XT1021|\bMoto E\b|XT1068|XT1092|XT1052',
173
+ 'Samsung' => '\bSamsung\b|SM-G950F|SM-G955F|SM-G9250|GT-19300|SGH-I337|BGT-S5230|GT-B2100|GT-B2700|GT-B2710|GT-B3210|GT-B3310|GT-B3410|GT-B3730|GT-B3740|GT-B5510|GT-B5512|GT-B5722|GT-B6520|GT-B7300|GT-B7320|GT-B7330|GT-B7350|GT-B7510|GT-B7722|GT-B7800|GT-C3010|GT-C3011|GT-C3060|GT-C3200|GT-C3212|GT-C3212I|GT-C3262|GT-C3222|GT-C3300|GT-C3300K|GT-C3303|GT-C3303K|GT-C3310|GT-C3322|GT-C3330|GT-C3350|GT-C3500|GT-C3510|GT-C3530|GT-C3630|GT-C3780|GT-C5010|GT-C5212|GT-C6620|GT-C6625|GT-C6712|GT-E1050|GT-E1070|GT-E1075|GT-E1080|GT-E1081|GT-E1085|GT-E1087|GT-E1100|GT-E1107|GT-E1110|GT-E1120|GT-E1125|GT-E1130|GT-E1160|GT-E1170|GT-E1175|GT-E1180|GT-E1182|GT-E1200|GT-E1210|GT-E1225|GT-E1230|GT-E1390|GT-E2100|GT-E2120|GT-E2121|GT-E2152|GT-E2220|GT-E2222|GT-E2230|GT-E2232|GT-E2250|GT-E2370|GT-E2550|GT-E2652|GT-E3210|GT-E3213|GT-I5500|GT-I5503|GT-I5700|GT-I5800|GT-I5801|GT-I6410|GT-I6420|GT-I7110|GT-I7410|GT-I7500|GT-I8000|GT-I8150|GT-I8160|GT-I8190|GT-I8320|GT-I8330|GT-I8350|GT-I8530|GT-I8700|GT-I8703|GT-I8910|GT-I9000|GT-I9001|GT-I9003|GT-I9010|GT-I9020|GT-I9023|GT-I9070|GT-I9082|GT-I9100|GT-I9103|GT-I9220|GT-I9250|GT-I9300|GT-I9305|GT-I9500|GT-I9505|GT-M3510|GT-M5650|GT-M7500|GT-M7600|GT-M7603|GT-M8800|GT-M8910|GT-N7000|GT-S3110|GT-S3310|GT-S3350|GT-S3353|GT-S3370|GT-S3650|GT-S3653|GT-S3770|GT-S3850|GT-S5210|GT-S5220|GT-S5229|GT-S5230|GT-S5233|GT-S5250|GT-S5253|GT-S5260|GT-S5263|GT-S5270|GT-S5300|GT-S5330|GT-S5350|GT-S5360|GT-S5363|GT-S5369|GT-S5380|GT-S5380D|GT-S5560|GT-S5570|GT-S5600|GT-S5603|GT-S5610|GT-S5620|GT-S5660|GT-S5670|GT-S5690|GT-S5750|GT-S5780|GT-S5830|GT-S5839|GT-S6102|GT-S6500|GT-S7070|GT-S7200|GT-S7220|GT-S7230|GT-S7233|GT-S7250|GT-S7500|GT-S7530|GT-S7550|GT-S7562|GT-S7710|GT-S8000|GT-S8003|GT-S8500|GT-S8530|GT-S8600|SCH-A310|SCH-A530|SCH-A570|SCH-A610|SCH-A630|SCH-A650|SCH-A790|SCH-A795|SCH-A850|SCH-A870|SCH-A890|SCH-A930|SCH-A950|SCH-A970|SCH-A990|SCH-I100|SCH-I110|SCH-I400|SCH-I405|SCH-I500|SCH-I510|SCH-I515|SCH-I600|SCH-I730|SCH-I760|SCH-I770|SCH-I830|SCH-I910|SCH-I920|SCH-I959|SCH-LC11|SCH-N150|SCH-N300|SCH-R100|SCH-R300|SCH-R351|SCH-R400|SCH-R410|SCH-T300|SCH-U310|SCH-U320|SCH-U350|SCH-U360|SCH-U365|SCH-U370|SCH-U380|SCH-U410|SCH-U430|SCH-U450|SCH-U460|SCH-U470|SCH-U490|SCH-U540|SCH-U550|SCH-U620|SCH-U640|SCH-U650|SCH-U660|SCH-U700|SCH-U740|SCH-U750|SCH-U810|SCH-U820|SCH-U900|SCH-U940|SCH-U960|SCS-26UC|SGH-A107|SGH-A117|SGH-A127|SGH-A137|SGH-A157|SGH-A167|SGH-A177|SGH-A187|SGH-A197|SGH-A227|SGH-A237|SGH-A257|SGH-A437|SGH-A517|SGH-A597|SGH-A637|SGH-A657|SGH-A667|SGH-A687|SGH-A697|SGH-A707|SGH-A717|SGH-A727|SGH-A737|SGH-A747|SGH-A767|SGH-A777|SGH-A797|SGH-A817|SGH-A827|SGH-A837|SGH-A847|SGH-A867|SGH-A877|SGH-A887|SGH-A897|SGH-A927|SGH-B100|SGH-B130|SGH-B200|SGH-B220|SGH-C100|SGH-C110|SGH-C120|SGH-C130|SGH-C140|SGH-C160|SGH-C170|SGH-C180|SGH-C200|SGH-C207|SGH-C210|SGH-C225|SGH-C230|SGH-C417|SGH-C450|SGH-D307|SGH-D347|SGH-D357|SGH-D407|SGH-D415|SGH-D780|SGH-D807|SGH-D980|SGH-E105|SGH-E200|SGH-E315|SGH-E316|SGH-E317|SGH-E335|SGH-E590|SGH-E635|SGH-E715|SGH-E890|SGH-F300|SGH-F480|SGH-I200|SGH-I300|SGH-I320|SGH-I550|SGH-I577|SGH-I600|SGH-I607|SGH-I617|SGH-I627|SGH-I637|SGH-I677|SGH-I700|SGH-I717|SGH-I727|SGH-i747M|SGH-I777|SGH-I780|SGH-I827|SGH-I847|SGH-I857|SGH-I896|SGH-I897|SGH-I900|SGH-I907|SGH-I917|SGH-I927|SGH-I937|SGH-I997|SGH-J150|SGH-J200|SGH-L170|SGH-L700|SGH-M110|SGH-M150|SGH-M200|SGH-N105|SGH-N500|SGH-N600|SGH-N620|SGH-N625|SGH-N700|SGH-N710|SGH-P107|SGH-P207|SGH-P300|SGH-P310|SGH-P520|SGH-P735|SGH-P777|SGH-Q105|SGH-R210|SGH-R220|SGH-R225|SGH-S105|SGH-S307|SGH-T109|SGH-T119|SGH-T139|SGH-T209|SGH-T219|SGH-T229|SGH-T239|SGH-T249|SGH-T259|SGH-T309|SGH-T319|SGH-T329|SGH-T339|SGH-T349|SGH-T359|SGH-T369|SGH-T379|SGH-T409|SGH-T429|SGH-T439|SGH-T459|SGH-T469|SGH-T479|SGH-T499|SGH-T509|SGH-T519|SGH-T539|SGH-T559|SGH-T589|SGH-T609|SGH-T619|SGH-T629|SGH-T639|SGH-T659|SGH-T669|SGH-T679|SGH-T709|SGH-T719|SGH-T729|SGH-T739|SGH-T746|SGH-T749|SGH-T759|SGH-T769|SGH-T809|SGH-T819|SGH-T839|SGH-T919|SGH-T929|SGH-T939|SGH-T959|SGH-T989|SGH-U100|SGH-U200|SGH-U800|SGH-V205|SGH-V206|SGH-X100|SGH-X105|SGH-X120|SGH-X140|SGH-X426|SGH-X427|SGH-X475|SGH-X495|SGH-X497|SGH-X507|SGH-X600|SGH-X610|SGH-X620|SGH-X630|SGH-X700|SGH-X820|SGH-X890|SGH-Z130|SGH-Z150|SGH-Z170|SGH-ZX10|SGH-ZX20|SHW-M110|SPH-A120|SPH-A400|SPH-A420|SPH-A460|SPH-A500|SPH-A560|SPH-A600|SPH-A620|SPH-A660|SPH-A700|SPH-A740|SPH-A760|SPH-A790|SPH-A800|SPH-A820|SPH-A840|SPH-A880|SPH-A900|SPH-A940|SPH-A960|SPH-D600|SPH-D700|SPH-D710|SPH-D720|SPH-I300|SPH-I325|SPH-I330|SPH-I350|SPH-I500|SPH-I600|SPH-I700|SPH-L700|SPH-M100|SPH-M220|SPH-M240|SPH-M300|SPH-M305|SPH-M320|SPH-M330|SPH-M350|SPH-M360|SPH-M370|SPH-M380|SPH-M510|SPH-M540|SPH-M550|SPH-M560|SPH-M570|SPH-M580|SPH-M610|SPH-M620|SPH-M630|SPH-M800|SPH-M810|SPH-M850|SPH-M900|SPH-M910|SPH-M920|SPH-M930|SPH-N100|SPH-N200|SPH-N240|SPH-N300|SPH-N400|SPH-Z400|SWC-E100|SCH-i909|GT-N7100|GT-N7105|SCH-I535|SM-N900A|SGH-I317|SGH-T999L|GT-S5360B|GT-I8262|GT-S6802|GT-S6312|GT-S6310|GT-S5312|GT-S5310|GT-I9105|GT-I8510|GT-S6790N|SM-G7105|SM-N9005|GT-S5301|GT-I9295|GT-I9195|SM-C101|GT-S7392|GT-S7560|GT-B7610|GT-I5510|GT-S7582|GT-S7530E|GT-I8750|SM-G9006V|SM-G9008V|SM-G9009D|SM-G900A|SM-G900D|SM-G900F|SM-G900H|SM-G900I|SM-G900J|SM-G900K|SM-G900L|SM-G900M|SM-G900P|SM-G900R4|SM-G900S|SM-G900T|SM-G900V|SM-G900W8|SHV-E160K|SCH-P709|SCH-P729|SM-T2558|GT-I9205|SM-G9350|SM-J120F|SM-G920F|SM-G920V|SM-G930F|SM-N910C|SM-A310F|GT-I9190|SM-J500FN|SM-G903F|SM-J330F',
174
+ 'LG' => '\bLG\b;|LG[- ]?(C800|C900|E400|E610|E900|E-900|F160|F180K|F180L|F180S|730|855|L160|LS740|LS840|LS970|LU6200|MS690|MS695|MS770|MS840|MS870|MS910|P500|P700|P705|VM696|AS680|AS695|AX840|C729|E970|GS505|272|C395|E739BK|E960|L55C|L75C|LS696|LS860|P769BK|P350|P500|P509|P870|UN272|US730|VS840|VS950|LN272|LN510|LS670|LS855|LW690|MN270|MN510|P509|P769|P930|UN200|UN270|UN510|UN610|US670|US740|US760|UX265|UX840|VN271|VN530|VS660|VS700|VS740|VS750|VS910|VS920|VS930|VX9200|VX11000|AX840A|LW770|P506|P925|P999|E612|D955|D802|MS323|M257)',
175
+ 'Sony' => 'SonyST|SonyLT|SonyEricsson|SonyEricssonLT15iv|LT18i|E10i|LT28h|LT26w|SonyEricssonMT27i|C5303|C6902|C6903|C6906|C6943|D2533',
176
+ 'Asus' => 'Asus.*Galaxy|PadFone.*Mobile',
177
+ 'NokiaLumia' => 'Lumia [0-9]{3,4}',
178
+ // http://www.micromaxinfo.com/mobiles/smartphones
179
+ // Added because the codes might conflict with Acer Tablets.
180
+ 'Micromax' => 'Micromax.*\b(A210|A92|A88|A72|A111|A110Q|A115|A116|A110|A90S|A26|A51|A35|A54|A25|A27|A89|A68|A65|A57|A90)\b',
181
+ // @todo Complete the regex.
182
+ 'Palm' => 'PalmSource|Palm', // avantgo|blazer|elaine|hiptop|plucker|xiino ;
183
+ 'Vertu' => 'Vertu|Vertu.*Ltd|Vertu.*Ascent|Vertu.*Ayxta|Vertu.*Constellation(F|Quest)?|Vertu.*Monika|Vertu.*Signature', // Just for fun ;)
184
+ // http://www.pantech.co.kr/en/prod/prodList.do?gbrand=VEGA (PANTECH)
185
+ // Most of the VEGA devices are legacy. PANTECH seem to be newer devices based on Android.
186
+ 'Pantech' => 'PANTECH|IM-A850S|IM-A840S|IM-A830L|IM-A830K|IM-A830S|IM-A820L|IM-A810K|IM-A810S|IM-A800S|IM-T100K|IM-A725L|IM-A780L|IM-A775C|IM-A770K|IM-A760S|IM-A750K|IM-A740S|IM-A730S|IM-A720L|IM-A710K|IM-A690L|IM-A690S|IM-A650S|IM-A630K|IM-A600S|VEGA PTL21|PT003|P8010|ADR910L|P6030|P6020|P9070|P4100|P9060|P5000|CDM8992|TXT8045|ADR8995|IS11PT|P2030|P6010|P8000|PT002|IS06|CDM8999|P9050|PT001|TXT8040|P2020|P9020|P2000|P7040|P7000|C790',
187
+ // http://www.fly-phone.com/devices/smartphones/ ; Included only smartphones.
188
+ 'Fly' => 'IQ230|IQ444|IQ450|IQ440|IQ442|IQ441|IQ245|IQ256|IQ236|IQ255|IQ235|IQ245|IQ275|IQ240|IQ285|IQ280|IQ270|IQ260|IQ250',
189
+ // http://fr.wikomobile.com
190
+ 'Wiko' => 'KITE 4G|HIGHWAY|GETAWAY|STAIRWAY|DARKSIDE|DARKFULL|DARKNIGHT|DARKMOON|SLIDE|WAX 4G|RAINBOW|BLOOM|SUNSET|GOA(?!nna)|LENNY|BARRY|IGGY|OZZY|CINK FIVE|CINK PEAX|CINK PEAX 2|CINK SLIM|CINK SLIM 2|CINK +|CINK KING|CINK PEAX|CINK SLIM|SUBLIM',
191
+ 'iMobile' => 'i-mobile (IQ|i-STYLE|idea|ZAA|Hitz)',
192
+ // Added simvalley mobile just for fun. They have some interesting devices.
193
+ // http://www.simvalley.fr/telephonie---gps-_22_telephonie-mobile_telephones_.html
194
+ 'SimValley' => '\b(SP-80|XT-930|SX-340|XT-930|SX-310|SP-360|SP60|SPT-800|SP-120|SPT-800|SP-140|SPX-5|SPX-8|SP-100|SPX-8|SPX-12)\b',
195
+ // Wolfgang - a brand that is sold by Aldi supermarkets.
196
+ // http://www.wolfgangmobile.com/
197
+ 'Wolfgang' => 'AT-B24D|AT-AS50HD|AT-AS40W|AT-AS55HD|AT-AS45q2|AT-B26D|AT-AS50Q',
198
+ 'Alcatel' => 'Alcatel',
199
+ 'Nintendo' => 'Nintendo (3DS|Switch)',
200
+ // http://en.wikipedia.org/wiki/Amoi
201
+ 'Amoi' => 'Amoi',
202
+ // http://en.wikipedia.org/wiki/INQ
203
+ 'INQ' => 'INQ',
204
+ // @Tapatalk is a mobile app; http://support.tapatalk.com/threads/smf-2-0-2-os-and-browser-detection-plugin-and-tapatalk.15565/#post-79039
205
+ 'GenericPhone' => 'Tapatalk|PDA;|SAGEM|\bmmp\b|pocket|\bpsp\b|symbian|Smartphone|smartfon|treo|up.browser|up.link|vodafone|\bwap\b|nokia|Series40|Series60|S60|SonyEricsson|N900|MAUI.*WAP.*Browser',
206
+ );
207
+
208
+ /**
209
+ * List of tablet devices.
210
+ *
211
+ * @var array
212
+ */
213
+ protected static $tabletDevices = array(
214
+ // @todo: check for mobile friendly emails topic.
215
+ 'iPad' => 'iPad|iPad.*Mobile',
216
+ // Removed |^.*Android.*Nexus(?!(?:Mobile).)*$
217
+ // @see #442
218
+ // @todo Merge NexusTablet into GoogleTablet.
219
+ 'NexusTablet' => 'Android.*Nexus[\s]+(7|9|10)',
220
+ // https://en.wikipedia.org/wiki/Pixel_C
221
+ 'GoogleTablet' => 'Android.*Pixel C',
222
+ 'SamsungTablet' => 'SAMSUNG.*Tablet|Galaxy.*Tab|SC-01C|GT-P1000|GT-P1003|GT-P1010|GT-P3105|GT-P6210|GT-P6800|GT-P6810|GT-P7100|GT-P7300|GT-P7310|GT-P7500|GT-P7510|SCH-I800|SCH-I815|SCH-I905|SGH-I957|SGH-I987|SGH-T849|SGH-T859|SGH-T869|SPH-P100|GT-P3100|GT-P3108|GT-P3110|GT-P5100|GT-P5110|GT-P6200|GT-P7320|GT-P7511|GT-N8000|GT-P8510|SGH-I497|SPH-P500|SGH-T779|SCH-I705|SCH-I915|GT-N8013|GT-P3113|GT-P5113|GT-P8110|GT-N8010|GT-N8005|GT-N8020|GT-P1013|GT-P6201|GT-P7501|GT-N5100|GT-N5105|GT-N5110|SHV-E140K|SHV-E140L|SHV-E140S|SHV-E150S|SHV-E230K|SHV-E230L|SHV-E230S|SHW-M180K|SHW-M180L|SHW-M180S|SHW-M180W|SHW-M300W|SHW-M305W|SHW-M380K|SHW-M380S|SHW-M380W|SHW-M430W|SHW-M480K|SHW-M480S|SHW-M480W|SHW-M485W|SHW-M486W|SHW-M500W|GT-I9228|SCH-P739|SCH-I925|GT-I9200|GT-P5200|GT-P5210|GT-P5210X|SM-T311|SM-T310|SM-T310X|SM-T210|SM-T210R|SM-T211|SM-P600|SM-P601|SM-P605|SM-P900|SM-P901|SM-T217|SM-T217A|SM-T217S|SM-P6000|SM-T3100|SGH-I467|XE500|SM-T110|GT-P5220|GT-I9200X|GT-N5110X|GT-N5120|SM-P905|SM-T111|SM-T2105|SM-T315|SM-T320|SM-T320X|SM-T321|SM-T520|SM-T525|SM-T530NU|SM-T230NU|SM-T330NU|SM-T900|XE500T1C|SM-P605V|SM-P905V|SM-T337V|SM-T537V|SM-T707V|SM-T807V|SM-P600X|SM-P900X|SM-T210X|SM-T230|SM-T230X|SM-T325|GT-P7503|SM-T531|SM-T330|SM-T530|SM-T705|SM-T705C|SM-T535|SM-T331|SM-T800|SM-T700|SM-T537|SM-T807|SM-P907A|SM-T337A|SM-T537A|SM-T707A|SM-T807A|SM-T237|SM-T807P|SM-P607T|SM-T217T|SM-T337T|SM-T807T|SM-T116NQ|SM-T116BU|SM-P550|SM-T350|SM-T550|SM-T9000|SM-P9000|SM-T705Y|SM-T805|GT-P3113|SM-T710|SM-T810|SM-T815|SM-T360|SM-T533|SM-T113|SM-T335|SM-T715|SM-T560|SM-T670|SM-T677|SM-T377|SM-T567|SM-T357T|SM-T555|SM-T561|SM-T713|SM-T719|SM-T813|SM-T819|SM-T580|SM-T355Y?|SM-T280|SM-T817A|SM-T820|SM-W700|SM-P580|SM-T587|SM-P350|SM-P555M|SM-P355M|SM-T113NU|SM-T815Y|SM-T585|SM-T285|SM-T825|SM-W708|SM-T835', // SCH-P709|SCH-P729|SM-T2558|GT-I9205 - Samsung Mega - treat them like a regular phone.
223
+ // http://docs.aws.amazon.com/silk/latest/developerguide/user-agent.html
224
+ 'Kindle' => 'Kindle|Silk.*Accelerated|Android.*\b(KFOT|KFTT|KFJWI|KFJWA|KFOTE|KFSOWI|KFTHWI|KFTHWA|KFAPWI|KFAPWA|WFJWAE|KFSAWA|KFSAWI|KFASWI|KFARWI|KFFOWI|KFGIWI|KFMEWI)\b|Android.*Silk/[0-9.]+ like Chrome/[0-9.]+ (?!Mobile)',
225
+ // Only the Surface tablets with Windows RT are considered mobile.
226
+ // http://msdn.microsoft.com/en-us/library/ie/hh920767(v=vs.85).aspx
227
+ 'SurfaceTablet' => 'Windows NT [0-9.]+; ARM;.*(Tablet|ARMBJS)',
228
+ // http://shopping1.hp.com/is-bin/INTERSHOP.enfinity/WFS/WW-USSMBPublicStore-Site/en_US/-/USD/ViewStandardCatalog-Browse?CatalogCategoryID=JfIQ7EN5lqMAAAEyDcJUDwMT
229
+ 'HPTablet' => 'HP Slate (7|8|10)|HP ElitePad 900|hp-tablet|EliteBook.*Touch|HP 8|Slate 21|HP SlateBook 10',
230
+ // Watch out for PadFone, see #132.
231
+ // http://www.asus.com/de/Tablets_Mobile/Memo_Pad_Products/
232
+ 'AsusTablet' => '^.*PadFone((?!Mobile).)*$|Transformer|TF101|TF101G|TF300T|TF300TG|TF300TL|TF700T|TF700KL|TF701T|TF810C|ME171|ME301T|ME302C|ME371MG|ME370T|ME372MG|ME172V|ME173X|ME400C|Slider SL101|\bK00F\b|\bK00C\b|\bK00E\b|\bK00L\b|TX201LA|ME176C|ME102A|\bM80TA\b|ME372CL|ME560CG|ME372CG|ME302KL| K010 | K011 | K017 | K01E |ME572C|ME103K|ME170C|ME171C|\bME70C\b|ME581C|ME581CL|ME8510C|ME181C|P01Y|PO1MA|P01Z|\bP027\b|\bP024\b|\bP00C\b',
233
+ 'BlackBerryTablet' => 'PlayBook|RIM Tablet',
234
+ 'HTCtablet' => 'HTC_Flyer_P512|HTC Flyer|HTC Jetstream|HTC-P715a|HTC EVO View 4G|PG41200|PG09410',
235
+ 'MotorolaTablet' => 'xoom|sholest|MZ615|MZ605|MZ505|MZ601|MZ602|MZ603|MZ604|MZ606|MZ607|MZ608|MZ609|MZ615|MZ616|MZ617',
236
+ 'NookTablet' => 'Android.*Nook|NookColor|nook browser|BNRV200|BNRV200A|BNTV250|BNTV250A|BNTV400|BNTV600|LogicPD Zoom2',
237
+ // http://www.acer.ro/ac/ro/RO/content/drivers
238
+ // http://www.packardbell.co.uk/pb/en/GB/content/download (Packard Bell is part of Acer)
239
+ // http://us.acer.com/ac/en/US/content/group/tablets
240
+ // http://www.acer.de/ac/de/DE/content/models/tablets/
241
+ // Can conflict with Micromax and Motorola phones codes.
242
+ 'AcerTablet' => 'Android.*; \b(A100|A101|A110|A200|A210|A211|A500|A501|A510|A511|A700|A701|W500|W500P|W501|W501P|W510|W511|W700|G100|G100W|B1-A71|B1-710|B1-711|A1-810|A1-811|A1-830)\b|W3-810|\bA3-A10\b|\bA3-A11\b|\bA3-A20\b|\bA3-A30',
243
+ // http://eu.computers.toshiba-europe.com/innovation/family/Tablets/1098744/banner_id/tablet_footerlink/
244
+ // http://us.toshiba.com/tablets/tablet-finder
245
+ // http://www.toshiba.co.jp/regza/tablet/
246
+ 'ToshibaTablet' => 'Android.*(AT100|AT105|AT200|AT205|AT270|AT275|AT300|AT305|AT1S5|AT500|AT570|AT700|AT830)|TOSHIBA.*FOLIO',
247
+ // http://www.nttdocomo.co.jp/english/service/developer/smart_phone/technical_info/spec/index.html
248
+ // http://www.lg.com/us/tablets
249
+ 'LGTablet' => '\bL-06C|LG-V909|LG-V900|LG-V700|LG-V510|LG-V500|LG-V410|LG-V400|LG-VK810\b',
250
+ 'FujitsuTablet' => 'Android.*\b(F-01D|F-02F|F-05E|F-10D|M532|Q572)\b',
251
+ // Prestigio Tablets http://www.prestigio.com/support
252
+ 'PrestigioTablet' => 'PMP3170B|PMP3270B|PMP3470B|PMP7170B|PMP3370B|PMP3570C|PMP5870C|PMP3670B|PMP5570C|PMP5770D|PMP3970B|PMP3870C|PMP5580C|PMP5880D|PMP5780D|PMP5588C|PMP7280C|PMP7280C3G|PMP7280|PMP7880D|PMP5597D|PMP5597|PMP7100D|PER3464|PER3274|PER3574|PER3884|PER5274|PER5474|PMP5097CPRO|PMP5097|PMP7380D|PMP5297C|PMP5297C_QUAD|PMP812E|PMP812E3G|PMP812F|PMP810E|PMP880TD|PMT3017|PMT3037|PMT3047|PMT3057|PMT7008|PMT5887|PMT5001|PMT5002',
253
+ // http://support.lenovo.com/en_GB/downloads/default.page?#
254
+ 'LenovoTablet' => 'Lenovo TAB|Idea(Tab|Pad)( A1|A10| K1|)|ThinkPad([ ]+)?Tablet|YT3-850M|YT3-X90L|YT3-X90F|YT3-X90X|Lenovo.*(S2109|S2110|S5000|S6000|K3011|A3000|A3500|A1000|A2107|A2109|A1107|A5500|A7600|B6000|B8000|B8080)(-|)(FL|F|HV|H|)|TB-X103F|TB-X304F|TB-X304L|TB-8703F|Tab2A7-10F|TB2-X30L',
255
+ // http://www.dell.com/support/home/us/en/04/Products/tab_mob/tablets
256
+ 'DellTablet' => 'Venue 11|Venue 8|Venue 7|Dell Streak 10|Dell Streak 7',
257
+ // http://www.yarvik.com/en/matrix/tablets/
258
+ 'YarvikTablet' => 'Android.*\b(TAB210|TAB211|TAB224|TAB250|TAB260|TAB264|TAB310|TAB360|TAB364|TAB410|TAB411|TAB420|TAB424|TAB450|TAB460|TAB461|TAB464|TAB465|TAB467|TAB468|TAB07-100|TAB07-101|TAB07-150|TAB07-151|TAB07-152|TAB07-200|TAB07-201-3G|TAB07-210|TAB07-211|TAB07-212|TAB07-214|TAB07-220|TAB07-400|TAB07-485|TAB08-150|TAB08-200|TAB08-201-3G|TAB08-201-30|TAB09-100|TAB09-211|TAB09-410|TAB10-150|TAB10-201|TAB10-211|TAB10-400|TAB10-410|TAB13-201|TAB274EUK|TAB275EUK|TAB374EUK|TAB462EUK|TAB474EUK|TAB9-200)\b',
259
+ 'MedionTablet' => 'Android.*\bOYO\b|LIFE.*(P9212|P9514|P9516|S9512)|LIFETAB',
260
+ 'ArnovaTablet' => '97G4|AN10G2|AN7bG3|AN7fG3|AN8G3|AN8cG3|AN7G3|AN9G3|AN7dG3|AN7dG3ST|AN7dG3ChildPad|AN10bG3|AN10bG3DT|AN9G2',
261
+ // http://www.intenso.de/kategorie_en.php?kategorie=33
262
+ // @todo: http://www.nbhkdz.com/read/b8e64202f92a2df129126bff.html - investigate
263
+ 'IntensoTablet' => 'INM8002KP|INM1010FP|INM805ND|Intenso Tab|TAB1004',
264
+ // IRU.ru Tablets http://www.iru.ru/catalog/soho/planetable/
265
+ 'IRUTablet' => 'M702pro',
266
+ 'MegafonTablet' => 'MegaFon V9|\bZTE V9\b|Android.*\bMT7A\b',
267
+ // http://www.e-boda.ro/tablete-pc.html
268
+ 'EbodaTablet' => 'E-Boda (Supreme|Impresspeed|Izzycomm|Essential)',
269
+ // http://www.allview.ro/produse/droseries/lista-tablete-pc/
270
+ 'AllViewTablet' => 'Allview.*(Viva|Alldro|City|Speed|All TV|Frenzy|Quasar|Shine|TX1|AX1|AX2)',
271
+ // http://wiki.archosfans.com/index.php?title=Main_Page
272
+ // @note Rewrite the regex format after we add more UAs.
273
+ 'ArchosTablet' => '\b(101G9|80G9|A101IT)\b|Qilive 97R|Archos5|\bARCHOS (70|79|80|90|97|101|FAMILYPAD|)(b|c|)(G10| Cobalt| TITANIUM(HD|)| Xenon| Neon|XSK| 2| XS 2| PLATINUM| CARBON|GAMEPAD)\b',
274
+ // http://www.ainol.com/plugin.php?identifier=ainol&module=product
275
+ 'AinolTablet' => 'NOVO7|NOVO8|NOVO10|Novo7Aurora|Novo7Basic|NOVO7PALADIN|novo9-Spark',
276
+ 'NokiaLumiaTablet' => 'Lumia 2520',
277
+ // @todo: inspect http://esupport.sony.com/US/p/select-system.pl?DIRECTOR=DRIVER
278
+ // Readers http://www.atsuhiro-me.net/ebook/sony-reader/sony-reader-web-browser
279
+ // http://www.sony.jp/support/tablet/
280
+ 'SonyTablet' => 'Sony.*Tablet|Xperia Tablet|Sony Tablet S|SO-03E|SGPT12|SGPT13|SGPT114|SGPT121|SGPT122|SGPT123|SGPT111|SGPT112|SGPT113|SGPT131|SGPT132|SGPT133|SGPT211|SGPT212|SGPT213|SGP311|SGP312|SGP321|EBRD1101|EBRD1102|EBRD1201|SGP351|SGP341|SGP511|SGP512|SGP521|SGP541|SGP551|SGP621|SGP641|SGP612|SOT31|SGP771|SGP611|SGP612|SGP712',
281
+ // http://www.support.philips.com/support/catalog/worldproducts.jsp?userLanguage=en&userCountry=cn&categoryid=3G_LTE_TABLET_SU_CN_CARE&title=3G%20tablets%20/%20LTE%20range&_dyncharset=UTF-8
282
+ 'PhilipsTablet' => '\b(PI2010|PI3000|PI3100|PI3105|PI3110|PI3205|PI3210|PI3900|PI4010|PI7000|PI7100)\b',
283
+ // db + http://www.cube-tablet.com/buy-products.html
284
+ 'CubeTablet' => 'Android.*(K8GT|U9GT|U10GT|U16GT|U17GT|U18GT|U19GT|U20GT|U23GT|U30GT)|CUBE U8GT',
285
+ // http://www.cobyusa.com/?p=pcat&pcat_id=3001
286
+ 'CobyTablet' => 'MID1042|MID1045|MID1125|MID1126|MID7012|MID7014|MID7015|MID7034|MID7035|MID7036|MID7042|MID7048|MID7127|MID8042|MID8048|MID8127|MID9042|MID9740|MID9742|MID7022|MID7010',
287
+ // http://www.match.net.cn/products.asp
288
+ 'MIDTablet' => 'M9701|M9000|M9100|M806|M1052|M806|T703|MID701|MID713|MID710|MID727|MID760|MID830|MID728|MID933|MID125|MID810|MID732|MID120|MID930|MID800|MID731|MID900|MID100|MID820|MID735|MID980|MID130|MID833|MID737|MID960|MID135|MID860|MID736|MID140|MID930|MID835|MID733|MID4X10',
289
+ // http://www.msi.com/support
290
+ // @todo Research the Windows Tablets.
291
+ 'MSITablet' => 'MSI \b(Primo 73K|Primo 73L|Primo 81L|Primo 77|Primo 93|Primo 75|Primo 76|Primo 73|Primo 81|Primo 91|Primo 90|Enjoy 71|Enjoy 7|Enjoy 10)\b',
292
+ // @todo http://www.kyoceramobile.com/support/drivers/
293
+ // 'KyoceraTablet' => null,
294
+ // @todo http://intexuae.com/index.php/category/mobile-devices/tablets-products/
295
+ // 'IntextTablet' => null,
296
+ // http://pdadb.net/index.php?m=pdalist&list=SMiT (NoName Chinese Tablets)
297
+ // http://www.imp3.net/14/show.php?itemid=20454
298
+ 'SMiTTablet' => 'Android.*(\bMID\b|MID-560|MTV-T1200|MTV-PND531|MTV-P1101|MTV-PND530)',
299
+ // http://www.rock-chips.com/index.php?do=prod&pid=2
300
+ 'RockChipTablet' => 'Android.*(RK2818|RK2808A|RK2918|RK3066)|RK2738|RK2808A',
301
+ // http://www.fly-phone.com/devices/tablets/ ; http://www.fly-phone.com/service/
302
+ 'FlyTablet' => 'IQ310|Fly Vision',
303
+ // http://www.bqreaders.com/gb/tablets-prices-sale.html
304
+ 'bqTablet' => 'Android.*(bq)?.*(Elcano|Curie|Edison|Maxwell|Kepler|Pascal|Tesla|Hypatia|Platon|Newton|Livingstone|Cervantes|Avant|Aquaris ([E|M]10|M8))|Maxwell.*Lite|Maxwell.*Plus',
305
+ // http://www.huaweidevice.com/worldwide/productFamily.do?method=index&directoryId=5011&treeId=3290
306
+ // http://www.huaweidevice.com/worldwide/downloadCenter.do?method=index&directoryId=3372&treeId=0&tb=1&type=software (including legacy tablets)
307
+ 'HuaweiTablet' => 'MediaPad|MediaPad 7 Youth|IDEOS S7|S7-201c|S7-202u|S7-101|S7-103|S7-104|S7-105|S7-106|S7-201|S7-Slim|M2-A01L|BAH-L09|BAH-W09',
308
+ // Nec or Medias Tab
309
+ 'NecTablet' => '\bN-06D|\bN-08D',
310
+ // Pantech Tablets: http://www.pantechusa.com/phones/
311
+ 'PantechTablet' => 'Pantech.*P4100',
312
+ // Broncho Tablets: http://www.broncho.cn/ (hard to find)
313
+ 'BronchoTablet' => 'Broncho.*(N701|N708|N802|a710)',
314
+ // http://versusuk.com/support.html
315
+ 'VersusTablet' => 'TOUCHPAD.*[78910]|\bTOUCHTAB\b',
316
+ // http://www.zync.in/index.php/our-products/tablet-phablets
317
+ 'ZyncTablet' => 'z1000|Z99 2G|z99|z930|z999|z990|z909|Z919|z900',
318
+ // http://www.positivoinformatica.com.br/www/pessoal/tablet-ypy/
319
+ 'PositivoTablet' => 'TB07STA|TB10STA|TB07FTA|TB10FTA',
320
+ // https://www.nabitablet.com/
321
+ 'NabiTablet' => 'Android.*\bNabi',
322
+ 'KoboTablet' => 'Kobo Touch|\bK080\b|\bVox\b Build|\bArc\b Build',
323
+ // French Danew Tablets http://www.danew.com/produits-tablette.php
324
+ 'DanewTablet' => 'DSlide.*\b(700|701R|702|703R|704|802|970|971|972|973|974|1010|1012)\b',
325
+ // Texet Tablets and Readers http://www.texet.ru/tablet/
326
+ 'TexetTablet' => 'NaviPad|TB-772A|TM-7045|TM-7055|TM-9750|TM-7016|TM-7024|TM-7026|TM-7041|TM-7043|TM-7047|TM-8041|TM-9741|TM-9747|TM-9748|TM-9751|TM-7022|TM-7021|TM-7020|TM-7011|TM-7010|TM-7023|TM-7025|TM-7037W|TM-7038W|TM-7027W|TM-9720|TM-9725|TM-9737W|TM-1020|TM-9738W|TM-9740|TM-9743W|TB-807A|TB-771A|TB-727A|TB-725A|TB-719A|TB-823A|TB-805A|TB-723A|TB-715A|TB-707A|TB-705A|TB-709A|TB-711A|TB-890HD|TB-880HD|TB-790HD|TB-780HD|TB-770HD|TB-721HD|TB-710HD|TB-434HD|TB-860HD|TB-840HD|TB-760HD|TB-750HD|TB-740HD|TB-730HD|TB-722HD|TB-720HD|TB-700HD|TB-500HD|TB-470HD|TB-431HD|TB-430HD|TB-506|TB-504|TB-446|TB-436|TB-416|TB-146SE|TB-126SE',
327
+ // Avoid detecting 'PLAYSTATION 3' as mobile.
328
+ 'PlaystationTablet' => 'Playstation.*(Portable|Vita)',
329
+ // http://www.trekstor.de/surftabs.html
330
+ 'TrekstorTablet' => 'ST10416-1|VT10416-1|ST70408-1|ST702xx-1|ST702xx-2|ST80208|ST97216|ST70104-2|VT10416-2|ST10216-2A|SurfTab',
331
+ // http://www.pyleaudio.com/Products.aspx?%2fproducts%2fPersonal-Electronics%2fTablets
332
+ 'PyleAudioTablet' => '\b(PTBL10CEU|PTBL10C|PTBL72BC|PTBL72BCEU|PTBL7CEU|PTBL7C|PTBL92BC|PTBL92BCEU|PTBL9CEU|PTBL9CUK|PTBL9C)\b',
333
+ // http://www.advandigital.com/index.php?link=content-product&jns=JP001
334
+ // because of the short codenames we have to include whitespaces to reduce the possible conflicts.
335
+ 'AdvanTablet' => 'Android.* \b(E3A|T3X|T5C|T5B|T3E|T3C|T3B|T1J|T1F|T2A|T1H|T1i|E1C|T1-E|T5-A|T4|E1-B|T2Ci|T1-B|T1-D|O1-A|E1-A|T1-A|T3A|T4i)\b ',
336
+ // http://www.danytech.com/category/tablet-pc
337
+ 'DanyTechTablet' => 'Genius Tab G3|Genius Tab S2|Genius Tab Q3|Genius Tab G4|Genius Tab Q4|Genius Tab G-II|Genius TAB GII|Genius TAB GIII|Genius Tab S1',
338
+ // http://www.galapad.net/product.html
339
+ 'GalapadTablet' => 'Android.*\bG1\b(?!\))',
340
+ // http://www.micromaxinfo.com/tablet/funbook
341
+ 'MicromaxTablet' => 'Funbook|Micromax.*\b(P250|P560|P360|P362|P600|P300|P350|P500|P275)\b',
342
+ // http://www.karbonnmobiles.com/products_tablet.php
343
+ 'KarbonnTablet' => 'Android.*\b(A39|A37|A34|ST8|ST10|ST7|Smart Tab3|Smart Tab2)\b',
344
+ // http://www.myallfine.com/Products.asp
345
+ 'AllFineTablet' => 'Fine7 Genius|Fine7 Shine|Fine7 Air|Fine8 Style|Fine9 More|Fine10 Joy|Fine11 Wide',
346
+ // http://www.proscanvideo.com/products-search.asp?itemClass=TABLET&itemnmbr=
347
+ 'PROSCANTablet' => '\b(PEM63|PLT1023G|PLT1041|PLT1044|PLT1044G|PLT1091|PLT4311|PLT4311PL|PLT4315|PLT7030|PLT7033|PLT7033D|PLT7035|PLT7035D|PLT7044K|PLT7045K|PLT7045KB|PLT7071KG|PLT7072|PLT7223G|PLT7225G|PLT7777G|PLT7810K|PLT7849G|PLT7851G|PLT7852G|PLT8015|PLT8031|PLT8034|PLT8036|PLT8080K|PLT8082|PLT8088|PLT8223G|PLT8234G|PLT8235G|PLT8816K|PLT9011|PLT9045K|PLT9233G|PLT9735|PLT9760G|PLT9770G)\b',
348
+ // http://www.yonesnav.com/products/products.php
349
+ 'YONESTablet' => 'BQ1078|BC1003|BC1077|RK9702|BC9730|BC9001|IT9001|BC7008|BC7010|BC708|BC728|BC7012|BC7030|BC7027|BC7026',
350
+ // http://www.cjshowroom.com/eproducts.aspx?classcode=004001001
351
+ // China manufacturer makes tablets for different small brands (eg. http://www.zeepad.net/index.html)
352
+ 'ChangJiaTablet' => 'TPC7102|TPC7103|TPC7105|TPC7106|TPC7107|TPC7201|TPC7203|TPC7205|TPC7210|TPC7708|TPC7709|TPC7712|TPC7110|TPC8101|TPC8103|TPC8105|TPC8106|TPC8203|TPC8205|TPC8503|TPC9106|TPC9701|TPC97101|TPC97103|TPC97105|TPC97106|TPC97111|TPC97113|TPC97203|TPC97603|TPC97809|TPC97205|TPC10101|TPC10103|TPC10106|TPC10111|TPC10203|TPC10205|TPC10503',
353
+ // http://www.gloryunion.cn/products.asp
354
+ // http://www.allwinnertech.com/en/apply/mobile.html
355
+ // http://www.ptcl.com.pk/pd_content.php?pd_id=284 (EVOTAB)
356
+ // @todo: Softwiner tablets?
357
+ // aka. Cute or Cool tablets. Not sure yet, must research to avoid collisions.
358
+ 'GUTablet' => 'TX-A1301|TX-M9002|Q702|kf026', // A12R|D75A|D77|D79|R83|A95|A106C|R15|A75|A76|D71|D72|R71|R73|R77|D82|R85|D92|A97|D92|R91|A10F|A77F|W71F|A78F|W78F|W81F|A97F|W91F|W97F|R16G|C72|C73E|K72|K73|R96G
359
+ // http://www.pointofview-online.com/showroom.php?shop_mode=product_listing&category_id=118
360
+ 'PointOfViewTablet' => 'TAB-P506|TAB-navi-7-3G-M|TAB-P517|TAB-P-527|TAB-P701|TAB-P703|TAB-P721|TAB-P731N|TAB-P741|TAB-P825|TAB-P905|TAB-P925|TAB-PR945|TAB-PL1015|TAB-P1025|TAB-PI1045|TAB-P1325|TAB-PROTAB[0-9]+|TAB-PROTAB25|TAB-PROTAB26|TAB-PROTAB27|TAB-PROTAB26XL|TAB-PROTAB2-IPS9|TAB-PROTAB30-IPS9|TAB-PROTAB25XXL|TAB-PROTAB26-IPS10|TAB-PROTAB30-IPS10',
361
+ // http://www.overmax.pl/pl/katalog-produktow,p8/tablety,c14/
362
+ // @todo: add more tests.
363
+ 'OvermaxTablet' => 'OV-(SteelCore|NewBase|Basecore|Baseone|Exellen|Quattor|EduTab|Solution|ACTION|BasicTab|TeddyTab|MagicTab|Stream|TB-08|TB-09)|Qualcore 1027',
364
+ // http://hclmetablet.com/India/index.php
365
+ 'HCLTablet' => 'HCL.*Tablet|Connect-3G-2.0|Connect-2G-2.0|ME Tablet U1|ME Tablet U2|ME Tablet G1|ME Tablet X1|ME Tablet Y2|ME Tablet Sync',
366
+ // http://www.edigital.hu/Tablet_es_e-book_olvaso/Tablet-c18385.html
367
+ 'DPSTablet' => 'DPS Dream 9|DPS Dual 7',
368
+ // http://www.visture.com/index.asp
369
+ 'VistureTablet' => 'V97 HD|i75 3G|Visture V4( HD)?|Visture V5( HD)?|Visture V10',
370
+ // http://www.mijncresta.nl/tablet
371
+ 'CrestaTablet' => 'CTP(-)?810|CTP(-)?818|CTP(-)?828|CTP(-)?838|CTP(-)?888|CTP(-)?978|CTP(-)?980|CTP(-)?987|CTP(-)?988|CTP(-)?989',
372
+ // MediaTek - http://www.mediatek.com/_en/01_products/02_proSys.php?cata_sn=1&cata1_sn=1&cata2_sn=309
373
+ 'MediatekTablet' => '\bMT8125|MT8389|MT8135|MT8377\b',
374
+ // Concorde tab
375
+ 'ConcordeTablet' => 'Concorde([ ]+)?Tab|ConCorde ReadMan',
376
+ // GoClever Tablets - http://www.goclever.com/uk/products,c1/tablet,c5/
377
+ 'GoCleverTablet' => 'GOCLEVER TAB|A7GOCLEVER|M1042|M7841|M742|R1042BK|R1041|TAB A975|TAB A7842|TAB A741|TAB A741L|TAB M723G|TAB M721|TAB A1021|TAB I921|TAB R721|TAB I720|TAB T76|TAB R70|TAB R76.2|TAB R106|TAB R83.2|TAB M813G|TAB I721|GCTA722|TAB I70|TAB I71|TAB S73|TAB R73|TAB R74|TAB R93|TAB R75|TAB R76.1|TAB A73|TAB A93|TAB A93.2|TAB T72|TAB R83|TAB R974|TAB R973|TAB A101|TAB A103|TAB A104|TAB A104.2|R105BK|M713G|A972BK|TAB A971|TAB R974.2|TAB R104|TAB R83.3|TAB A1042',
378
+ // Modecom Tablets - http://www.modecom.eu/tablets/portal/
379
+ 'ModecomTablet' => 'FreeTAB 9000|FreeTAB 7.4|FreeTAB 7004|FreeTAB 7800|FreeTAB 2096|FreeTAB 7.5|FreeTAB 1014|FreeTAB 1001 |FreeTAB 8001|FreeTAB 9706|FreeTAB 9702|FreeTAB 7003|FreeTAB 7002|FreeTAB 1002|FreeTAB 7801|FreeTAB 1331|FreeTAB 1004|FreeTAB 8002|FreeTAB 8014|FreeTAB 9704|FreeTAB 1003',
380
+ // Vonino Tablets - http://www.vonino.eu/tablets
381
+ 'VoninoTablet' => '\b(Argus[ _]?S|Diamond[ _]?79HD|Emerald[ _]?78E|Luna[ _]?70C|Onyx[ _]?S|Onyx[ _]?Z|Orin[ _]?HD|Orin[ _]?S|Otis[ _]?S|SpeedStar[ _]?S|Magnet[ _]?M9|Primus[ _]?94[ _]?3G|Primus[ _]?94HD|Primus[ _]?QS|Android.*\bQ8\b|Sirius[ _]?EVO[ _]?QS|Sirius[ _]?QS|Spirit[ _]?S)\b',
382
+ // ECS Tablets - http://www.ecs.com.tw/ECSWebSite/Product/Product_Tablet_List.aspx?CategoryID=14&MenuID=107&childid=M_107&LanID=0
383
+ 'ECSTablet' => 'V07OT2|TM105A|S10OT1|TR10CS1',
384
+ // Storex Tablets - http://storex.fr/espace_client/support.html
385
+ // @note: no need to add all the tablet codes since they are guided by the first regex.
386
+ 'StorexTablet' => 'eZee[_\']?(Tab|Go)[0-9]+|TabLC7|Looney Tunes Tab',
387
+ // Generic Vodafone tablets.
388
+ 'VodafoneTablet' => 'SmartTab([ ]+)?[0-9]+|SmartTabII10|SmartTabII7|VF-1497',
389
+ // French tablets - Essentiel B http://www.boulanger.fr/tablette_tactile_e-book/tablette_tactile_essentiel_b/cl_68908.htm?multiChoiceToDelete=brand&mc_brand=essentielb
390
+ // Aka: http://www.essentielb.fr/
391
+ 'EssentielBTablet' => 'Smart[ \']?TAB[ ]+?[0-9]+|Family[ \']?TAB2',
392
+ // Ross & Moor - http://ross-moor.ru/
393
+ 'RossMoorTablet' => 'RM-790|RM-997|RMD-878G|RMD-974R|RMT-705A|RMT-701|RME-601|RMT-501|RMT-711',
394
+ // i-mobile http://product.i-mobilephone.com/Mobile_Device
395
+ 'iMobileTablet' => 'i-mobile i-note',
396
+ // http://www.tolino.de/de/vergleichen/
397
+ 'TolinoTablet' => 'tolino tab [0-9.]+|tolino shine',
398
+ // AudioSonic - a Kmart brand
399
+ // http://www.kmart.com.au/webapp/wcs/stores/servlet/Search?langId=-1&storeId=10701&catalogId=10001&categoryId=193001&pageSize=72&currentPage=1&searchCategory=193001%2b4294965664&sortBy=p_MaxPrice%7c1
400
+ 'AudioSonicTablet' => '\bC-22Q|T7-QC|T-17B|T-17P\b',
401
+ // AMPE Tablets - http://www.ampe.com.my/product-category/tablets/
402
+ // @todo: add them gradually to avoid conflicts.
403
+ 'AMPETablet' => 'Android.* A78 ',
404
+ // Skk Mobile - http://skkmobile.com.ph/product_tablets.php
405
+ 'SkkTablet' => 'Android.* (SKYPAD|PHOENIX|CYCLOPS)',
406
+ // Tecno Mobile (only tablet) - http://www.tecno-mobile.com/index.php/product?filterby=smart&list_order=all&page=1
407
+ 'TecnoTablet' => 'TECNO P9|TECNO DP8D',
408
+ // JXD (consoles & tablets) - http://jxd.hk/products.asp?selectclassid=009008&clsid=3
409
+ 'JXDTablet' => 'Android.* \b(F3000|A3300|JXD5000|JXD3000|JXD2000|JXD300B|JXD300|S5800|S7800|S602b|S5110b|S7300|S5300|S602|S603|S5100|S5110|S601|S7100a|P3000F|P3000s|P101|P200s|P1000m|P200m|P9100|P1000s|S6600b|S908|P1000|P300|S18|S6600|S9100)\b',
410
+ // i-Joy tablets - http://www.i-joy.es/en/cat/products/tablets/
411
+ 'iJoyTablet' => 'Tablet (Spirit 7|Essentia|Galatea|Fusion|Onix 7|Landa|Titan|Scooby|Deox|Stella|Themis|Argon|Unique 7|Sygnus|Hexen|Finity 7|Cream|Cream X2|Jade|Neon 7|Neron 7|Kandy|Scape|Saphyr 7|Rebel|Biox|Rebel|Rebel 8GB|Myst|Draco 7|Myst|Tab7-004|Myst|Tadeo Jones|Tablet Boing|Arrow|Draco Dual Cam|Aurix|Mint|Amity|Revolution|Finity 9|Neon 9|T9w|Amity 4GB Dual Cam|Stone 4GB|Stone 8GB|Andromeda|Silken|X2|Andromeda II|Halley|Flame|Saphyr 9,7|Touch 8|Planet|Triton|Unique 10|Hexen 10|Memphis 4GB|Memphis 8GB|Onix 10)',
412
+ // http://www.intracon.eu/tablet
413
+ 'FX2Tablet' => 'FX2 PAD7|FX2 PAD10',
414
+ // http://www.xoro.de/produkte/
415
+ // @note: Might be the same brand with 'Simply tablets'
416
+ 'XoroTablet' => 'KidsPAD 701|PAD[ ]?712|PAD[ ]?714|PAD[ ]?716|PAD[ ]?717|PAD[ ]?718|PAD[ ]?720|PAD[ ]?721|PAD[ ]?722|PAD[ ]?790|PAD[ ]?792|PAD[ ]?900|PAD[ ]?9715D|PAD[ ]?9716DR|PAD[ ]?9718DR|PAD[ ]?9719QR|PAD[ ]?9720QR|TelePAD1030|Telepad1032|TelePAD730|TelePAD731|TelePAD732|TelePAD735Q|TelePAD830|TelePAD9730|TelePAD795|MegaPAD 1331|MegaPAD 1851|MegaPAD 2151',
417
+ // http://www1.viewsonic.com/products/computing/tablets/
418
+ 'ViewsonicTablet' => 'ViewPad 10pi|ViewPad 10e|ViewPad 10s|ViewPad E72|ViewPad7|ViewPad E100|ViewPad 7e|ViewSonic VB733|VB100a',
419
+ // https://www.verizonwireless.com/tablets/verizon/
420
+ 'VerizonTablet' => 'QTAQZ3|QTAIR7|QTAQTZ3|QTASUN1|QTASUN2|QTAXIA1',
421
+ // http://www.odys.de/web/internet-tablet_en.html
422
+ 'OdysTablet' => 'LOOX|XENO10|ODYS[ -](Space|EVO|Xpress|NOON)|\bXELIO\b|Xelio10Pro|XELIO7PHONETAB|XELIO10EXTREME|XELIOPT2|NEO_QUAD10',
423
+ // http://www.captiva-power.de/products.html#tablets-en
424
+ 'CaptivaTablet' => 'CAPTIVA PAD',
425
+ // IconBIT - http://www.iconbit.com/products/tablets/
426
+ 'IconbitTablet' => 'NetTAB|NT-3702|NT-3702S|NT-3702S|NT-3603P|NT-3603P|NT-0704S|NT-0704S|NT-3805C|NT-3805C|NT-0806C|NT-0806C|NT-0909T|NT-0909T|NT-0907S|NT-0907S|NT-0902S|NT-0902S',
427
+ // http://www.teclast.com/topic.php?channelID=70&topicID=140&pid=63
428
+ 'TeclastTablet' => 'T98 4G|\bP80\b|\bX90HD\b|X98 Air|X98 Air 3G|\bX89\b|P80 3G|\bX80h\b|P98 Air|\bX89HD\b|P98 3G|\bP90HD\b|P89 3G|X98 3G|\bP70h\b|P79HD 3G|G18d 3G|\bP79HD\b|\bP89s\b|\bA88\b|\bP10HD\b|\bP19HD\b|G18 3G|\bP78HD\b|\bA78\b|\bP75\b|G17s 3G|G17h 3G|\bP85t\b|\bP90\b|\bP11\b|\bP98t\b|\bP98HD\b|\bG18d\b|\bP85s\b|\bP11HD\b|\bP88s\b|\bA80HD\b|\bA80se\b|\bA10h\b|\bP89\b|\bP78s\b|\bG18\b|\bP85\b|\bA70h\b|\bA70\b|\bG17\b|\bP18\b|\bA80s\b|\bA11s\b|\bP88HD\b|\bA80h\b|\bP76s\b|\bP76h\b|\bP98\b|\bA10HD\b|\bP78\b|\bP88\b|\bA11\b|\bA10t\b|\bP76a\b|\bP76t\b|\bP76e\b|\bP85HD\b|\bP85a\b|\bP86\b|\bP75HD\b|\bP76v\b|\bA12\b|\bP75a\b|\bA15\b|\bP76Ti\b|\bP81HD\b|\bA10\b|\bT760VE\b|\bT720HD\b|\bP76\b|\bP73\b|\bP71\b|\bP72\b|\bT720SE\b|\bC520Ti\b|\bT760\b|\bT720VE\b|T720-3GE|T720-WiFi',
429
+ // Onda - http://www.onda-tablet.com/buy-android-onda.html?dir=desc&limit=all&order=price
430
+ 'OndaTablet' => '\b(V975i|Vi30|VX530|V701|Vi60|V701s|Vi50|V801s|V719|Vx610w|VX610W|V819i|Vi10|VX580W|Vi10|V711s|V813|V811|V820w|V820|Vi20|V711|VI30W|V712|V891w|V972|V819w|V820w|Vi60|V820w|V711|V813s|V801|V819|V975s|V801|V819|V819|V818|V811|V712|V975m|V101w|V961w|V812|V818|V971|V971s|V919|V989|V116w|V102w|V973|Vi40)\b[\s]+|V10 \b4G\b',
431
+ 'JaytechTablet' => 'TPC-PA762',
432
+ 'BlaupunktTablet' => 'Endeavour 800NG|Endeavour 1010',
433
+ // http://www.digma.ru/support/download/
434
+ // @todo: Ebooks also (if requested)
435
+ 'DigmaTablet' => '\b(iDx10|iDx9|iDx8|iDx7|iDxD7|iDxD8|iDsQ8|iDsQ7|iDsQ8|iDsD10|iDnD7|3TS804H|iDsQ11|iDj7|iDs10)\b',
436
+ // http://www.evolioshop.com/ro/tablete-pc.html
437
+ // http://www.evolio.ro/support/downloads_static.html?cat=2
438
+ // @todo: Research some more
439
+ 'EvolioTablet' => 'ARIA_Mini_wifi|Aria[ _]Mini|Evolio X10|Evolio X7|Evolio X8|\bEvotab\b|\bNeura\b',
440
+ // @todo http://www.lavamobiles.com/tablets-data-cards
441
+ 'LavaTablet' => 'QPAD E704|\bIvoryS\b|E-TAB IVORY|\bE-TAB\b',
442
+ // http://www.breezetablet.com/
443
+ 'AocTablet' => 'MW0811|MW0812|MW0922|MTK8382|MW1031|MW0831|MW0821|MW0931|MW0712',
444
+ // http://www.mpmaneurope.com/en/products/internet-tablets-14/android-tablets-14/
445
+ 'MpmanTablet' => 'MP11 OCTA|MP10 OCTA|MPQC1114|MPQC1004|MPQC994|MPQC974|MPQC973|MPQC804|MPQC784|MPQC780|\bMPG7\b|MPDCG75|MPDCG71|MPDC1006|MP101DC|MPDC9000|MPDC905|MPDC706HD|MPDC706|MPDC705|MPDC110|MPDC100|MPDC99|MPDC97|MPDC88|MPDC8|MPDC77|MP709|MID701|MID711|MID170|MPDC703|MPQC1010',
446
+ // https://www.celkonmobiles.com/?_a=categoryphones&sid=2
447
+ 'CelkonTablet' => 'CT695|CT888|CT[\s]?910|CT7 Tab|CT9 Tab|CT3 Tab|CT2 Tab|CT1 Tab|C820|C720|\bCT-1\b',
448
+ // http://www.wolderelectronics.com/productos/manuales-y-guias-rapidas/categoria-2-miTab
449
+ 'WolderTablet' => 'miTab \b(DIAMOND|SPACE|BROOKLYN|NEO|FLY|MANHATTAN|FUNK|EVOLUTION|SKY|GOCAR|IRON|GENIUS|POP|MINT|EPSILON|BROADWAY|JUMP|HOP|LEGEND|NEW AGE|LINE|ADVANCE|FEEL|FOLLOW|LIKE|LINK|LIVE|THINK|FREEDOM|CHICAGO|CLEVELAND|BALTIMORE-GH|IOWA|BOSTON|SEATTLE|PHOENIX|DALLAS|IN 101|MasterChef)\b',
450
+ 'MediacomTablet' => 'M-MPI10C3G|M-SP10EG|M-SP10EGP|M-SP10HXAH|M-SP7HXAH|M-SP10HXBH|M-SP8HXAH|M-SP8MXA',
451
+ // http://www.mi.com/en
452
+ 'MiTablet' => '\bMI PAD\b|\bHM NOTE 1W\b',
453
+ // http://www.nbru.cn/index.html
454
+ 'NibiruTablet' => 'Nibiru M1|Nibiru Jupiter One',
455
+ // http://navroad.com/products/produkty/tablety/
456
+ // http://navroad.com/products/produkty/tablety/
457
+ 'NexoTablet' => 'NEXO NOVA|NEXO 10|NEXO AVIO|NEXO FREE|NEXO GO|NEXO EVO|NEXO 3G|NEXO SMART|NEXO KIDDO|NEXO MOBI',
458
+ // http://leader-online.com/new_site/product-category/tablets/
459
+ // http://www.leader-online.net.au/List/Tablet
460
+ 'LeaderTablet' => 'TBLT10Q|TBLT10I|TBL-10WDKB|TBL-10WDKBO2013|TBL-W230V2|TBL-W450|TBL-W500|SV572|TBLT7I|TBA-AC7-8G|TBLT79|TBL-8W16|TBL-10W32|TBL-10WKB|TBL-W100',
461
+ // http://www.datawind.com/ubislate/
462
+ 'UbislateTablet' => 'UbiSlate[\s]?7C',
463
+ // http://www.pocketbook-int.com/ru/support
464
+ 'PocketBookTablet' => 'Pocketbook',
465
+ // http://www.kocaso.com/product_tablet.html
466
+ 'KocasoTablet' => '\b(TB-1207)\b',
467
+ // http://global.hisense.com/product/asia/tablet/Sero7/201412/t20141215_91832.htm
468
+ 'HisenseTablet' => '\b(F5281|E2371)\b',
469
+ // http://www.tesco.com/direct/hudl/
470
+ 'Hudl' => 'Hudl HT7S3|Hudl 2',
471
+ // http://www.telstra.com.au/home-phone/thub-2/
472
+ 'TelstraTablet' => 'T-Hub2',
473
+ 'GenericTablet' => 'Android.*\b97D\b|Tablet(?!.*PC)|BNTV250A|MID-WCDMA|LogicPD Zoom2|\bA7EB\b|CatNova8|A1_07|CT704|CT1002|\bM721\b|rk30sdk|\bEVOTAB\b|M758A|ET904|ALUMIUM10|Smartfren Tab|Endeavour 1010|Tablet-PC-4|Tagi Tab|\bM6pro\b|CT1020W|arc 10HD|\bTP750\b|\bQTAQZ3\b|WVT101|TM1088|KT107'
474
+ );
475
+
476
+ /**
477
+ * List of mobile Operating Systems.
478
+ *
479
+ * @var array
480
+ */
481
+ protected static $operatingSystems = array(
482
+ 'AndroidOS' => 'Android',
483
+ 'BlackBerryOS' => 'blackberry|\bBB10\b|rim tablet os',
484
+ 'PalmOS' => 'PalmOS|avantgo|blazer|elaine|hiptop|palm|plucker|xiino',
485
+ 'SymbianOS' => 'Symbian|SymbOS|Series60|Series40|SYB-[0-9]+|\bS60\b',
486
+ // @reference: http://en.wikipedia.org/wiki/Windows_Mobile
487
+ 'WindowsMobileOS' => 'Windows CE.*(PPC|Smartphone|Mobile|[0-9]{3}x[0-9]{3})|Window Mobile|Windows Phone [0-9.]+|WCE;',
488
+ // @reference: http://en.wikipedia.org/wiki/Windows_Phone
489
+ // http://wifeng.cn/?r=blog&a=view&id=106
490
+ // http://nicksnettravels.builttoroam.com/post/2011/01/10/Bogus-Windows-Phone-7-User-Agent-String.aspx
491
+ // http://msdn.microsoft.com/library/ms537503.aspx
492
+ // https://msdn.microsoft.com/en-us/library/hh869301(v=vs.85).aspx
493
+ 'WindowsPhoneOS' => 'Windows Phone 10.0|Windows Phone 8.1|Windows Phone 8.0|Windows Phone OS|XBLWP7|ZuneWP7|Windows NT 6.[23]; ARM;',
494
+ 'iOS' => '\biPhone.*Mobile|\biPod|\biPad|AppleCoreMedia',
495
+ // http://en.wikipedia.org/wiki/MeeGo
496
+ // @todo: research MeeGo in UAs
497
+ 'MeeGoOS' => 'MeeGo',
498
+ // http://en.wikipedia.org/wiki/Maemo
499
+ // @todo: research Maemo in UAs
500
+ 'MaemoOS' => 'Maemo',
501
+ 'JavaOS' => 'J2ME/|\bMIDP\b|\bCLDC\b', // '|Java/' produces bug #135
502
+ 'webOS' => 'webOS|hpwOS',
503
+ 'badaOS' => '\bBada\b',
504
+ 'BREWOS' => 'BREW',
505
+ );
506
+
507
+ /**
508
+ * List of mobile User Agents.
509
+ *
510
+ * IMPORTANT: This is a list of only mobile browsers.
511
+ * Mobile Detect 2.x supports only mobile browsers,
512
+ * it was never designed to detect all browsers.
513
+ * The change will come in 2017 in the 3.x release for PHP7.
514
+ *
515
+ * @var array
516
+ */
517
+ protected static $browsers = array(
518
+ //'Vivaldi' => 'Vivaldi',
519
+ // @reference: https://developers.google.com/chrome/mobile/docs/user-agent
520
+ 'Chrome' => '\bCrMo\b|CriOS|Android.*Chrome/[.0-9]* (Mobile)?',
521
+ 'Dolfin' => '\bDolfin\b',
522
+ 'Opera' => 'Opera.*Mini|Opera.*Mobi|Android.*Opera|Mobile.*OPR/[0-9.]+$|Coast/[0-9.]+',
523
+ 'Skyfire' => 'Skyfire',
524
+ 'Edge' => 'Mobile Safari/[.0-9]* Edge',
525
+ 'IE' => 'IEMobile|MSIEMobile', // |Trident/[.0-9]+
526
+ 'Firefox' => 'fennec|firefox.*maemo|(Mobile|Tablet).*Firefox|Firefox.*Mobile|FxiOS',
527
+ 'Bolt' => 'bolt',
528
+ 'TeaShark' => 'teashark',
529
+ 'Blazer' => 'Blazer',
530
+ // @reference: http://developer.apple.com/library/safari/#documentation/AppleApplications/Reference/SafariWebContent/OptimizingforSafarioniPhone/OptimizingforSafarioniPhone.html#//apple_ref/doc/uid/TP40006517-SW3
531
+ 'Safari' => 'Version.*Mobile.*Safari|Safari.*Mobile|MobileSafari',
532
+ // http://en.wikipedia.org/wiki/Midori_(web_browser)
533
+ //'Midori' => 'midori',
534
+ //'Tizen' => 'Tizen',
535
+ 'WeChat' => '\bMicroMessenger\b',
536
+ 'UCBrowser' => 'UC.*Browser|UCWEB',
537
+ 'baiduboxapp' => 'baiduboxapp',
538
+ 'baidubrowser' => 'baidubrowser',
539
+ // https://github.com/serbanghita/Mobile-Detect/issues/7
540
+ 'DiigoBrowser' => 'DiigoBrowser',
541
+ // http://www.puffinbrowser.com/index.php
542
+ 'Puffin' => 'Puffin',
543
+ // http://mercury-browser.com/index.html
544
+ 'Mercury' => '\bMercury\b',
545
+ // http://en.wikipedia.org/wiki/Obigo_Browser
546
+ 'ObigoBrowser' => 'Obigo',
547
+ // http://en.wikipedia.org/wiki/NetFront
548
+ 'NetFront' => 'NF-Browser',
549
+ // @reference: http://en.wikipedia.org/wiki/Minimo
550
+ // http://en.wikipedia.org/wiki/Vision_Mobile_Browser
551
+ 'GenericBrowser' => 'NokiaBrowser|OviBrowser|OneBrowser|TwonkyBeamBrowser|SEMC.*Browser|FlyFlow|Minimo|NetFront|Novarra-Vision|MQQBrowser|MicroMessenger',
552
+ // @reference: https://en.wikipedia.org/wiki/Pale_Moon_(web_browser)
553
+ 'PaleMoon' => 'Android.*PaleMoon|Mobile.*PaleMoon',
554
+ );
555
+
556
+ /**
557
+ * Utilities.
558
+ *
559
+ * @var array
560
+ */
561
+ protected static $utilities = array(
562
+ // Experimental. When a mobile device wants to switch to 'Desktop Mode'.
563
+ // http://scottcate.com/technology/windows-phone-8-ie10-desktop-or-mobile/
564
+ // https://github.com/serbanghita/Mobile-Detect/issues/57#issuecomment-15024011
565
+ // https://developers.facebook.com/docs/sharing/best-practices
566
+ 'Bot' => 'Googlebot|facebookexternalhit|AdsBot-Google|Google Keyword Suggestion|Facebot|YandexBot|YandexMobileBot|bingbot|ia_archiver|AhrefsBot|Ezooms|GSLFbot|WBSearchBot|Twitterbot|TweetmemeBot|Twikle|PaperLiBot|Wotbox|UnwindFetchor|Exabot|MJ12bot|YandexImages|TurnitinBot|Pingdom',
567
+ 'MobileBot' => 'Googlebot-Mobile|AdsBot-Google-Mobile|YahooSeeker/M1A1-R2D2',
568
+ 'DesktopMode' => 'WPDesktop',
569
+ 'TV' => 'SonyDTV|HbbTV', // experimental
570
+ 'WebKit' => '(webkit)[ /]([\w.]+)',
571
+ // @todo: Include JXD consoles.
572
+ 'Console' => '\b(Nintendo|Nintendo WiiU|Nintendo 3DS|Nintendo Switch|PLAYSTATION|Xbox)\b',
573
+ 'Watch' => 'SM-V700',
574
+ );
575
+
576
+ /**
577
+ * All possible HTTP headers that represent the
578
+ * User-Agent string.
579
+ *
580
+ * @var array
581
+ */
582
+ protected static $uaHttpHeaders = array(
583
+ // The default User-Agent string.
584
+ 'HTTP_USER_AGENT',
585
+ // Header can occur on devices using Opera Mini.
586
+ 'HTTP_X_OPERAMINI_PHONE_UA',
587
+ // Vodafone specific header: http://www.seoprinciple.com/mobile-web-community-still-angry-at-vodafone/24/
588
+ 'HTTP_X_DEVICE_USER_AGENT',
589
+ 'HTTP_X_ORIGINAL_USER_AGENT',
590
+ 'HTTP_X_SKYFIRE_PHONE',
591
+ 'HTTP_X_BOLT_PHONE_UA',
592
+ 'HTTP_DEVICE_STOCK_UA',
593
+ 'HTTP_X_UCBROWSER_DEVICE_UA'
594
+ );
595
+
596
+ /**
597
+ * The individual segments that could exist in a User-Agent string. VER refers to the regular
598
+ * expression defined in the constant self::VER.
599
+ *
600
+ * @var array
601
+ */
602
+ protected static $properties = array(
603
+
604
+ // Build
605
+ 'Mobile' => 'Mobile/[VER]',
606
+ 'Build' => 'Build/[VER]',
607
+ 'Version' => 'Version/[VER]',
608
+ 'VendorID' => 'VendorID/[VER]',
609
+
610
+ // Devices
611
+ 'iPad' => 'iPad.*CPU[a-z ]+[VER]',
612
+ 'iPhone' => 'iPhone.*CPU[a-z ]+[VER]',
613
+ 'iPod' => 'iPod.*CPU[a-z ]+[VER]',
614
+ //'BlackBerry' => array('BlackBerry[VER]', 'BlackBerry [VER];'),
615
+ 'Kindle' => 'Kindle/[VER]',
616
+
617
+ // Browser
618
+ 'Chrome' => array('Chrome/[VER]', 'CriOS/[VER]', 'CrMo/[VER]'),
619
+ 'Coast' => array('Coast/[VER]'),
620
+ 'Dolfin' => 'Dolfin/[VER]',
621
+ // @reference: https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/User-Agent/Firefox
622
+ 'Firefox' => array('Firefox/[VER]', 'FxiOS/[VER]'),
623
+ 'Fennec' => 'Fennec/[VER]',
624
+ // http://msdn.microsoft.com/en-us/library/ms537503(v=vs.85).aspx
625
+ // https://msdn.microsoft.com/en-us/library/ie/hh869301(v=vs.85).aspx
626
+ 'Edge' => 'Edge/[VER]',
627
+ 'IE' => array('IEMobile/[VER];', 'IEMobile [VER]', 'MSIE [VER];', 'Trident/[0-9.]+;.*rv:[VER]'),
628
+ // http://en.wikipedia.org/wiki/NetFront
629
+ 'NetFront' => 'NetFront/[VER]',
630
+ 'NokiaBrowser' => 'NokiaBrowser/[VER]',
631
+ 'Opera' => array( ' OPR/[VER]', 'Opera Mini/[VER]', 'Version/[VER]' ),
632
+ 'Opera Mini' => 'Opera Mini/[VER]',
633
+ 'Opera Mobi' => 'Version/[VER]',
634
+ 'UCBrowser' => array( 'UCWEB[VER]', 'UC.*Browser/[VER]' ),
635
+ 'MQQBrowser' => 'MQQBrowser/[VER]',
636
+ 'MicroMessenger' => 'MicroMessenger/[VER]',
637
+ 'baiduboxapp' => 'baiduboxapp/[VER]',
638
+ 'baidubrowser' => 'baidubrowser/[VER]',
639
+ 'SamsungBrowser' => 'SamsungBrowser/[VER]',
640
+ 'Iron' => 'Iron/[VER]',
641
+ // @note: Safari 7534.48.3 is actually Version 5.1.
642
+ // @note: On BlackBerry the Version is overwriten by the OS.
643
+ 'Safari' => array( 'Version/[VER]', 'Safari/[VER]' ),
644
+ 'Skyfire' => 'Skyfire/[VER]',
645
+ 'Tizen' => 'Tizen/[VER]',
646
+ 'Webkit' => 'webkit[ /][VER]',
647
+ 'PaleMoon' => 'PaleMoon/[VER]',
648
+
649
+ // Engine
650
+ 'Gecko' => 'Gecko/[VER]',
651
+ 'Trident' => 'Trident/[VER]',
652
+ 'Presto' => 'Presto/[VER]',
653
+ 'Goanna' => 'Goanna/[VER]',
654
+
655
+ // OS
656
+ 'iOS' => ' \bi?OS\b [VER][ ;]{1}',
657
+ 'Android' => 'Android [VER]',
658
+ 'BlackBerry' => array('BlackBerry[\w]+/[VER]', 'BlackBerry.*Version/[VER]', 'Version/[VER]'),
659
+ 'BREW' => 'BREW [VER]',
660
+ 'Java' => 'Java/[VER]',
661
+ // @reference: http://windowsteamblog.com/windows_phone/b/wpdev/archive/2011/08/29/introducing-the-ie9-on-windows-phone-mango-user-agent-string.aspx
662
+ // @reference: http://en.wikipedia.org/wiki/Windows_NT#Releases
663
+ 'Windows Phone OS' => array( 'Windows Phone OS [VER]', 'Windows Phone [VER]'),
664
+ 'Windows Phone' => 'Windows Phone [VER]',
665
+ 'Windows CE' => 'Windows CE/[VER]',
666
+ // http://social.msdn.microsoft.com/Forums/en-US/windowsdeveloperpreviewgeneral/thread/6be392da-4d2f-41b4-8354-8dcee20c85cd
667
+ 'Windows NT' => 'Windows NT [VER]',
668
+ 'Symbian' => array('SymbianOS/[VER]', 'Symbian/[VER]'),
669
+ 'webOS' => array('webOS/[VER]', 'hpwOS/[VER];'),
670
+ );
671
+
672
+ /**
673
+ * Construct an instance of this class.
674
+ *
675
+ * @param array $headers Specify the headers as injection. Should be PHP _SERVER flavored.
676
+ * If left empty, will use the global _SERVER['HTTP_*'] vars instead.
677
+ * @param string $userAgent Inject the User-Agent header. If null, will use HTTP_USER_AGENT
678
+ * from the $headers array instead.
679
+ */
680
+ public function __construct(
681
+ array $headers = null,
682
+ $userAgent = null
683
+ ) {
684
+ $this->setHttpHeaders($headers);
685
+ $this->setUserAgent($userAgent);
686
+ }
687
+
688
+ /**
689
+ * Get the current script version.
690
+ * This is useful for the demo.php file,
691
+ * so people can check on what version they are testing
692
+ * for mobile devices.
693
+ *
694
+ * @return string The version number in semantic version format.
695
+ */
696
+ public static function getScriptVersion()
697
+ {
698
+ return self::VERSION;
699
+ }
700
+
701
+ /**
702
+ * Set the HTTP Headers. Must be PHP-flavored. This method will reset existing headers.
703
+ *
704
+ * @param array $httpHeaders The headers to set. If null, then using PHP's _SERVER to extract
705
+ * the headers. The default null is left for backwards compatibility.
706
+ */
707
+ public function setHttpHeaders($httpHeaders = null)
708
+ {
709
+ // use global _SERVER if $httpHeaders aren't defined
710
+ if (!is_array($httpHeaders) || !count($httpHeaders)) {
711
+ $httpHeaders = $_SERVER;
712
+ }
713
+
714
+ // clear existing headers
715
+ $this->httpHeaders = array();
716
+
717
+ // Only save HTTP headers. In PHP land, that means only _SERVER vars that
718
+ // start with HTTP_.
719
+ foreach ($httpHeaders as $key => $value) {
720
+ if (substr($key, 0, 5) === 'HTTP_') {
721
+ $this->httpHeaders[$key] = $value;
722
+ }
723
+ }
724
+
725
+ // In case we're dealing with CloudFront, we need to know.
726
+ $this->setCfHeaders($httpHeaders);
727
+ }
728
+
729
+ /**
730
+ * Retrieves the HTTP headers.
731
+ *
732
+ * @return array
733
+ */
734
+ public function getHttpHeaders()
735
+ {
736
+ return $this->httpHeaders;
737
+ }
738
+
739
+ /**
740
+ * Retrieves a particular header. If it doesn't exist, no exception/error is caused.
741
+ * Simply null is returned.
742
+ *
743
+ * @param string $header The name of the header to retrieve. Can be HTTP compliant such as
744
+ * "User-Agent" or "X-Device-User-Agent" or can be php-esque with the
745
+ * all-caps, HTTP_ prefixed, underscore seperated awesomeness.
746
+ *
747
+ * @return string|null The value of the header.
748
+ */
749
+ public function getHttpHeader($header)
750
+ {
751
+ // are we using PHP-flavored headers?
752
+ if (strpos($header, '_') === false) {
753
+ $header = str_replace('-', '_', $header);
754
+ $header = strtoupper($header);
755
+ }
756
+
757
+ // test the alternate, too
758
+ $altHeader = 'HTTP_' . $header;
759
+
760
+ //Test both the regular and the HTTP_ prefix
761
+ if (isset($this->httpHeaders[$header])) {
762
+ return $this->httpHeaders[$header];
763
+ } elseif (isset($this->httpHeaders[$altHeader])) {
764
+ return $this->httpHeaders[$altHeader];
765
+ }
766
+
767
+ return null;
768
+ }
769
+
770
+ public function getMobileHeaders()
771
+ {
772
+ return self::$mobileHeaders;
773
+ }
774
+
775
+ /**
776
+ * Get all possible HTTP headers that
777
+ * can contain the User-Agent string.
778
+ *
779
+ * @return array List of HTTP headers.
780
+ */
781
+ public function getUaHttpHeaders()
782
+ {
783
+ return self::$uaHttpHeaders;
784
+ }
785
+
786
+
787
+ /**
788
+ * Set CloudFront headers
789
+ * http://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/header-caching.html#header-caching-web-device
790
+ *
791
+ * @param array $cfHeaders List of HTTP headers
792
+ *
793
+ * @return boolean If there were CloudFront headers to be set
794
+ */
795
+ public function setCfHeaders($cfHeaders = null) {
796
+ // use global _SERVER if $cfHeaders aren't defined
797
+ if (!is_array($cfHeaders) || !count($cfHeaders)) {
798
+ $cfHeaders = $_SERVER;
799
+ }
800
+
801
+ // clear existing headers
802
+ $this->cloudfrontHeaders = array();
803
+
804
+ // Only save CLOUDFRONT headers. In PHP land, that means only _SERVER vars that
805
+ // start with cloudfront-.
806
+ $response = false;
807
+ foreach ($cfHeaders as $key => $value) {
808
+ if (substr(strtolower($key), 0, 16) === 'http_cloudfront_') {
809
+ $this->cloudfrontHeaders[strtoupper($key)] = $value;
810
+ $response = true;
811
+ }
812
+ }
813
+
814
+ return $response;
815
+ }
816
+
817
+ /**
818
+ * Retrieves the cloudfront headers.
819
+ *
820
+ * @return array
821
+ */
822
+ public function getCfHeaders()
823
+ {
824
+ return $this->cloudfrontHeaders;
825
+ }
826
+
827
+ /**
828
+ * @param string $userAgent
829
+ * @return string
830
+ */
831
+ private function prepareUserAgent($userAgent) {
832
+ $userAgent = trim($userAgent);
833
+ $userAgent = substr($userAgent, 0, 500);
834
+ return $userAgent;
835
+ }
836
+
837
+ /**
838
+ * Set the User-Agent to be used.
839
+ *
840
+ * @param string $userAgent The user agent string to set.
841
+ *
842
+ * @return string|null
843
+ */
844
+ public function setUserAgent($userAgent = null)
845
+ {
846
+ // Invalidate cache due to #375
847
+ $this->cache = array();
848
+
849
+ if (false === empty($userAgent)) {
850
+ return $this->userAgent = $this->prepareUserAgent($userAgent);
851
+ } else {
852
+ $this->userAgent = null;
853
+ foreach ($this->getUaHttpHeaders() as $altHeader) {
854
+ if (false === empty($this->httpHeaders[$altHeader])) { // @todo: should use getHttpHeader(), but it would be slow. (Serban)
855
+ $this->userAgent .= $this->httpHeaders[$altHeader] . " ";
856
+ }
857
+ }
858
+
859
+ if (!empty($this->userAgent)) {
860
+ return $this->userAgent = $this->prepareUserAgent($this->userAgent);
861
+ }
862
+ }
863
+
864
+ if (count($this->getCfHeaders()) > 0) {
865
+ return $this->userAgent = 'Amazon CloudFront';
866
+ }
867
+ return $this->userAgent = null;
868
+ }
869
+
870
+ /**
871
+ * Retrieve the User-Agent.
872
+ *
873
+ * @return string|null The user agent if it's set.
874
+ */
875
+ public function getUserAgent()
876
+ {
877
+ return $this->userAgent;
878
+ }
879
+
880
+ /**
881
+ * Set the detection type. Must be one of self::DETECTION_TYPE_MOBILE or
882
+ * self::DETECTION_TYPE_EXTENDED. Otherwise, nothing is set.
883
+ *
884
+ * @deprecated since version 2.6.9
885
+ *
886
+ * @param string $type The type. Must be a self::DETECTION_TYPE_* constant. The default
887
+ * parameter is null which will default to self::DETECTION_TYPE_MOBILE.
888
+ */
889
+ public function setDetectionType($type = null)
890
+ {
891
+ if ($type === null) {
892
+ $type = self::DETECTION_TYPE_MOBILE;
893
+ }
894
+
895
+ if ($type !== self::DETECTION_TYPE_MOBILE && $type !== self::DETECTION_TYPE_EXTENDED) {
896
+ return;
897
+ }
898
+
899
+ $this->detectionType = $type;
900
+ }
901
+
902
+ public function getMatchingRegex()
903
+ {
904
+ return $this->matchingRegex;
905
+ }
906
+
907
+ public function getMatchesArray()
908
+ {
909
+ return $this->matchesArray;
910
+ }
911
+
912
+ /**
913
+ * Retrieve the list of known phone devices.
914
+ *
915
+ * @return array List of phone devices.
916
+ */
917
+ public static function getPhoneDevices()
918
+ {
919
+ return self::$phoneDevices;
920
+ }
921
+
922
+ /**
923
+ * Retrieve the list of known tablet devices.
924
+ *
925
+ * @return array List of tablet devices.
926
+ */
927
+ public static function getTabletDevices()
928
+ {
929
+ return self::$tabletDevices;
930
+ }
931
+
932
+ /**
933
+ * Alias for getBrowsers() method.
934
+ *
935
+ * @return array List of user agents.
936
+ */
937
+ public static function getUserAgents()
938
+ {
939
+ return self::getBrowsers();
940
+ }
941
+
942
+ /**
943
+ * Retrieve the list of known browsers. Specifically, the user agents.
944
+ *
945
+ * @return array List of browsers / user agents.
946
+ */
947
+ public static function getBrowsers()
948
+ {
949
+ return self::$browsers;
950
+ }
951
+
952
+ /**
953
+ * Retrieve the list of known utilities.
954
+ *
955
+ * @return array List of utilities.
956
+ */
957
+ public static function getUtilities()
958
+ {
959
+ return self::$utilities;
960
+ }
961
+
962
+ /**
963
+ * Method gets the mobile detection rules. This method is used for the magic methods $detect->is*().
964
+ *
965
+ * @deprecated since version 2.6.9
966
+ *
967
+ * @return array All the rules (but not extended).
968
+ */
969
+ public static function getMobileDetectionRules()
970
+ {
971
+ static $rules;
972
+
973
+ if (!$rules) {
974
+ $rules = array_merge(
975
+ self::$phoneDevices,
976
+ self::$tabletDevices,
977
+ self::$operatingSystems,
978
+ self::$browsers
979
+ );
980
+ }
981
+
982
+ return $rules;
983
+
984
+ }
985
+
986
+ /**
987
+ * Method gets the mobile detection rules + utilities.
988
+ * The reason this is separate is because utilities rules
989
+ * don't necessary imply mobile. This method is used inside
990
+ * the new $detect->is('stuff') method.
991
+ *
992
+ * @deprecated since version 2.6.9
993
+ *
994
+ * @return array All the rules + extended.
995
+ */
996
+ public function getMobileDetectionRulesExtended()
997
+ {
998
+ static $rules;
999
+
1000
+ if (!$rules) {
1001
+ // Merge all rules together.
1002
+ $rules = array_merge(
1003
+ self::$phoneDevices,
1004
+ self::$tabletDevices,
1005
+ self::$operatingSystems,
1006
+ self::$browsers,
1007
+ self::$utilities
1008
+ );
1009
+ }
1010
+
1011
+ return $rules;
1012
+ }
1013
+
1014
+ /**
1015
+ * Retrieve the current set of rules.
1016
+ *
1017
+ * @deprecated since version 2.6.9
1018
+ *
1019
+ * @return array
1020
+ */
1021
+ public function getRules()
1022
+ {
1023
+ if ($this->detectionType == self::DETECTION_TYPE_EXTENDED) {
1024
+ return self::getMobileDetectionRulesExtended();
1025
+ } else {
1026
+ return self::getMobileDetectionRules();
1027
+ }
1028
+ }
1029
+
1030
+ /**
1031
+ * Retrieve the list of mobile operating systems.
1032
+ *
1033
+ * @return array The list of mobile operating systems.
1034
+ */
1035
+ public static function getOperatingSystems()
1036
+ {
1037
+ return self::$operatingSystems;
1038
+ }
1039
+
1040
+ /**
1041
+ * Check the HTTP headers for signs of mobile.
1042
+ * This is the fastest mobile check possible; it's used
1043
+ * inside isMobile() method.
1044
+ *
1045
+ * @return bool
1046
+ */
1047
+ public function checkHttpHeadersForMobile()
1048
+ {
1049
+
1050
+ foreach ($this->getMobileHeaders() as $mobileHeader => $matchType) {
1051
+ if (isset($this->httpHeaders[$mobileHeader])) {
1052
+ if (is_array($matchType['matches'])) {
1053
+ foreach ($matchType['matches'] as $_match) {
1054
+ if (strpos($this->httpHeaders[$mobileHeader], $_match) !== false) {
1055
+ return true;
1056
+ }
1057
+ }
1058
+
1059
+ return false;
1060
+ } else {
1061
+ return true;
1062
+ }
1063
+ }
1064
+ }
1065
+
1066
+ return false;
1067
+
1068
+ }
1069
+
1070
+ /**
1071
+ * Magic overloading method.
1072
+ *
1073
+ * @method boolean is[...]()
1074
+ * @param string $name
1075
+ * @param array $arguments
1076
+ * @return mixed
1077
+ * @throws BadMethodCallException when the method doesn't exist and doesn't start with 'is'
1078
+ */
1079
+ public function __call($name, $arguments)
1080
+ {
1081
+ // make sure the name starts with 'is', otherwise
1082
+ if (substr($name, 0, 2) !== 'is') {
1083
+ throw new BadMethodCallException("No such method exists: $name");
1084
+ }
1085
+
1086
+ $this->setDetectionType(self::DETECTION_TYPE_MOBILE);
1087
+
1088
+ $key = substr($name, 2);
1089
+
1090
+ return $this->matchUAAgainstKey($key);
1091
+ }
1092
+
1093
+ /**
1094
+ * Find a detection rule that matches the current User-agent.
1095
+ *
1096
+ * @param null $userAgent deprecated
1097
+ * @return boolean
1098
+ */
1099
+ protected function matchDetectionRulesAgainstUA($userAgent = null)
1100
+ {
1101
+ // Begin general search.
1102
+ foreach ($this->getRules() as $_regex) {
1103
+ if (empty($_regex)) {
1104
+ continue;
1105
+ }
1106
+
1107
+ if ($this->match($_regex, $userAgent)) {
1108
+ return true;
1109
+ }
1110
+ }
1111
+
1112
+ return false;
1113
+ }
1114
+
1115
+ /**
1116
+ * Search for a certain key in the rules array.
1117
+ * If the key is found then try to match the corresponding
1118
+ * regex against the User-Agent.
1119
+ *
1120
+ * @param string $key
1121
+ *
1122
+ * @return boolean
1123
+ */
1124
+ protected function matchUAAgainstKey($key)
1125
+ {
1126
+ // Make the keys lowercase so we can match: isIphone(), isiPhone(), isiphone(), etc.
1127
+ $key = strtolower($key);
1128
+ if (false === isset($this->cache[$key])) {
1129
+
1130
+ // change the keys to lower case
1131
+ $_rules = array_change_key_case($this->getRules());
1132
+
1133
+ if (false === empty($_rules[$key])) {
1134
+ $this->cache[$key] = $this->match($_rules[$key]);
1135
+ }
1136
+
1137
+ if (false === isset($this->cache[$key])) {
1138
+ $this->cache[$key] = false;
1139
+ }
1140
+ }
1141
+
1142
+ return $this->cache[$key];
1143
+ }
1144
+
1145
+ /**
1146
+ * Check if the device is mobile.
1147
+ * Returns true if any type of mobile device detected, including special ones
1148
+ * @param null $userAgent deprecated
1149
+ * @param null $httpHeaders deprecated
1150
+ * @return bool
1151
+ */
1152
+ public function isMobile($userAgent = null, $httpHeaders = null)
1153
+ {
1154
+
1155
+ if ($httpHeaders) {
1156
+ $this->setHttpHeaders($httpHeaders);
1157
+ }
1158
+
1159
+ if ($userAgent) {
1160
+ $this->setUserAgent($userAgent);
1161
+ }
1162
+
1163
+ // Check specifically for cloudfront headers if the useragent === 'Amazon CloudFront'
1164
+ if ($this->getUserAgent() === 'Amazon CloudFront') {
1165
+ $cfHeaders = $this->getCfHeaders();
1166
+ if(array_key_exists('HTTP_CLOUDFRONT_IS_MOBILE_VIEWER', $cfHeaders) && $cfHeaders['HTTP_CLOUDFRONT_IS_MOBILE_VIEWER'] === 'true') {
1167
+ return true;
1168
+ }
1169
+ }
1170
+
1171
+ $this->setDetectionType(self::DETECTION_TYPE_MOBILE);
1172
+
1173
+ if ($this->checkHttpHeadersForMobile()) {
1174
+ return true;
1175
+ } else {
1176
+ return $this->matchDetectionRulesAgainstUA();
1177
+ }
1178
+
1179
+ }
1180
+
1181
+ /**
1182
+ * Check if the device is a tablet.
1183
+ * Return true if any type of tablet device is detected.
1184
+ *
1185
+ * @param string $userAgent deprecated
1186
+ * @param array $httpHeaders deprecated
1187
+ * @return bool
1188
+ */
1189
+ public function isTablet($userAgent = null, $httpHeaders = null)
1190
+ {
1191
+ // Check specifically for cloudfront headers if the useragent === 'Amazon CloudFront'
1192
+ if ($this->getUserAgent() === 'Amazon CloudFront') {
1193
+ $cfHeaders = $this->getCfHeaders();
1194
+ if(array_key_exists('HTTP_CLOUDFRONT_IS_TABLET_VIEWER', $cfHeaders) && $cfHeaders['HTTP_CLOUDFRONT_IS_TABLET_VIEWER'] === 'true') {
1195
+ return true;
1196
+ }
1197
+ }
1198
+
1199
+ $this->setDetectionType(self::DETECTION_TYPE_MOBILE);
1200
+
1201
+ foreach (self::$tabletDevices as $_regex) {
1202
+ if ($this->match($_regex, $userAgent)) {
1203
+ return true;
1204
+ }
1205
+ }
1206
+
1207
+ return false;
1208
+ }
1209
+
1210
+ /**
1211
+ * This method checks for a certain property in the
1212
+ * userAgent.
1213
+ * @todo: The httpHeaders part is not yet used.
1214
+ *
1215
+ * @param string $key
1216
+ * @param string $userAgent deprecated
1217
+ * @param string $httpHeaders deprecated
1218
+ * @return bool|int|null
1219
+ */
1220
+ public function is($key, $userAgent = null, $httpHeaders = null)
1221
+ {
1222
+ // Set the UA and HTTP headers only if needed (eg. batch mode).
1223
+ if ($httpHeaders) {
1224
+ $this->setHttpHeaders($httpHeaders);
1225
+ }
1226
+
1227
+ if ($userAgent) {
1228
+ $this->setUserAgent($userAgent);
1229
+ }
1230
+
1231
+ $this->setDetectionType(self::DETECTION_TYPE_EXTENDED);
1232
+
1233
+ return $this->matchUAAgainstKey($key);
1234
+ }
1235
+
1236
+ /**
1237
+ * Some detection rules are relative (not standard),
1238
+ * because of the diversity of devices, vendors and
1239
+ * their conventions in representing the User-Agent or
1240
+ * the HTTP headers.
1241
+ *
1242
+ * This method will be used to check custom regexes against
1243
+ * the User-Agent string.
1244
+ *
1245
+ * @param $regex
1246
+ * @param string $userAgent
1247
+ * @return bool
1248
+ *
1249
+ * @todo: search in the HTTP headers too.
1250
+ */
1251
+ public function match($regex, $userAgent = null)
1252
+ {
1253
+ $match = (bool) preg_match(sprintf('#%s#is', $regex), (false === empty($userAgent) ? $userAgent : $this->userAgent), $matches);
1254
+ // If positive match is found, store the results for debug.
1255
+ if ($match) {
1256
+ $this->matchingRegex = $regex;
1257
+ $this->matchesArray = $matches;
1258
+ }
1259
+
1260
+ return $match;
1261
+ }
1262
+
1263
+ /**
1264
+ * Get the properties array.
1265
+ *
1266
+ * @return array
1267
+ */
1268
+ public static function getProperties()
1269
+ {
1270
+ return self::$properties;
1271
+ }
1272
+
1273
+ /**
1274
+ * Prepare the version number.
1275
+ *
1276
+ * @todo Remove the error supression from str_replace() call.
1277
+ *
1278
+ * @param string $ver The string version, like "2.6.21.2152";
1279
+ *
1280
+ * @return float
1281
+ */
1282
+ public function prepareVersionNo($ver)
1283
+ {
1284
+ $ver = str_replace(array('_', ' ', '/'), '.', $ver);
1285
+ $arrVer = explode('.', $ver, 2);
1286
+
1287
+ if (isset($arrVer[1])) {
1288
+ $arrVer[1] = @str_replace('.', '', $arrVer[1]); // @todo: treat strings versions.
1289
+ }
1290
+
1291
+ return (float) implode('.', $arrVer);
1292
+ }
1293
+
1294
+ /**
1295
+ * Check the version of the given property in the User-Agent.
1296
+ * Will return a float number. (eg. 2_0 will return 2.0, 4.3.1 will return 4.31)
1297
+ *
1298
+ * @param string $propertyName The name of the property. See self::getProperties() array
1299
+ * keys for all possible properties.
1300
+ * @param string $type Either self::VERSION_TYPE_STRING to get a string value or
1301
+ * self::VERSION_TYPE_FLOAT indicating a float value. This parameter
1302
+ * is optional and defaults to self::VERSION_TYPE_STRING. Passing an
1303
+ * invalid parameter will default to the this type as well.
1304
+ *
1305
+ * @return string|float The version of the property we are trying to extract.
1306
+ */
1307
+ public function version($propertyName, $type = self::VERSION_TYPE_STRING)
1308
+ {
1309
+ if (empty($propertyName)) {
1310
+ return false;
1311
+ }
1312
+
1313
+ // set the $type to the default if we don't recognize the type
1314
+ if ($type !== self::VERSION_TYPE_STRING && $type !== self::VERSION_TYPE_FLOAT) {
1315
+ $type = self::VERSION_TYPE_STRING;
1316
+ }
1317
+
1318
+ $properties = self::getProperties();
1319
+
1320
+ // Check if the property exists in the properties array.
1321
+ if (true === isset($properties[$propertyName])) {
1322
+
1323
+ // Prepare the pattern to be matched.
1324
+ // Make sure we always deal with an array (string is converted).
1325
+ $properties[$propertyName] = (array) $properties[$propertyName];
1326
+
1327
+ foreach ($properties[$propertyName] as $propertyMatchString) {
1328
+
1329
+ $propertyPattern = str_replace('[VER]', self::VER, $propertyMatchString);
1330
+
1331
+ // Identify and extract the version.
1332
+ preg_match(sprintf('#%s#is', $propertyPattern), $this->userAgent, $match);
1333
+
1334
+ if (false === empty($match[1])) {
1335
+ $version = ($type == self::VERSION_TYPE_FLOAT ? $this->prepareVersionNo($match[1]) : $match[1]);
1336
+
1337
+ return $version;
1338
+ }
1339
+
1340
+ }
1341
+
1342
+ }
1343
+
1344
+ return false;
1345
+ }
1346
+
1347
+ /**
1348
+ * Retrieve the mobile grading, using self::MOBILE_GRADE_* constants.
1349
+ *
1350
+ * @return string One of the self::MOBILE_GRADE_* constants.
1351
+ */
1352
+ public function mobileGrade()
1353
+ {
1354
+ $isMobile = $this->isMobile();
1355
+
1356
+ if (
1357
+ // Apple iOS 4-7.0 – Tested on the original iPad (4.3 / 5.0), iPad 2 (4.3 / 5.1 / 6.1), iPad 3 (5.1 / 6.0), iPad Mini (6.1), iPad Retina (7.0), iPhone 3GS (4.3), iPhone 4 (4.3 / 5.1), iPhone 4S (5.1 / 6.0), iPhone 5 (6.0), and iPhone 5S (7.0)
1358
+ $this->is('iOS') && $this->version('iPad', self::VERSION_TYPE_FLOAT) >= 4.3 ||
1359
+ $this->is('iOS') && $this->version('iPhone', self::VERSION_TYPE_FLOAT) >= 4.3 ||
1360
+ $this->is('iOS') && $this->version('iPod', self::VERSION_TYPE_FLOAT) >= 4.3 ||
1361
+
1362
+ // Android 2.1-2.3 - Tested on the HTC Incredible (2.2), original Droid (2.2), HTC Aria (2.1), Google Nexus S (2.3). Functional on 1.5 & 1.6 but performance may be sluggish, tested on Google G1 (1.5)
1363
+ // Android 3.1 (Honeycomb) - Tested on the Samsung Galaxy Tab 10.1 and Motorola XOOM
1364
+ // Android 4.0 (ICS) - Tested on a Galaxy Nexus. Note: transition performance can be poor on upgraded devices
1365
+ // Android 4.1 (Jelly Bean) - Tested on a Galaxy Nexus and Galaxy 7
1366
+ ( $this->version('Android', self::VERSION_TYPE_FLOAT)>2.1 && $this->is('Webkit') ) ||
1367
+
1368
+ // Windows Phone 7.5-8 - Tested on the HTC Surround (7.5), HTC Trophy (7.5), LG-E900 (7.5), Nokia 800 (7.8), HTC Mazaa (7.8), Nokia Lumia 520 (8), Nokia Lumia 920 (8), HTC 8x (8)
1369
+ $this->version('Windows Phone OS', self::VERSION_TYPE_FLOAT) >= 7.5 ||
1370
+
1371
+ // Tested on the Torch 9800 (6) and Style 9670 (6), BlackBerry® Torch 9810 (7), BlackBerry Z10 (10)
1372
+ $this->is('BlackBerry') && $this->version('BlackBerry', self::VERSION_TYPE_FLOAT) >= 6.0 ||
1373
+ // Blackberry Playbook (1.0-2.0) - Tested on PlayBook
1374
+ $this->match('Playbook.*Tablet') ||
1375
+
1376
+ // Palm WebOS (1.4-3.0) - Tested on the Palm Pixi (1.4), Pre (1.4), Pre 2 (2.0), HP TouchPad (3.0)
1377
+ ( $this->version('webOS', self::VERSION_TYPE_FLOAT) >= 1.4 && $this->match('Palm|Pre|Pixi') ) ||
1378
+ // Palm WebOS 3.0 - Tested on HP TouchPad
1379
+ $this->match('hp.*TouchPad') ||
1380
+
1381
+ // Firefox Mobile 18 - Tested on Android 2.3 and 4.1 devices
1382
+ ( $this->is('Firefox') && $this->version('Firefox', self::VERSION_TYPE_FLOAT) >= 18 ) ||
1383
+
1384
+ // Chrome for Android - Tested on Android 4.0, 4.1 device
1385
+ ( $this->is('Chrome') && $this->is('AndroidOS') && $this->version('Android', self::VERSION_TYPE_FLOAT) >= 4.0 ) ||
1386
+
1387
+ // Skyfire 4.1 - Tested on Android 2.3 device
1388
+ ( $this->is('Skyfire') && $this->version('Skyfire', self::VERSION_TYPE_FLOAT) >= 4.1 && $this->is('AndroidOS') && $this->version('Android', self::VERSION_TYPE_FLOAT) >= 2.3 ) ||
1389
+
1390
+ // Opera Mobile 11.5-12: Tested on Android 2.3
1391
+ ( $this->is('Opera') && $this->version('Opera Mobi', self::VERSION_TYPE_FLOAT) >= 11.5 && $this->is('AndroidOS') ) ||
1392
+
1393
+ // Meego 1.2 - Tested on Nokia 950 and N9
1394
+ $this->is('MeeGoOS') ||
1395
+
1396
+ // Tizen (pre-release) - Tested on early hardware
1397
+ $this->is('Tizen') ||
1398
+
1399
+ // Samsung Bada 2.0 - Tested on a Samsung Wave 3, Dolphin browser
1400
+ // @todo: more tests here!
1401
+ $this->is('Dolfin') && $this->version('Bada', self::VERSION_TYPE_FLOAT) >= 2.0 ||
1402
+
1403
+ // UC Browser - Tested on Android 2.3 device
1404
+ ( ($this->is('UC Browser') || $this->is('Dolfin')) && $this->version('Android', self::VERSION_TYPE_FLOAT) >= 2.3 ) ||
1405
+
1406
+ // Kindle 3 and Fire - Tested on the built-in WebKit browser for each
1407
+ ( $this->match('Kindle Fire') ||
1408
+ $this->is('Kindle') && $this->version('Kindle', self::VERSION_TYPE_FLOAT) >= 3.0 ) ||
1409
+
1410
+ // Nook Color 1.4.1 - Tested on original Nook Color, not Nook Tablet
1411
+ $this->is('AndroidOS') && $this->is('NookTablet') ||
1412
+
1413
+ // Chrome Desktop 16-24 - Tested on OS X 10.7 and Windows 7
1414
+ $this->version('Chrome', self::VERSION_TYPE_FLOAT) >= 16 && !$isMobile ||
1415
+
1416
+ // Safari Desktop 5-6 - Tested on OS X 10.7 and Windows 7
1417
+ $this->version('Safari', self::VERSION_TYPE_FLOAT) >= 5.0 && !$isMobile ||
1418
+
1419
+ // Firefox Desktop 10-18 - Tested on OS X 10.7 and Windows 7
1420
+ $this->version('Firefox', self::VERSION_TYPE_FLOAT) >= 10.0 && !$isMobile ||
1421
+
1422
+ // Internet Explorer 7-9 - Tested on Windows XP, Vista and 7
1423
+ $this->version('IE', self::VERSION_TYPE_FLOAT) >= 7.0 && !$isMobile ||
1424
+
1425
+ // Opera Desktop 10-12 - Tested on OS X 10.7 and Windows 7
1426
+ $this->version('Opera', self::VERSION_TYPE_FLOAT) >= 10 && !$isMobile
1427
+ ){
1428
+ return self::MOBILE_GRADE_A;
1429
+ }
1430
+
1431
+ if (
1432
+ $this->is('iOS') && $this->version('iPad', self::VERSION_TYPE_FLOAT)<4.3 ||
1433
+ $this->is('iOS') && $this->version('iPhone', self::VERSION_TYPE_FLOAT)<4.3 ||
1434
+ $this->is('iOS') && $this->version('iPod', self::VERSION_TYPE_FLOAT)<4.3 ||
1435
+
1436
+ // Blackberry 5.0: Tested on the Storm 2 9550, Bold 9770
1437
+ $this->is('Blackberry') && $this->version('BlackBerry', self::VERSION_TYPE_FLOAT) >= 5 && $this->version('BlackBerry', self::VERSION_TYPE_FLOAT)<6 ||
1438
+
1439
+ //Opera Mini (5.0-6.5) - Tested on iOS 3.2/4.3 and Android 2.3
1440
+ ($this->version('Opera Mini', self::VERSION_TYPE_FLOAT) >= 5.0 && $this->version('Opera Mini', self::VERSION_TYPE_FLOAT) <= 7.0 &&
1441
+ ($this->version('Android', self::VERSION_TYPE_FLOAT) >= 2.3 || $this->is('iOS')) ) ||
1442
+
1443
+ // Nokia Symbian^3 - Tested on Nokia N8 (Symbian^3), C7 (Symbian^3), also works on N97 (Symbian^1)
1444
+ $this->match('NokiaN8|NokiaC7|N97.*Series60|Symbian/3') ||
1445
+
1446
+ // @todo: report this (tested on Nokia N71)
1447
+ $this->version('Opera Mobi', self::VERSION_TYPE_FLOAT) >= 11 && $this->is('SymbianOS')
1448
+ ){
1449
+ return self::MOBILE_GRADE_B;
1450
+ }
1451
+
1452
+ if (
1453
+ // Blackberry 4.x - Tested on the Curve 8330
1454
+ $this->version('BlackBerry', self::VERSION_TYPE_FLOAT) <= 5.0 ||
1455
+ // Windows Mobile - Tested on the HTC Leo (WinMo 5.2)
1456
+ $this->match('MSIEMobile|Windows CE.*Mobile') || $this->version('Windows Mobile', self::VERSION_TYPE_FLOAT) <= 5.2 ||
1457
+
1458
+ // Tested on original iPhone (3.1), iPhone 3 (3.2)
1459
+ $this->is('iOS') && $this->version('iPad', self::VERSION_TYPE_FLOAT) <= 3.2 ||
1460
+ $this->is('iOS') && $this->version('iPhone', self::VERSION_TYPE_FLOAT) <= 3.2 ||
1461
+ $this->is('iOS') && $this->version('iPod', self::VERSION_TYPE_FLOAT) <= 3.2 ||
1462
+
1463
+ // Internet Explorer 7 and older - Tested on Windows XP
1464
+ $this->version('IE', self::VERSION_TYPE_FLOAT) <= 7.0 && !$isMobile
1465
+ ){
1466
+ return self::MOBILE_GRADE_C;
1467
+ }
1468
+
1469
+ // All older smartphone platforms and featurephones - Any device that doesn't support media queries
1470
+ // will receive the basic, C grade experience.
1471
+ return self::MOBILE_GRADE_C;
1472
+ }
1473
+ }
vendor/mobiledetect/mobiledetectlib/README.md ADDED
@@ -0,0 +1,344 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ ![Mobile Detect](http://demo.mobiledetect.net/logo-github.png)
2
+
3
+ > Motto: "Every business should have a detection script to detect mobile readers."
4
+
5
+ [![Build Status](https://travis-ci.org/serbanghita/Mobile-Detect.svg?branch=devel)](https://travis-ci.org/serbanghita/Mobile-Detect)
6
+ [![Latest Stable Version](https://poser.pugx.org/mobiledetect/mobiledetectlib/v/stable.svg)](https://packagist.org/packages/mobiledetect/mobiledetectlib)
7
+ [![Total Downloads](https://poser.pugx.org/mobiledetect/mobiledetectlib/downloads.svg)](https://packagist.org/packages/mobiledetect/mobiledetectlib)
8
+ [![Daily Downloads](https://poser.pugx.org/mobiledetect/mobiledetectlib/d/daily.png)](https://packagist.org/packages/mobiledetect/mobiledetectlib)
9
+ [![License](https://poser.pugx.org/mobiledetect/mobiledetectlib/license.svg)](https://packagist.org/packages/mobiledetect/mobiledetectlib)
10
+ [![Chat on Slack](https://img.shields.io/badge/Slack%20%23general-join-orange.svg)](https://join.slack.com/t/mobiledetect/shared_invite/enQtMjg1NDY0OTg5NzgzLTcwMzEzMWJjZjRlOWFkY2ZiNzE1ZmRmNzEwM2VhOGY5OGVkYWMxNjdkZDU5YjQ5MmM5MGUxYjhlZDQwOGVjZjE)
11
+
12
+ #### About
13
+
14
+ Mobile Detect is a lightweight PHP class for detecting mobile devices (including tablets).
15
+ It uses the User-Agent string combined with specific HTTP headers to detect the mobile environment.
16
+
17
+ *Why*
18
+
19
+ Your website's _content strategy_ is important! You need a complete toolkit to deliver an experience that is _optimized_,
20
+ _fast_ and _relevant_ to your users. Mobile Detect class is a
21
+ [server-side detection](http://www.w3.org/TR/mwabp/#bp-devcap-detection) tool that can help you with your RWD strategy,
22
+ it is not a replacement for CSS3 media queries or other forms of client-side feature detection.
23
+
24
+ *How*
25
+
26
+ We're committed to make Mobile_Detect the best open-source mobile detection resource and this is why before
27
+ each release we're running [unit tests](./tests) and research and update the detection rules on **monthly** basis.
28
+
29
+ *Who*
30
+
31
+ See [the history](./docs/HISTORY.md) of the project.
32
+
33
+ #### Announcements
34
+
35
+ * **JetBrains** is sponsoring the project by providing licenses for [PHPStorm](https://www.jetbrains.com/phpstorm/) and
36
+ [DataGrip](https://www.jetbrains.com/datagrip/).
37
+ * **Mobile_Detect `2.x.x`** is only integrating new regexes, User-Agents and tests. We are focusing on **new tablets only**.
38
+ The rest of the PRs about TVs, bots or optimizations will be closed and analyzed after `3.0.0-beta` is released.
39
+ * **Mobile_Detect `3.x.x`** is experimental and WIP.
40
+
41
+
42
+ #### Install
43
+
44
+ **Download and include manually**
45
+ > Use this to quickly test the demo.
46
+
47
+ * [Download latest release](../../tags)
48
+ * [Mobile_Detect.php](./Mobile_Detect.php)
49
+
50
+ ```php
51
+ require_once "libs/Mobile_Detect.php";
52
+ ```
53
+
54
+ **Install as a [composer package](https://packagist.org/packages/mobiledetect/mobiledetectlib)**
55
+ > Use this method to get continuous updates.
56
+
57
+ ```
58
+ composer require mobiledetect/mobiledetectlib
59
+ ```
60
+ or include the dependency in the `composer.json` file:
61
+ ```json
62
+ {
63
+ "require": {
64
+ "mobiledetect/mobiledetectlib": "^2.8"
65
+ }
66
+ }
67
+ ```
68
+
69
+ #### Demo
70
+
71
+ * [:iphone: Live demo!](http://is.gd/mobiletest)
72
+ * [Code examples](../../wiki/Code-examples)
73
+
74
+ #### Contribute
75
+
76
+ *Submit a PR*
77
+ > Submit a pull request but before make sure you read [how to contribute](../../docs/CONTRIBUTING.md) guide.
78
+
79
+ *Donate*
80
+
81
+ |Paypal|
82
+ |------|
83
+ |[Donate :+1:](https://www.paypal.com/cgi-bin/webscr?cmd=_donations&business=mobiledetectlib%40gmail%2ecom&lc=US&item_name=Mobile%20Detect&currency_code=USD&bn=PP%2dDonationsBF%3abtn_donate_SM%2egif%3aNonHosted)|
84
+
85
+
86
+ I'm currently paying for hosting and spend a lot of my family time to maintain the project and planning the future releases.
87
+ I would highly appreciate any money donations that will keep the research going.
88
+
89
+ Special thanks to the community :+1: for donations, JetBrains team for the continuous support and [Dragos Gavrila](https://twitter.com/grafician) who contributed with the logo.
90
+
91
+ #### Modules, plugins, ports
92
+ > [Submit new module, plugin, port](../../issues/new?title=New%203rd%20party%20module&body=Name,%20Link%20and%20Description%20of%20the%20module.)
93
+
94
+ :point_right: Keep `Mobile_Detect.php` class in a separate `module` and do NOT include it in your script core because of the high frequency of updates.
95
+ :point_right: When including the class into you `web application` or `module` always use `include_once '../path/to/Mobile_Detect.php` to prevent conflicts.
96
+
97
+ **JavaScript**
98
+
99
+ * mobile-detect.js - A [JavaScript port](https://github.com/hgoebl/mobile-detect.js) of Mobile-Detect class. Made by [Heinrich Goebl](https://github.com/hgoebl).
100
+
101
+ **Varnish Cache**
102
+
103
+ * [Varnish Mobile Detect](https://github.com/willemk/varnish-mobiletranslate) - Drop-in varnish solution to mobile user
104
+ detection based on the Mobile-Detect library. Made by [willemk](https://github.com/willemk).
105
+ * [mobiledetect2vcl](https://github.com/carlosabalde/mobiledetect2vcl) - Python script to transform the Mobile
106
+ Detect JSON database into an UA-based mobile detection VCL subroutine easily integrable in any Varnish Cache
107
+ configuration. Made by [Carlos Abalde](https://github.com/carlosabalde).
108
+
109
+ **LUA**
110
+
111
+ * [mobile-detect.lua](https://github.com/yourpalmark/mobile-detect.lua) is a port of Mobile-Detect to Lua for
112
+ NGINX HTTP servers. Follows closely to mobile-detect.js. Supports all methods that server-side
113
+ mobile-detect.js supports. Fully unit-tested and synced with Travis CI (Build Passing badge included).
114
+ Made by [Mark Walters](https://github.com/yourpalmark).
115
+
116
+ **PHP**
117
+
118
+ **WordPress**
119
+
120
+ * [Mobile Detect for WordPress](https://wordpress.org/plugins/tinywp-mobile-detect/) - WordPress has a built-in function
121
+ (`wp_is_mobile()`) to detect mobile devices. There is (at least) one catch, though. It considers iPad (iPad pro,
122
+ and any tablet) as a mobile. So, this 3rd party module changes the way `wp_is_mobile()` works with the help of
123
+ Mobile Detect PHP library!
124
+ Made by [Pothi Kalimuthu](https://github.com/pothi)
125
+
126
+ * [WordPress Mobile Detect](https://wordpress.org/plugins/wp-mobile-detect/) - Gives you the ability to wrap that
127
+ infographic in a `[notdevice][/notdevice]` shortcode so at the server level WordPress will
128
+ decide to show that content only if the user is NOT on a phone or tablet.
129
+ Made by [Jesse Friedman](https://profiles.wordpress.org/professor44/).
130
+
131
+ * [mobble](https://wordpress.org/plugins/mobble/) - provides mobile related conditional functions for your site.
132
+ e.g. `is_iphone()`, `is_mobile()` and `is_tablet()`. Made by Scott Evans.
133
+
134
+ * [WordPress Responsage](https://github.com/iamspacehead/responsage) - A small WordPress theme plugin that allows
135
+ you to make your images responsive. Made by [Adrian Ciaschetti](https://github.com/iamspacehead).
136
+
137
+ * [WP247 Body Classes](https://wordpress.org/plugins/wp247-body-classes/) - Add unique classes to the `body` tag for
138
+ easy styling based on various attributes (archive, user, post, mobile) and various WordPress "is" functions.
139
+ Mobile attributes include type of device, Operating System, Browser, etc. Examples: .is-mobile, .is-not-mobile,
140
+ .is-tablet, .is-ios, .is-not-ios, .is-androidos, .is-chromebrowser.
141
+ Made by [wescleveland56](https://github.com/wescleveland56).
142
+
143
+ * [Adaptive Content](https://wordpress.org/plugins/addfunc-adaptive-content/) for WordPress provides the most
144
+ intuitive set of shortcodes for including/excluding content on mobile devices, tablets desktops and other
145
+ more specific device parameters. This lightweight plugin lets content writers and theme authors choose when
146
+ WordPress should or shouldn’t show any give content item using shortcodes and quicktags or theme elements using functions.
147
+ Made by [AddFunc](https://profiles.wordpress.org/addfunc).
148
+
149
+ * [AddFunc Mobile Detect](https://wordpress.org/plugins/addfunc-mobile-detect/) for WordPress redirects
150
+ mobile traffic to your mobile website and, basically, gives you loads of control over your mobile redirects.
151
+ Made by [AddFunc](https://profiles.wordpress.org/addfunc).
152
+
153
+ **Drupal**
154
+
155
+ * [Drupal Mobile Switch](https://www.drupal.org/project/mobile_switch) - The Mobile Switch Drupal module provides a
156
+ automatic theme switch functionality for mobile devices, detected by Browscap or Mobile Detect.
157
+ Made by [Siegfried Neumann](https://www.drupal.org/user/45267).
158
+
159
+ * [Drupal Context Mobile Detect](https://www.drupal.org/project/context_mobile_detect) - This is a Drupal context module
160
+ which integrates Context and PHP Mobile Detect library.
161
+ Created by [Artem Shymko](https://www.drupal.org/user/432492).
162
+
163
+ * [Drupal Mobile Detect](https://www.drupal.org/project/mobile_detect) - Lightweight mobile detect module for Drupal
164
+ created by [Matthew Donadio](https://www.drupal.org/user/325244).
165
+
166
+ **Joomla**
167
+
168
+ * [yagendoo Joomla! Mobile Detection Plugin](http://www.yagendoo.com/en/blog/free-mobile-detection-plugin-for-joomla.html) - Lightweight PHP plugin for Joomla!
169
+ that detects a mobile browser using the Mobile Detect class.
170
+ Made by yagendoo media.
171
+
172
+ * [User Agent Detector plugin](https://github.com/renekreijveld/UserAgentDetector) - This system plugin detects the user
173
+ agent of your website visitor and sets a session variable accordingly. Based on the user agent, the plugin detects if the
174
+ site is running on a desktop pc, tablet or smartphone. It can also detect if the visitor is a spider bot (search engine).
175
+ Session variable that is set: `ualayout`. Possible values: desktop, tablet, mobile, bot.
176
+ Made by @ReneKreijveld.
177
+
178
+ **Magento**
179
+
180
+ * [Magento helper](http://www.magentocommerce.com/magento-connect/catalog/product/view/id/16835/) from Optimise Web enables
181
+ the use of all functions provided by Mobile Detect. Made by [Kathir Vel](http://www.kathirvel.com).
182
+
183
+ * [Magento 2 Mobile Detect Theme Change](https://github.com/EaDesgin/magento2-mobiledetect) is an extension for Magento 2
184
+ that will change the theme or redirect to a different URL. Also containing a helper to check for the device type.
185
+
186
+ **PrestaShop**
187
+
188
+ * [PrestaShop](https://www.prestashop.com) is a free, secure and open source shopping cart platform. Mobile_Detect
189
+ is included in the default package since 1.5.x.
190
+
191
+ **Laravel**
192
+
193
+ * [Agent](https://github.com/jenssegers/agent) is a user agent class for Laravel based on Mobile Detect with some
194
+ additional functionality.
195
+ Made by [Jens Segers](https://github.com/jenssegers).
196
+
197
+ * [Laravel Mobile Detect](https://github.com/riverskies/laravel-mobile-detect) is a package that enables you to use device detection right in your Laravel Blade templates. (Utilises the well-known, constantly updated PHP mobile detection library.)
198
+ Made by [Barnabas Kecskes](https://github.com/barnabaskecskes).
199
+
200
+ * [BrowserDetect](https://github.com/hisorange/browser-detect) is a browser and mobile detection package, collects
201
+ and wrap together the best user-agent identifiers for Laravel.
202
+ Created by [Varga Zsolt](https://github.com/hisorange).
203
+
204
+ **Zend Framework**
205
+
206
+ * [ZF2 Mobile-Detect](https://github.com/neilime/zf2-mobile-detect.git) is a Zend Framework 2 module that provides
207
+ Mobile-Detect features (Mobile_Detect class as a service, helper for views and plugin controllers).
208
+ Made by [neilime](https://github.com/neilime).
209
+
210
+ * [ZF2 MobileDetectModule](https://github.com/nikolaposa/MobileDetectModule) facilitates integration of a PHP MobileDetect
211
+ class with some ZF2-based application. Has similar idea like the existing ZF2 Mobile-Detect module,
212
+ but differs in initialization and provision routine of the actual Mobile_Detect class.
213
+ Appropriate view helper and controller plugin also have different conceptions.
214
+ Made by [Nikola Posa](https://github.com/nikolaposa).
215
+
216
+ **Symfony**
217
+
218
+ * [Symfony2 Mobile Detect Bundle](https://github.com/suncat2000/MobileDetectBundle) is a bundle for detecting mobile devices,
219
+ manage mobile view and redirect to the mobile and tablet version.
220
+ Made by [Nikolay Ivlev](https://github.com/suncat2000).
221
+
222
+ * [Silex Mobile Detect Service Provider](https://github.com/jbinfo/MobileDetectServiceProvider) is a service provider to
223
+ interact with Mobile detect class methods.
224
+ Made by [Lhassan Baazzi](https://github.com/jbinfo).
225
+
226
+ **Slim Framework**
227
+
228
+ * [Slim_Mobile_Detect](https://github.com/zguillez/slim_mobile_detect) implements Mobile_Detect lib for different
229
+ responses write on Slim Framework App.
230
+
231
+ **ExpressionEngine**
232
+
233
+ * [EE2 Detect Mobile](https://github.com/garethtdavies/detect-mobile) is a lightweight PHP plugin for EE2 that detects
234
+ a mobile browser using the Mobile Detect class. Made by [Gareth Davies](https://github.com/garethtdavies).
235
+
236
+ **Yii Framework**
237
+
238
+ * [Yii Extension](https://github.com/iamsalnikov/MobileDetect) - Mobile detect plugin for Yii framework.
239
+ Made by [Alexey Salnikov](https://github.com/iamsalnikov).
240
+
241
+ * [Yii Extension](https://github.com/candasm/yii1-mobile-detect-component) - Mobile detect component for Yii framework
242
+ 1.x version which supports composer package manager. Made by [Candas Minareci](https://github.com/candasm).
243
+
244
+ * [Yii2 Device Detect](https://github.com/alexandernst/yii2-device-detect/) - Yii2 extension for Mobile-Detect library.
245
+ Made by [Alexander Nestorov](https://github.com/alexandernst).
246
+
247
+ **CakePHP**
248
+
249
+ * [CakePHP MobileDetect](https://github.com/chronon/CakePHP-MobileDetectComponent-Plugin) is a plugin component for
250
+ CakePHP 2.x. Made by [Gregory Gaskill](https://github.com/chronon).
251
+
252
+ **FuelPHP**
253
+
254
+ * [Special Agent](https://github.com/rob-bar/special_agent) is a FuelPHP package which uses php-mobile-detect to
255
+ determine whether a device is mobile or not. It overrides the Fuelphp Agent class its methods.
256
+ Made by [Robbie Bardjin](https://github.com/rob-bar).
257
+
258
+
259
+ **TYPO3**
260
+
261
+ * [px_mobiledetect](https://typo3.org/extensions/repository/view/px_mobiledetect) is an extension that helps to detect
262
+ visitor's mobile device class (if that’s tablet or mobile device like smartphone). Made by Alexander Tretyak.
263
+
264
+ **Other**
265
+
266
+ * [PageCache](https://github.com/mmamedov/page-cache) is a lightweight PHP library for full page cache,
267
+ with built-in Mobile-Detect support. Made by [Muhammed Mamedov](https://github.com/mmamedov).
268
+
269
+ * [Statamic CMS Mobile Detect](https://github.com/haikulab/statamic-mobile-detect) is a plugin.
270
+ Made by [Sergei Filippov](https://github.com/haikulab/statamic-mobile-detect) of Haiku Lab.
271
+
272
+ * [Kohana Mobile Detect](https://github.com/madeinnordeste/kohana-mobile-detect) is an example of implementation of
273
+ Mobile_Detect class with Kohana framework.
274
+ Written by [Luiz Alberto S. Ribeiro](https://github.com/madeinnordeste).
275
+
276
+ * [MemHT](https://www.memht.com) is a Free PHP CMS and Blog that permit the creation and the management online
277
+ of websites with few and easy steps. Has the class included in the core.
278
+
279
+ * [concrete5](https://www.concrete5.org) is a CMS that is free and open source. The library is included in the core.
280
+
281
+ * [engine7](https://github.com/QOXCorp/exengine) is PHP Open Source Framework. The Mobile_Detect class is included in
282
+ the engine.
283
+
284
+ * [Zikula](http://zikula.org) is a free and open-source Content Management Framework, which allows you to run
285
+ impressive websites and build powerful online applications. The core uses Mobile-Detect to switch to a special
286
+ Mobile theme, using jQueryMobile.
287
+
288
+ * [UserAgentInfo](https://github.com/quentin389/UserAgentInfo) is a PHP class for parsing user agent strings
289
+ (HTTP_USER_AGENT). Includes mobile checks, bot checks, browser types/versions and more.
290
+ Based on browscap, Mobile_Detect and ua-parser. Created for high traffic websites and fast batch processing.
291
+ Made by [quentin389](https://github.com/quentin389).
292
+
293
+ * [LJ Mobile Detect](https://github.com/lewisjenkins/craft-lj-mobiledetect) is a simple implementation of Mobile Detect
294
+ for Craft CMS. Made by [Lewis Jenkins](https://github.com/lewisjenkins).
295
+
296
+ * [Detect Craft](https://github.com/mmikkel/Detect-Craft) is a Craft CMS wrapper for the Mobile_Detect library. Made by [Mikkel Rummelhoff](https://github.com/mmikkel).
297
+
298
+ * [Grav Plugin Mobile Detect](https://github.com/dimitrilongo/grav-plugin-mobile-detect/) is a simple implementation
299
+ of Mobile Detect for Grav CMS. Made by [Dimitri Longo](https://github.com/dimitrilongo).
300
+
301
+ * [Mobile_Detect module for UliCMS](https://github.com/derUli/ulicms-Mobile_Detect).
302
+ Made by [derUli](https://github.com/derUli).
303
+
304
+ **Perl**
305
+
306
+ * [MobileDetect.pm](https://www.buzzerstar.com/development/) is a Perl module for Mobile Detect.
307
+ Made by [Sebastian Enger](https://devop.tools/).
308
+
309
+ **Python**
310
+
311
+ * [pymobiledetect](https://pypi.python.org/pypi/pymobiledetect) - Mobile detect python package.
312
+ Made by Bas van Oostveen.
313
+
314
+ **Ruby**
315
+
316
+ * [mobile_detect.rb](https://github.com/ktaragorn/mobile_detect) is a Ruby gem using the JSON data exposed by the
317
+ php project and implementing a basic subset of the API (as much as can be done by the exposed data).
318
+ Made by [Karthik T](https://github.com/ktaragorn).
319
+
320
+ **Go**
321
+
322
+ * [GoMobileDetect](https://github.com/Shaked/gomobiledetect) is a Go port of Mobile Detect class.
323
+ Made by [https://github.com/Shaked](Shaked).
324
+
325
+
326
+ **LUA**
327
+
328
+ * [ua-lua](https://github.com/robinef/ua-lua) is a small lib written in LUA providing device type detection.
329
+ ua-lua is detecting mobile or tablet devices based on user-agent inside nginx daemon.
330
+ Made by [Frédéric Robinet](https://github.com/robinef).
331
+
332
+ **.Net**
333
+
334
+ * [mobile-detect](https://github.com/validide/mobile-detect) is a .Net partial port written in C#.
335
+ Made by [Valentin Dide](https://github.com/validide).
336
+
337
+ **ColdFusion**
338
+
339
+ * [MobileDetect](https://github.com/GiancarloGomez/ColdFusion-MobileDetect) is a CFC port of the
340
+ Mobile_Detect PHP Library. Made by [Giancarlo Gomez](https://github.com/GiancarloGomez).
341
+
342
+ **Experiments** :bulb:
343
+
344
+ * [Mobile Detect Fast](https://bitbucket.org/lanaguani/mobile-detect-fast/) (See: [#474](https://github.com/serbanghita/Mobile-Detect/issues/474)) is a class to increase the performance of Mobile Detect lib. Made by [LanaGuani](https://github.com/lanaguanifw).
vendor/mobiledetect/mobiledetectlib/composer.json ADDED
@@ -0,0 +1,31 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "name": "mobiledetect/mobiledetectlib",
3
+ "type": "library",
4
+ "description": "Mobile_Detect is a lightweight PHP class for detecting mobile devices. It uses the User-Agent string combined with specific HTTP headers to detect the mobile environment.",
5
+ "keywords": ["mobile", "mobile detect", "mobile detector", "php mobile detect", "detect mobile devices"],
6
+ "homepage": "https://github.com/serbanghita/Mobile-Detect",
7
+ "license": "MIT",
8
+ "authors": [
9
+ {
10
+ "name": "Serban Ghita",
11
+ "email": "serbanghita@gmail.com",
12
+ "homepage": "http://mobiledetect.net",
13
+ "role": "Developer"
14
+ }
15
+ ],
16
+ "require": {
17
+ "php": ">=5.0.0"
18
+ },
19
+ "require-dev": {
20
+ "phpunit/phpunit": "~4.8.35||~5.7"
21
+ },
22
+ "autoload": {
23
+ "classmap": ["Mobile_Detect.php"],
24
+ "psr-0": {
25
+ "Detection": "namespaced/"
26
+ }
27
+ },
28
+ "archive": {
29
+ "exclude": ["docs", "examples", "export"]
30
+ }
31
+ }
vendor/mobiledetect/mobiledetectlib/composer.lock ADDED
@@ -0,0 +1,983 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "_readme": [
3
+ "This file locks the dependencies of your project to a known state",
4
+ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#composer-lock-the-lock-file",
5
+ "This file is @generated automatically"
6
+ ],
7
+ "content-hash": "4a5fd4cd7cc7247a6df7411b031d4845",
8
+ "packages": [],
9
+ "packages-dev": [
10
+ {
11
+ "name": "doctrine/instantiator",
12
+ "version": "1.0.5",
13
+ "source": {
14
+ "type": "git",
15
+ "url": "https://github.com/doctrine/instantiator.git",
16
+ "reference": "8e884e78f9f0eb1329e445619e04456e64d8051d"
17
+ },
18
+ "dist": {
19
+ "type": "zip",
20
+ "url": "https://api.github.com/repos/doctrine/instantiator/zipball/8e884e78f9f0eb1329e445619e04456e64d8051d",
21
+ "reference": "8e884e78f9f0eb1329e445619e04456e64d8051d",
22
+ "shasum": ""
23
+ },
24
+ "require": {
25
+ "php": ">=5.3,<8.0-DEV"
26
+ },
27
+ "require-dev": {
28
+ "athletic/athletic": "~0.1.8",
29
+ "ext-pdo": "*",
30
+ "ext-phar": "*",
31
+ "phpunit/phpunit": "~4.0",
32
+ "squizlabs/php_codesniffer": "~2.0"
33
+ },
34
+ "type": "library",
35
+ "extra": {
36
+ "branch-alias": {
37
+ "dev-master": "1.0.x-dev"
38
+ }
39
+ },
40
+ "autoload": {
41
+ "psr-4": {
42
+ "Doctrine\\Instantiator\\": "src/Doctrine/Instantiator/"
43
+ }
44
+ },
45
+ "notification-url": "https://packagist.org/downloads/",
46
+ "license": [
47
+ "MIT"
48
+ ],
49
+ "authors": [
50
+ {
51
+ "name": "Marco Pivetta",
52
+ "email": "ocramius@gmail.com",
53
+ "homepage": "http://ocramius.github.com/"
54
+ }
55
+ ],
56
+ "description": "A small, lightweight utility to instantiate objects in PHP without invoking their constructors",
57
+ "homepage": "https://github.com/doctrine/instantiator",
58
+ "keywords": [
59
+ "constructor",
60
+ "instantiate"
61
+ ],
62
+ "time": "2015-06-14T21:17:01+00:00"
63
+ },
64
+ {
65
+ "name": "phpdocumentor/reflection-docblock",
66
+ "version": "2.0.5",
67
+ "source": {
68
+ "type": "git",
69
+ "url": "https://github.com/phpDocumentor/ReflectionDocBlock.git",
70
+ "reference": "e6a969a640b00d8daa3c66518b0405fb41ae0c4b"
71
+ },
72
+ "dist": {
73
+ "type": "zip",
74
+ "url": "https://api.github.com/repos/phpDocumentor/ReflectionDocBlock/zipball/e6a969a640b00d8daa3c66518b0405fb41ae0c4b",
75
+ "reference": "e6a969a640b00d8daa3c66518b0405fb41ae0c4b",
76
+ "shasum": ""
77
+ },
78
+ "require": {
79
+ "php": ">=5.3.3"
80
+ },
81
+ "require-dev": {
82
+ "phpunit/phpunit": "~4.0"
83
+ },
84
+ "suggest": {
85
+ "dflydev/markdown": "~1.0",
86
+ "erusev/parsedown": "~1.0"
87
+ },
88
+ "type": "library",
89
+ "extra": {
90
+ "branch-alias": {
91
+ "dev-master": "2.0.x-dev"
92
+ }
93
+ },
94
+ "autoload": {
95
+ "psr-0": {
96
+ "phpDocumentor": [
97
+ "src/"
98
+ ]
99
+ }
100
+ },
101
+ "notification-url": "https://packagist.org/downloads/",
102
+ "license": [
103
+ "MIT"
104
+ ],
105
+ "authors": [
106
+ {
107
+ "name": "Mike van Riel",
108
+ "email": "mike.vanriel@naenius.com"
109
+ }
110
+ ],
111
+ "time": "2016-01-25T08:17:30+00:00"
112
+ },
113
+ {
114
+ "name": "phpspec/prophecy",
115
+ "version": "1.7.3",
116
+ "source": {
117
+ "type": "git",
118
+ "url": "https://github.com/phpspec/prophecy.git",
119
+ "reference": "e4ed002c67da8eceb0eb8ddb8b3847bb53c5c2bf"
120
+ },
121
+ "dist": {
122
+ "type": "zip",
123
+ "url": "https://api.github.com/repos/phpspec/prophecy/zipball/e4ed002c67da8eceb0eb8ddb8b3847bb53c5c2bf",
124
+ "reference": "e4ed002c67da8eceb0eb8ddb8b3847bb53c5c2bf",
125
+ "shasum": ""
126
+ },
127
+ "require": {
128
+ "doctrine/instantiator": "^1.0.2",
129
+ "php": "^5.3|^7.0",
130
+ "phpdocumentor/reflection-docblock": "^2.0|^3.0.2|^4.0",
131
+ "sebastian/comparator": "^1.1|^2.0",
132
+ "sebastian/recursion-context": "^1.0|^2.0|^3.0"
133
+ },
134
+ "require-dev": {
135
+ "phpspec/phpspec": "^2.5|^3.2",
136
+ "phpunit/phpunit": "^4.8.35 || ^5.7"
137
+ },
138
+ "type": "library",
139
+ "extra": {
140
+ "branch-alias": {
141
+ "dev-master": "1.7.x-dev"
142
+ }
143
+ },
144
+ "autoload": {
145
+ "psr-0": {
146
+ "Prophecy\\": "src/"
147
+ }
148
+ },
149
+ "notification-url": "https://packagist.org/downloads/",
150
+ "license": [
151
+ "MIT"
152
+ ],
153
+ "authors": [
154
+ {
155
+ "name": "Konstantin Kudryashov",
156
+ "email": "ever.zet@gmail.com",
157
+ "homepage": "http://everzet.com"
158
+ },
159
+ {
160
+ "name": "Marcello Duarte",
161
+ "email": "marcello.duarte@gmail.com"
162
+ }
163
+ ],
164
+ "description": "Highly opinionated mocking framework for PHP 5.3+",
165
+ "homepage": "https://github.com/phpspec/prophecy",
166
+ "keywords": [
167
+ "Double",
168
+ "Dummy",
169
+ "fake",
170
+ "mock",
171
+ "spy",
172
+ "stub"
173
+ ],
174
+ "time": "2017-11-24T13:59:53+00:00"
175
+ },
176
+ {
177
+ "name": "phpunit/php-code-coverage",
178
+ "version": "2.2.4",
179
+ "source": {
180
+ "type": "git",
181
+ "url": "https://github.com/sebastianbergmann/php-code-coverage.git",
182
+ "reference": "eabf68b476ac7d0f73793aada060f1c1a9bf8979"
183
+ },
184
+ "dist": {
185
+ "type": "zip",
186
+ "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/eabf68b476ac7d0f73793aada060f1c1a9bf8979",
187
+ "reference": "eabf68b476ac7d0f73793aada060f1c1a9bf8979",
188
+ "shasum": ""
189
+ },
190
+ "require": {
191
+ "php": ">=5.3.3",
192
+ "phpunit/php-file-iterator": "~1.3",
193
+ "phpunit/php-text-template": "~1.2",
194
+ "phpunit/php-token-stream": "~1.3",
195
+ "sebastian/environment": "^1.3.2",
196
+ "sebastian/version": "~1.0"
197
+ },
198
+ "require-dev": {
199
+ "ext-xdebug": ">=2.1.4",
200
+ "phpunit/phpunit": "~4"
201
+ },
202
+ "suggest": {
203
+ "ext-dom": "*",
204
+ "ext-xdebug": ">=2.2.1",
205
+ "ext-xmlwriter": "*"
206
+ },
207
+ "type": "library",
208
+ "extra": {
209
+ "branch-alias": {
210
+ "dev-master": "2.2.x-dev"
211
+ }
212
+ },
213
+ "autoload": {
214
+ "classmap": [
215
+ "src/"
216
+ ]
217
+ },
218
+ "notification-url": "https://packagist.org/downloads/",
219
+ "license": [
220
+ "BSD-3-Clause"
221
+ ],
222
+ "authors": [
223
+ {
224
+ "name": "Sebastian Bergmann",
225
+ "email": "sb@sebastian-bergmann.de",
226
+ "role": "lead"
227
+ }
228
+ ],
229
+ "description": "Library that provides collection, processing, and rendering functionality for PHP code coverage information.",
230
+ "homepage": "https://github.com/sebastianbergmann/php-code-coverage",
231
+ "keywords": [
232
+ "coverage",
233
+ "testing",
234
+ "xunit"
235
+ ],
236
+ "time": "2015-10-06T15:47:00+00:00"
237
+ },
238
+ {
239
+ "name": "phpunit/php-file-iterator",
240
+ "version": "1.4.5",
241
+ "source": {
242
+ "type": "git",
243
+ "url": "https://github.com/sebastianbergmann/php-file-iterator.git",
244
+ "reference": "730b01bc3e867237eaac355e06a36b85dd93a8b4"
245
+ },
246
+ "dist": {
247
+ "type": "zip",
248
+ "url": "https://api.github.com/repos/sebastianbergmann/php-file-iterator/zipball/730b01bc3e867237eaac355e06a36b85dd93a8b4",
249
+ "reference": "730b01bc3e867237eaac355e06a36b85dd93a8b4",
250
+ "shasum": ""
251
+ },
252
+ "require": {
253
+ "php": ">=5.3.3"
254
+ },
255
+ "type": "library",
256
+ "extra": {
257
+ "branch-alias": {
258
+ "dev-master": "1.4.x-dev"
259
+ }
260
+ },
261
+ "autoload": {
262
+ "classmap": [
263
+ "src/"
264
+ ]
265
+ },
266
+ "notification-url": "https://packagist.org/downloads/",
267
+ "license": [
268
+ "BSD-3-Clause"
269
+ ],
270
+ "authors": [
271
+ {
272
+ "name": "Sebastian Bergmann",
273
+ "email": "sb@sebastian-bergmann.de",
274
+ "role": "lead"
275
+ }
276
+ ],
277
+ "description": "FilterIterator implementation that filters files based on a list of suffixes.",
278
+ "homepage": "https://github.com/sebastianbergmann/php-file-iterator/",
279
+ "keywords": [
280
+ "filesystem",
281
+ "iterator"
282
+ ],
283
+ "time": "2017-11-27T13:52:08+00:00"
284
+ },
285
+ {
286
+ "name": "phpunit/php-text-template",
287
+ "version": "1.2.1",
288
+ "source": {
289
+ "type": "git",
290
+ "url": "https://github.com/sebastianbergmann/php-text-template.git",
291
+ "reference": "31f8b717e51d9a2afca6c9f046f5d69fc27c8686"
292
+ },
293
+ "dist": {
294
+ "type": "zip",
295
+ "url": "https://api.github.com/repos/sebastianbergmann/php-text-template/zipball/31f8b717e51d9a2afca6c9f046f5d69fc27c8686",
296
+ "reference": "31f8b717e51d9a2afca6c9f046f5d69fc27c8686",
297
+ "shasum": ""
298
+ },
299
+ "require": {
300
+ "php": ">=5.3.3"
301
+ },
302
+ "type": "library",
303
+ "autoload": {
304
+ "classmap": [
305
+ "src/"
306
+ ]
307
+ },
308
+ "notification-url": "https://packagist.org/downloads/",
309
+ "license": [
310
+ "BSD-3-Clause"
311
+ ],
312
+ "authors": [
313
+ {
314
+ "name": "Sebastian Bergmann",
315
+ "email": "sebastian@phpunit.de",
316
+ "role": "lead"
317
+ }
318
+ ],
319
+ "description": "Simple template engine.",
320
+ "homepage": "https://github.com/sebastianbergmann/php-text-template/",
321
+ "keywords": [
322
+ "template"
323
+ ],
324
+ "time": "2015-06-21T13:50:34+00:00"
325
+ },
326
+ {
327
+ "name": "phpunit/php-timer",
328
+ "version": "1.0.9",
329
+ "source": {
330
+ "type": "git",
331
+ "url": "https://github.com/sebastianbergmann/php-timer.git",
332
+ "reference": "3dcf38ca72b158baf0bc245e9184d3fdffa9c46f"
333
+ },
334
+ "dist": {
335
+ "type": "zip",
336
+ "url": "https://api.github.com/repos/sebastianbergmann/php-timer/zipball/3dcf38ca72b158baf0bc245e9184d3fdffa9c46f",
337
+ "reference": "3dcf38ca72b158baf0bc245e9184d3fdffa9c46f",
338
+ "shasum": ""
339
+ },
340
+ "require": {
341
+ "php": "^5.3.3 || ^7.0"
342
+ },
343
+ "require-dev": {
344
+ "phpunit/phpunit": "^4.8.35 || ^5.7 || ^6.0"
345
+ },
346
+ "type": "library",
347
+ "extra": {
348
+ "branch-alias": {
349
+ "dev-master": "1.0-dev"
350
+ }
351
+ },
352
+ "autoload": {
353
+ "classmap": [
354
+ "src/"
355
+ ]
356
+ },
357
+ "notification-url": "https://packagist.org/downloads/",
358
+ "license": [
359
+ "BSD-3-Clause"
360
+ ],
361
+ "authors": [
362
+ {
363
+ "name": "Sebastian Bergmann",
364
+ "email": "sb@sebastian-bergmann.de",
365
+ "role": "lead"
366
+ }
367
+ ],
368
+ "description": "Utility class for timing",
369
+ "homepage": "https://github.com/sebastianbergmann/php-timer/",
370
+ "keywords": [
371
+ "timer"
372
+ ],
373
+ "time": "2017-02-26T11:10:40+00:00"
374
+ },
375
+ {
376
+ "name": "phpunit/php-token-stream",
377
+ "version": "1.4.12",
378
+ "source": {
379
+ "type": "git",
380
+ "url": "https://github.com/sebastianbergmann/php-token-stream.git",
381
+ "reference": "1ce90ba27c42e4e44e6d8458241466380b51fa16"
382
+ },
383
+ "dist": {
384
+ "type": "zip",
385
+ "url": "https://api.github.com/repos/sebastianbergmann/php-token-stream/zipball/1ce90ba27c42e4e44e6d8458241466380b51fa16",
386
+ "reference": "1ce90ba27c42e4e44e6d8458241466380b51fa16",
387
+ "shasum": ""
388
+ },
389
+ "require": {
390
+ "ext-tokenizer": "*",
391
+ "php": ">=5.3.3"
392
+ },
393
+ "require-dev": {
394
+ "phpunit/phpunit": "~4.2"
395
+ },
396
+ "type": "library",
397
+ "extra": {
398
+ "branch-alias": {
399
+ "dev-master": "1.4-dev"
400
+ }
401
+ },
402
+ "autoload": {
403
+ "classmap": [
404
+ "src/"
405
+ ]
406
+ },
407
+ "notification-url": "https://packagist.org/downloads/",
408
+ "license": [
409
+ "BSD-3-Clause"
410
+ ],
411
+ "authors": [
412
+ {
413
+ "name": "Sebastian Bergmann",
414
+ "email": "sebastian@phpunit.de"
415
+ }
416
+ ],
417
+ "description": "Wrapper around PHP's tokenizer extension.",
418
+ "homepage": "https://github.com/sebastianbergmann/php-token-stream/",
419
+ "keywords": [
420
+ "tokenizer"
421
+ ],
422
+ "time": "2017-12-04T08:55:13+00:00"
423
+ },
424
+ {
425
+ "name": "phpunit/phpunit",
426
+ "version": "4.8.36",
427
+ "source": {
428
+ "type": "git",
429
+ "url": "https://github.com/sebastianbergmann/phpunit.git",
430
+ "reference": "46023de9a91eec7dfb06cc56cb4e260017298517"
431
+ },
432
+ "dist": {
433
+ "type": "zip",
434
+ "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/46023de9a91eec7dfb06cc56cb4e260017298517",
435
+ "reference": "46023de9a91eec7dfb06cc56cb4e260017298517",
436
+ "shasum": ""
437
+ },
438
+ "require": {
439
+ "ext-dom": "*",
440
+ "ext-json": "*",
441
+ "ext-pcre": "*",
442
+ "ext-reflection": "*",
443
+ "ext-spl": "*",
444
+ "php": ">=5.3.3",
445
+ "phpspec/prophecy": "^1.3.1",
446
+ "phpunit/php-code-coverage": "~2.1",
447
+ "phpunit/php-file-iterator": "~1.4",
448
+ "phpunit/php-text-template": "~1.2",
449
+ "phpunit/php-timer": "^1.0.6",
450
+ "phpunit/phpunit-mock-objects": "~2.3",
451
+ "sebastian/comparator": "~1.2.2",
452
+ "sebastian/diff": "~1.2",
453
+ "sebastian/environment": "~1.3",
454
+ "sebastian/exporter": "~1.2",
455
+ "sebastian/global-state": "~1.0",
456
+ "sebastian/version": "~1.0",
457
+ "symfony/yaml": "~2.1|~3.0"
458
+ },
459
+ "suggest": {
460
+ "phpunit/php-invoker": "~1.1"
461
+ },
462
+ "bin": [
463
+ "phpunit"
464
+ ],
465
+ "type": "library",
466
+ "extra": {
467
+ "branch-alias": {
468
+ "dev-master": "4.8.x-dev"
469
+ }
470
+ },
471
+ "autoload": {
472
+ "classmap": [
473
+ "src/"
474
+ ]
475
+ },
476
+ "notification-url": "https://packagist.org/downloads/",
477
+ "license": [
478
+ "BSD-3-Clause"
479
+ ],
480
+ "authors": [
481
+ {
482
+ "name": "Sebastian Bergmann",
483
+ "email": "sebastian@phpunit.de",
484
+ "role": "lead"
485
+ }
486
+ ],
487
+ "description": "The PHP Unit Testing framework.",
488
+ "homepage": "https://phpunit.de/",
489
+ "keywords": [
490
+ "phpunit",
491
+ "testing",
492
+ "xunit"
493
+ ],
494
+ "time": "2017-06-21T08:07:12+00:00"
495
+ },
496
+ {
497
+ "name": "phpunit/phpunit-mock-objects",
498
+ "version": "2.3.8",
499
+ "source": {
500
+ "type": "git",
501
+ "url": "https://github.com/sebastianbergmann/phpunit-mock-objects.git",
502
+ "reference": "ac8e7a3db35738d56ee9a76e78a4e03d97628983"
503
+ },
504
+ "dist": {
505
+ "type": "zip",
506
+ "url": "https://api.github.com/repos/sebastianbergmann/phpunit-mock-objects/zipball/ac8e7a3db35738d56ee9a76e78a4e03d97628983",
507
+ "reference": "ac8e7a3db35738d56ee9a76e78a4e03d97628983",
508
+ "shasum": ""
509
+ },
510
+ "require": {
511
+ "doctrine/instantiator": "^1.0.2",
512
+ "php": ">=5.3.3",
513
+ "phpunit/php-text-template": "~1.2",
514
+ "sebastian/exporter": "~1.2"
515
+ },
516
+ "require-dev": {
517
+ "phpunit/phpunit": "~4.4"
518
+ },
519
+ "suggest": {
520
+ "ext-soap": "*"
521
+ },
522
+ "type": "library",
523
+ "extra": {
524
+ "branch-alias": {
525
+ "dev-master": "2.3.x-dev"
526
+ }
527
+ },
528
+ "autoload": {
529
+ "classmap": [
530
+ "src/"
531
+ ]
532
+ },
533
+ "notification-url": "https://packagist.org/downloads/",
534
+ "license": [
535
+ "BSD-3-Clause"
536
+ ],
537
+ "authors": [
538
+ {
539
+ "name": "Sebastian Bergmann",
540
+ "email": "sb@sebastian-bergmann.de",
541
+ "role": "lead"
542
+ }
543
+ ],
544
+ "description": "Mock Object library for PHPUnit",
545
+ "homepage": "https://github.com/sebastianbergmann/phpunit-mock-objects/",
546
+ "keywords": [
547
+ "mock",
548
+ "xunit"
549
+ ],
550
+ "time": "2015-10-02T06:51:40+00:00"
551
+ },
552
+ {
553
+ "name": "sebastian/comparator",
554
+ "version": "1.2.4",
555
+ "source": {
556
+ "type": "git",
557
+ "url": "https://github.com/sebastianbergmann/comparator.git",
558
+ "reference": "2b7424b55f5047b47ac6e5ccb20b2aea4011d9be"
559
+ },
560
+ "dist": {
561
+ "type": "zip",
562
+ "url": "https://api.github.com/repos/sebastianbergmann/comparator/zipball/2b7424b55f5047b47ac6e5ccb20b2aea4011d9be",
563
+ "reference": "2b7424b55f5047b47ac6e5ccb20b2aea4011d9be",
564
+ "shasum": ""
565
+ },
566
+ "require": {
567
+ "php": ">=5.3.3",
568
+ "sebastian/diff": "~1.2",
569
+ "sebastian/exporter": "~1.2 || ~2.0"
570
+ },
571
+ "require-dev": {
572
+ "phpunit/phpunit": "~4.4"
573
+ },
574
+ "type": "library",
575
+ "extra": {
576
+ "branch-alias": {
577
+ "dev-master": "1.2.x-dev"
578
+ }
579
+ },
580
+ "autoload": {
581
+ "classmap": [
582
+ "src/"
583
+ ]
584
+ },
585
+ "notification-url": "https://packagist.org/downloads/",
586
+ "license": [
587
+ "BSD-3-Clause"
588
+ ],
589
+ "authors": [
590
+ {
591
+ "name": "Jeff Welch",
592
+ "email": "whatthejeff@gmail.com"
593
+ },
594
+ {
595
+ "name": "Volker Dusch",
596
+ "email": "github@wallbash.com"
597
+ },
598
+ {
599
+ "name": "Bernhard Schussek",
600
+ "email": "bschussek@2bepublished.at"
601
+ },
602
+ {
603
+ "name": "Sebastian Bergmann",
604
+ "email": "sebastian@phpunit.de"
605
+ }
606
+ ],
607
+ "description": "Provides the functionality to compare PHP values for equality",
608
+ "homepage": "http://www.github.com/sebastianbergmann/comparator",
609
+ "keywords": [
610
+ "comparator",
611
+ "compare",
612
+ "equality"
613
+ ],
614
+ "time": "2017-01-29T09:50:25+00:00"
615
+ },
616
+ {
617
+ "name": "sebastian/diff",
618
+ "version": "1.4.3",
619
+ "source": {
620
+ "type": "git",
621
+ "url": "https://github.com/sebastianbergmann/diff.git",
622
+ "reference": "7f066a26a962dbe58ddea9f72a4e82874a3975a4"
623
+ },
624
+ "dist": {
625
+ "type": "zip",
626
+ "url": "https://api.github.com/repos/sebastianbergmann/diff/zipball/7f066a26a962dbe58ddea9f72a4e82874a3975a4",
627
+ "reference": "7f066a26a962dbe58ddea9f72a4e82874a3975a4",
628
+ "shasum": ""
629
+ },
630
+ "require": {
631
+ "php": "^5.3.3 || ^7.0"
632
+ },
633
+ "require-dev": {
634
+ "phpunit/phpunit": "^4.8.35 || ^5.7 || ^6.0"
635
+ },
636
+ "type": "library",
637
+ "extra": {
638
+ "branch-alias": {
639
+ "dev-master": "1.4-dev"
640
+ }
641
+ },
642
+ "autoload": {
643
+ "classmap": [
644
+ "src/"
645
+ ]
646
+ },
647
+ "notification-url": "https://packagist.org/downloads/",
648
+ "license": [
649
+ "BSD-3-Clause"
650
+ ],
651
+ "authors": [
652
+ {
653
+ "name": "Kore Nordmann",
654
+ "email": "mail@kore-nordmann.de"
655
+ },
656
+ {
657
+ "name": "Sebastian Bergmann",
658
+ "email": "sebastian@phpunit.de"
659
+ }
660
+ ],
661
+ "description": "Diff implementation",
662
+ "homepage": "https://github.com/sebastianbergmann/diff",
663
+ "keywords": [
664
+ "diff"
665
+ ],
666
+ "time": "2017-05-22T07:24:03+00:00"
667
+ },
668
+ {
669
+ "name": "sebastian/environment",
670
+ "version": "1.3.8",
671
+ "source": {
672
+ "type": "git",
673
+ "url": "https://github.com/sebastianbergmann/environment.git",
674
+ "reference": "be2c607e43ce4c89ecd60e75c6a85c126e754aea"
675
+ },
676
+ "dist": {
677
+ "type": "zip",
678
+ "url": "https://api.github.com/repos/sebastianbergmann/environment/zipball/be2c607e43ce4c89ecd60e75c6a85c126e754aea",
679
+ "reference": "be2c607e43ce4c89ecd60e75c6a85c126e754aea",
680
+ "shasum": ""
681
+ },
682
+ "require": {
683
+ "php": "^5.3.3 || ^7.0"
684
+ },
685
+ "require-dev": {
686
+ "phpunit/phpunit": "^4.8 || ^5.0"
687
+ },
688
+ "type": "library",
689
+ "extra": {
690
+ "branch-alias": {
691
+ "dev-master": "1.3.x-dev"
692
+ }
693
+ },
694
+ "autoload": {
695
+ "classmap": [
696
+ "src/"
697
+ ]
698
+ },
699
+ "notification-url": "https://packagist.org/downloads/",
700
+ "license": [
701
+ "BSD-3-Clause"
702
+ ],
703
+ "authors": [
704
+ {
705
+ "name": "Sebastian Bergmann",
706
+ "email": "sebastian@phpunit.de"
707
+ }
708
+ ],
709
+ "description": "Provides functionality to handle HHVM/PHP environments",
710
+ "homepage": "http://www.github.com/sebastianbergmann/environment",
711
+ "keywords": [
712
+ "Xdebug",
713
+ "environment",
714
+ "hhvm"
715
+ ],
716
+ "time": "2016-08-18T05:49:44+00:00"
717
+ },
718
+ {
719
+ "name": "sebastian/exporter",
720
+ "version": "1.2.2",
721
+ "source": {
722
+ "type": "git",
723
+ "url": "https://github.com/sebastianbergmann/exporter.git",
724
+ "reference": "42c4c2eec485ee3e159ec9884f95b431287edde4"
725
+ },
726
+ "dist": {
727
+ "type": "zip",
728
+ "url": "https://api.github.com/repos/sebastianbergmann/exporter/zipball/42c4c2eec485ee3e159ec9884f95b431287edde4",
729
+ "reference": "42c4c2eec485ee3e159ec9884f95b431287edde4",
730
+ "shasum": ""
731
+ },
732
+ "require": {
733
+ "php": ">=5.3.3",
734
+ "sebastian/recursion-context": "~1.0"
735
+ },
736
+ "require-dev": {
737
+ "ext-mbstring": "*",
738
+ "phpunit/phpunit": "~4.4"
739
+ },
740
+ "type": "library",
741
+ "extra": {
742
+ "branch-alias": {
743
+ "dev-master": "1.3.x-dev"
744
+ }
745
+ },
746
+ "autoload": {
747
+ "classmap": [
748
+ "src/"
749
+ ]
750
+ },
751
+ "notification-url": "https://packagist.org/downloads/",
752
+ "license": [
753
+ "BSD-3-Clause"
754
+ ],
755
+ "authors": [
756
+ {
757
+ "name": "Jeff Welch",
758
+ "email": "whatthejeff@gmail.com"
759
+ },
760
+ {
761
+ "name": "Volker Dusch",
762
+ "email": "github@wallbash.com"
763
+ },
764
+ {
765
+ "name": "Bernhard Schussek",
766
+ "email": "bschussek@2bepublished.at"
767
+ },
768
+ {
769
+ "name": "Sebastian Bergmann",
770
+ "email": "sebastian@phpunit.de"
771
+ },
772
+ {
773
+ "name": "Adam Harvey",
774
+ "email": "aharvey@php.net"
775
+ }
776
+ ],
777
+ "description": "Provides the functionality to export PHP variables for visualization",
778
+ "homepage": "http://www.github.com/sebastianbergmann/exporter",
779
+ "keywords": [
780
+ "export",
781
+ "exporter"
782
+ ],
783
+ "time": "2016-06-17T09:04:28+00:00"
784
+ },
785
+ {
786
+ "name": "sebastian/global-state",
787
+ "version": "1.1.1",
788
+ "source": {
789
+ "type": "git",
790
+ "url": "https://github.com/sebastianbergmann/global-state.git",
791
+ "reference": "bc37d50fea7d017d3d340f230811c9f1d7280af4"
792
+ },
793
+ "dist": {
794
+ "type": "zip",
795
+ "url": "https://api.github.com/repos/sebastianbergmann/global-state/zipball/bc37d50fea7d017d3d340f230811c9f1d7280af4",
796
+ "reference": "bc37d50fea7d017d3d340f230811c9f1d7280af4",
797
+ "shasum": ""
798
+ },
799
+ "require": {
800
+ "php": ">=5.3.3"
801
+ },
802
+ "require-dev": {
803
+ "phpunit/phpunit": "~4.2"
804
+ },
805
+ "suggest": {
806
+ "ext-uopz": "*"
807
+ },
808
+ "type": "library",
809
+ "extra": {
810
+ "branch-alias": {
811
+ "dev-master": "1.0-dev"
812
+ }
813
+ },
814
+ "autoload": {
815
+ "classmap": [
816
+ "src/"
817
+ ]
818
+ },
819
+ "notification-url": "https://packagist.org/downloads/",
820
+ "license": [
821
+ "BSD-3-Clause"
822
+ ],
823
+ "authors": [
824
+ {
825
+ "name": "Sebastian Bergmann",
826
+ "email": "sebastian@phpunit.de"
827
+ }
828
+ ],
829
+ "description": "Snapshotting of global state",
830
+ "homepage": "http://www.github.com/sebastianbergmann/global-state",
831
+ "keywords": [
832
+ "global state"
833
+ ],
834
+ "time": "2015-10-12T03:26:01+00:00"
835
+ },
836
+ {
837
+ "name": "sebastian/recursion-context",
838
+ "version": "1.0.5",
839
+ "source": {
840
+ "type": "git",
841
+ "url": "https://github.com/sebastianbergmann/recursion-context.git",
842
+ "reference": "b19cc3298482a335a95f3016d2f8a6950f0fbcd7"
843
+ },
844
+ "dist": {
845
+ "type": "zip",
846
+ "url": "https://api.github.com/repos/sebastianbergmann/recursion-context/zipball/b19cc3298482a335a95f3016d2f8a6950f0fbcd7",
847
+ "reference": "b19cc3298482a335a95f3016d2f8a6950f0fbcd7",
848
+ "shasum": ""
849
+ },
850
+ "require": {
851
+ "php": ">=5.3.3"
852
+ },
853
+ "require-dev": {
854
+ "phpunit/phpunit": "~4.4"
855
+ },
856
+ "type": "library",
857
+ "extra": {
858
+ "branch-alias": {
859
+ "dev-master": "1.0.x-dev"
860
+ }
861
+ },
862
+ "autoload": {
863
+ "classmap": [
864
+ "src/"
865
+ ]
866
+ },
867
+ "notification-url": "https://packagist.org/downloads/",
868
+ "license": [
869
+ "BSD-3-Clause"
870
+ ],
871
+ "authors": [
872
+ {
873
+ "name": "Jeff Welch",
874
+ "email": "whatthejeff@gmail.com"
875
+ },
876
+ {
877
+ "name": "Sebastian Bergmann",
878
+ "email": "sebastian@phpunit.de"
879
+ },
880
+ {
881
+ "name": "Adam Harvey",
882
+ "email": "aharvey@php.net"
883
+ }
884
+ ],
885
+ "description": "Provides functionality to recursively process PHP variables",
886
+ "homepage": "http://www.github.com/sebastianbergmann/recursion-context",
887
+ "time": "2016-10-03T07:41:43+00:00"
888
+ },
889
+ {
890
+ "name": "sebastian/version",
891
+ "version": "1.0.6",
892
+ "source": {
893
+ "type": "git",
894
+ "url": "https://github.com/sebastianbergmann/version.git",
895
+ "reference": "58b3a85e7999757d6ad81c787a1fbf5ff6c628c6"
896
+ },
897
+ "dist": {
898
+ "type": "zip",
899
+ "url": "https://api.github.com/repos/sebastianbergmann/version/zipball/58b3a85e7999757d6ad81c787a1fbf5ff6c628c6",
900
+ "reference": "58b3a85e7999757d6ad81c787a1fbf5ff6c628c6",
901
+ "shasum": ""
902
+ },
903
+ "type": "library",
904
+ "autoload": {
905
+ "classmap": [
906
+ "src/"
907
+ ]
908
+ },
909
+ "notification-url": "https://packagist.org/downloads/",
910
+ "license": [
911
+ "BSD-3-Clause"
912
+ ],
913
+ "authors": [
914
+ {
915
+ "name": "Sebastian Bergmann",
916
+ "email": "sebastian@phpunit.de",
917
+ "role": "lead"
918
+ }
919
+ ],
920
+ "description": "Library that helps with managing the version number of Git-hosted PHP projects",
921
+ "homepage": "https://github.com/sebastianbergmann/version",
922
+ "time": "2015-06-21T13:59:46+00:00"
923
+ },
924
+ {
925
+ "name": "symfony/yaml",
926
+ "version": "v2.8.32",
927
+ "source": {
928
+ "type": "git",
929
+ "url": "https://github.com/symfony/yaml.git",
930
+ "reference": "968ef42161e4bc04200119da473077f9e7015128"
931
+ },
932
+ "dist": {
933
+ "type": "zip",
934
+ "url": "https://api.github.com/repos/symfony/yaml/zipball/968ef42161e4bc04200119da473077f9e7015128",
935
+ "reference": "968ef42161e4bc04200119da473077f9e7015128",
936
+ "shasum": ""
937
+ },
938
+ "require": {
939
+ "php": ">=5.3.9"
940
+ },
941
+ "type": "library",
942
+ "extra": {
943
+ "branch-alias": {
944
+ "dev-master": "2.8-dev"
945
+ }
946
+ },
947
+ "autoload": {
948
+ "psr-4": {
949
+ "Symfony\\Component\\Yaml\\": ""
950
+ },
951
+ "exclude-from-classmap": [
952
+ "/Tests/"
953
+ ]
954
+ },
955
+ "notification-url": "https://packagist.org/downloads/",
956
+ "license": [
957
+ "MIT"
958
+ ],
959
+ "authors": [
960
+ {
961
+ "name": "Fabien Potencier",
962
+ "email": "fabien@symfony.com"
963
+ },
964
+ {
965
+ "name": "Symfony Community",
966
+ "homepage": "https://symfony.com/contributors"
967
+ }
968
+ ],
969
+ "description": "Symfony Yaml Component",
970
+ "homepage": "https://symfony.com",
971
+ "time": "2017-11-29T09:33:18+00:00"
972
+ }
973
+ ],
974
+ "aliases": [],
975
+ "minimum-stability": "stable",
976
+ "stability-flags": [],
977
+ "prefer-stable": false,
978
+ "prefer-lowest": false,
979
+ "platform": {
980
+ "php": ">=5.0.0"
981
+ },
982
+ "platform-dev": []
983
+ }
vendor/mobiledetect/mobiledetectlib/docs/CONTRIBUTING.md ADDED
@@ -0,0 +1,48 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ **Reporting issues**
2
+
3
+ 1. Specify the User-agent by visiting [http://demo.mobiledetect.net](http://demo.mobiledetect.net).
4
+ 1. Specify the expected behaviour.
5
+
6
+ **Developing**
7
+
8
+ 1. Fork Mobile Detect repository. See ["How to fork"](https://help.github.com/articles/fork-a-repo/#fork-an-example-repository) example.
9
+ 1. `git clone https://github.com/[yourname]/Mobile-Detect.git`
10
+ 1. `git add remote serbanghita https://github.com/serbanghita/Mobile-Detect.git`
11
+ 1. `git remote -v` - You should see:
12
+ ```
13
+ origin git@github.com:serbanghita/Mobile-Detect.git
14
+ serbanghita https://github.com/serbanghita/Mobile-Detect.git
15
+ ```
16
+ 1. `git checkout -b devel origin/devel`
17
+ 1. `composer install`
18
+ 1. Start working on your changes.
19
+ 1. If you add new methods or make structural changes to the `Mobile_Detect.php` class
20
+ you need to add unit tests!
21
+ 1. If you add new regexes make sure you commit the User-Agents in [`tests/providers/vendors`](https://github.com/serbanghita/Mobile-Detect/tree/master/tests/providers/vendors)
22
+ 1. Run tests `vendor/bin/phpunit -v -c tests/phpunit.xml --coverage-text --strict-coverage --stop-on-risky`
23
+ 1. `git status` or `git diff` - inspect your changes
24
+ 1 `git stage .`
25
+ 1. `git commit -m "[your commit message here]`
26
+ 1. `git push origin devel`
27
+ 1. Go to your repo on GitHub and ["Submit the PR"](https://help.github.com/articles/about-pull-requests/)
28
+
29
+ **New module, plugin, plugin or port**
30
+
31
+ [Submit new module, plugin, port](../../issues/new?title=New%203rd%20party%20module&body=Name,%20Link%20and%20Description%20of%20the%20module.)
32
+ including the following information:
33
+ * Module name
34
+ * Description
35
+ * Link
36
+ * Author
37
+
38
+ Or you can submit a PR against `README.md`.
39
+
40
+ **Website updates**
41
+
42
+ 1. Our official website is hosted at [http://mobiledetect.net](http://mobiledetect.net).
43
+ 1. The files are found on the `gh-pages` branch.
44
+ 1. `git checkout gh-pages`
45
+ 1. `npm install -g browser-sync`
46
+ 1. `browser-sync start --s . --f . --port 3000 --reload-debounce 1500 --no-ui`
47
+ 1. Go to `http://localhost:3000` and make changes.
48
+ 1. Commit, push and submit the PR against `serbanghita:gh-pages`.
vendor/mobiledetect/mobiledetectlib/docs/HISTORY.md ADDED
@@ -0,0 +1,11 @@
 
 
 
 
 
 
 
 
 
 
 
1
+ The first version of the script was developed in 2009 and it was hosted at https://code.google.com/p/php-mobile-detect/, it was a small project with around 30 stars. (Original blog post by Victor: http://victorstanciu.ro/detectarea-platformelor-mobile-in-php/)
2
+
3
+ In December 2011 it received a major update from the first version, an important number of issues were fixed, then 2.0 was launched. The new version marks a new mindset and also featuring tablet detection.
4
+
5
+ Throughout 2012 the script has been updated constantly and we have received tons of feedback and requests.
6
+
7
+ In July 2012 we moved the repository from Google Code to GitHub in order to quickly accommodate the frequent updates and to involve more people.
8
+
9
+ In August 2013 the library has 1800+ stargazers and support for: composer, PHPUnit tests, PSR standards and a new webpage http://mobiledetect.net
10
+
11
+ Mobile Detect library and user contributions are <a href="https://github.com/serbanghita/Mobile-Detect/blob/master/LICENSE.txt">MIT Licensed</a>.
vendor/mobiledetect/mobiledetectlib/docs/ISSUE_TEMPLATE.md ADDED
@@ -0,0 +1,15 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ -------------delete this message-------------
2
+ * By submitting a new issue I acknowledge that I already read the README, CODE EXAMPLES and KNOWN LIMITATIONS.
3
+ * I understand that the current version `2.x` is only meant to detect `mobile` devices.
4
+ * Please post your User-Agent string! On a real device/s, the library is expected to work correctly.
5
+ -------------delete this message-------------
6
+
7
+
8
+
9
+ **Issue description**
10
+
11
+
12
+ **User-Agent(s)**
13
+
14
+
15
+ **Suggestions**
vendor/mobiledetect/mobiledetectlib/docs/KNOWN_LIMITATIONS.md ADDED
@@ -0,0 +1,11 @@
 
 
 
 
 
 
 
 
 
 
 
1
+ **Known limitations**
2
+
3
+ * Mobile Detect script was designed to detect `mobile` devices. Implicitly other devices are considered to be `desktop`.
4
+ * User-Agent and HTTP headers sniffing is a non reliable method of detecting a mobile device.
5
+ * If the mobile browser is set on `Desktop mode`, the Mobile Detect script has no way of knowing that the device is `mobile`.
6
+ * Some touchscreen devices (eg. Microsoft Surface) are tough to detect as mobile since they can be used in a laptop mode.
7
+ * Detecting the device brand (eg. Apple, Samsung, HTC) is not 100% reliable.
8
+ * We don't monitor the quality of the 3rd party tools based on Mobile Detect script.
9
+ We cannot guarantee that they are using the class properly or if they provide the latest version.
10
+ * Version `2.x` is made to be PHP 5.3 compatible because of the backward compatibility changes of PHP.
11
+ * There are hundreds of devices launched every month, we cannot keep a 100% up to date detection rate.
vendor/mobiledetect/mobiledetectlib/export/exportToJSON.php ADDED
@@ -0,0 +1,67 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * Mobile Detect Library
4
+ * - export -
5
+ * =====================
6
+ *
7
+ * Use the resulting JSON export file in other languages
8
+ * other than PHP. Always check for 'version' key because
9
+ * new major versions can modify the structure of the JSON file.
10
+ *
11
+ * The result of running this script is the export.json file.
12
+ *
13
+ * @license Code and contributions have 'MIT License'
14
+ * More details: https://github.com/serbanghita/Mobile-Detect/blob/master/LICENSE.txt
15
+ *
16
+ */
17
+
18
+ // Included nicejson function to beautify the result JSON file.
19
+ // This library is not mandatory.
20
+ if( file_exists(dirname(__FILE__).'/nicejson/nicejson.php') ) {
21
+ include_once dirname(__FILE__).'/nicejson/nicejson.php';
22
+ }
23
+
24
+ // Include Mobile Detect.
25
+ require_once dirname(__FILE__).'/../Mobile_Detect.php';
26
+ $detect = new Mobile_Detect;
27
+
28
+ $json = array(
29
+ // The current version of Mobile Detect class that
30
+ // is being exported.
31
+ 'version' => $detect->getScriptVersion(),
32
+
33
+ // All headers that trigger 'isMobile' to be 'true',
34
+ // before reaching the User-Agent match detection.
35
+ 'headerMatch' => $detect->getMobileHeaders(),
36
+
37
+ // All possible User-Agent headers.
38
+ 'uaHttpHeaders' => $detect->getUaHttpHeaders(),
39
+
40
+ // All the regexes that trigger 'isMobile' or 'isTablet'
41
+ // to be true.
42
+ 'uaMatch' => array(
43
+ // If match is found, triggers 'isMobile' to be true.
44
+ 'phones' => $detect->getPhoneDevices(),
45
+ // Triggers 'isTablet' to be true.
46
+ 'tablets' => $detect->getTabletDevices(),
47
+ // If match is found, triggers 'isMobile' to be true.
48
+ 'browsers' => $detect->getBrowsers(),
49
+ // If match is found, triggers 'isMobile' to be true.
50
+ 'os' => $detect->getOperatingSystems(),
51
+ // Various utilities. To be further discussed.
52
+ 'utilities' => $detect->getUtilities()
53
+ )
54
+ );
55
+
56
+ $fileName = dirname(__FILE__).'/../Mobile_Detect.json';
57
+ // Write the JSON file to disk.11
58
+ // You can import this file in your app.
59
+ if (file_put_contents(
60
+ $fileName,
61
+ function_exists('json_format') ? json_format($json) : json_encode($json)
62
+ )) {
63
+ echo 'Done. Check '.realpath($fileName).' file.';
64
+ }
65
+ else {
66
+ echo 'Failed to write '.realpath($fileName).' to disk.';
67
+ }
vendor/mobiledetect/mobiledetectlib/namespaced/Detection/MobileDetect.php ADDED
@@ -0,0 +1,22 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * Little piece of PHP to make Mobile_Detect auto-loadable in PSR-0 compatible PHP autoloaders like
4
+ * the Symfony Universal ClassLoader by Fabien Potencier. Since PSR-0 handles an underscore in
5
+ * classnames (on the filesystem) as a slash, "Mobile_Detect.php" autoloaders will try to convert
6
+ * the classname and path to "Mobile\Detect.php". This script will ensure autoloading with:
7
+ * - Namespace: Detection
8
+ * - Classname: MobileDetect
9
+ * - Namespased: \Detection\MobileDetect
10
+ * - Autoload path: ./namespaced
11
+ * - Converted path: ./namespaced/Detection/MobileDetect.php
12
+ *
13
+ * Don't forget to use MobileDetect (instead of Mobile_Detect) as class in code when autoloading.
14
+ *
15
+ * Thanks to @WietseWind.
16
+ * For details please check: https://github.com/serbanghita/Mobile-Detect/pull/120
17
+ */
18
+
19
+ namespace Detection;
20
+ require_once dirname(__FILE__) . DIRECTORY_SEPARATOR . '..' . DIRECTORY_SEPARATOR . '..' . DIRECTORY_SEPARATOR . 'Mobile_Detect.php';
21
+
22
+ class MobileDetect extends \Mobile_Detect {}
vendor/mobiledetect/mobiledetectlib/phpcs.xml ADDED
@@ -0,0 +1,20 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?xml version="1.0"?>
2
+ <ruleset name="PSR1">
3
+ <description>The PSR-2 coding standard extended.</description>
4
+ <rule ref="PSR1">
5
+ <exclude name="PSR1.Classes.ClassDeclaration.MissingNamespace"/>
6
+ </rule>
7
+ <rule ref="Squiz">
8
+ <exclude name="Squiz.Classes.ValidClassName.NotCamelCaps"/>
9
+ <exclude name="Squiz.Files.FileExtension.ClassFound"/>
10
+ <exclude name="Squiz.Commenting.ClassComment.TagNotAllowed"/>
11
+ </rule>
12
+ <rule ref="Squiz.Strings.DoubleQuoteUsage">
13
+ <type>error</type>
14
+ </rule>
15
+ <rule ref="Generic.Files.LineLength">
16
+ <properties>
17
+ <property name="lineLimit" value="140"/>
18
+ </properties>
19
+ </rule>
20
+ </ruleset>