WPtouch - Version 4.1

Version Description

Download this release

Release Info

Developer bravenewcode
Plugin Icon 128x128 WPtouch
Version 4.1
Comparing to
See all releases

Code changes from version 4.0.4 to 4.1

Files changed (67) hide show
  1. admin/css/wptouch-admin-4-wizard.css +8 -7
  2. admin/css/wptouch-admin-4.css +73 -8
  3. admin/customizer/wptouch-customizer.php +25 -23
  4. admin/fontello/LICENSE.txt +30 -1
  5. admin/fontello/README.txt +2 -2
  6. admin/fontello/config.json +18 -0
  7. admin/fontello/css/fontello-codes.css +4 -1
  8. admin/fontello/css/fontello-embedded.css +10 -7
  9. admin/fontello/css/fontello-ie7-codes.css +4 -1
  10. admin/fontello/css/fontello-ie7.css +4 -1
  11. admin/fontello/css/fontello.css +11 -7
  12. admin/fontello/demo.html +11 -6
  13. admin/fontello/font/fontello.eot +0 -0
  14. admin/fontello/font/fontello.svg +70 -33
  15. admin/fontello/font/fontello.ttf +0 -0
  16. admin/fontello/font/fontello.woff +0 -0
  17. admin/fontello/font/fontello.woff2 +0 -0
  18. admin/images/auto-config.jpg +0 -0
  19. admin/js/wptouch-admin-4.js +94 -2
  20. admin/js/wptouch-admin-wizard.js +15 -15
  21. admin/pages/custom/wptouch-admin-license.php +1 -1
  22. admin/pages/custom/wptouch-admin-wizard.php +3 -3
  23. admin/pages/wptouch-admin-general-settings.php +4 -45
  24. admin/settings/html/auto_configure.php +6 -0
  25. admin/settings/html/extension-browser-item-detail.php +70 -13
  26. admin/settings/html/extension-browser-item.php +1 -1
  27. admin/settings/html/gopro.php +3 -3
  28. admin/settings/html/sites.php +1 -0
  29. admin/settings/html/theme-browser-item-detail.php +2 -0
  30. admin/settings/html/theme-browser-item.php +1 -1
  31. admin/settings/html/updates-available.php +17 -2
  32. admin/settings/include/sites.php +32 -0
  33. core/admin-ajax.php +170 -1
  34. core/admin-extensions.php +25 -16
  35. core/admin-load.php +21 -18
  36. core/admin-menu.php +3 -1
  37. core/admin-render.php +85 -46
  38. core/admin-themes.php +2 -11
  39. core/bncid.php +1 -0
  40. core/class-bncapi.php +1 -1
  41. core/class-wptouch-pro-settings.php +19 -1
  42. core/class-wptouch-pro.php +158 -19
  43. core/config.php +0 -1
  44. core/globals.php +24 -2
  45. core/multisite.php +370 -1
  46. core/theme.php +18 -16
  47. lang/wptouch.pot +417 -303
  48. readme.txt +13 -2
  49. themes/bauhaus/default/header-bottom.php +1 -1
  50. themes/bauhaus/default/style.css +0 -2
  51. themes/bauhaus/readme.txt +1 -0
  52. themes/bauhaus/root-functions.php +31 -0
  53. themes/foundation/modules/custom-latest-posts/custom-latest-posts.php +2 -2
  54. themes/foundation/modules/featured/featured.php +13 -18
  55. themes/foundation/modules/google-fonts/google-fonts.php +20 -7
  56. themes/foundation/modules/login/login.php +7 -55
  57. themes/foundation/modules/owlcarousel/assets/owl.carousel.css +87 -175
  58. themes/foundation/modules/owlcarousel/assets/owl.carousel.min.css +1 -0
  59. themes/foundation/modules/owlcarousel/assets/owl.theme.default.css +51 -0
  60. themes/foundation/modules/owlcarousel/assets/owl.theme.default.min.css +1 -0
  61. themes/foundation/modules/owlcarousel/owl.carousel.js +1078 -1001
  62. themes/foundation/modules/owlcarousel/owl.carousel.min.js +2 -1
  63. themes/foundation/modules/owlcarousel/owlcarousel.php +8 -1
  64. themes/foundation/modules/sharing/sharing.php +58 -56
  65. themes/foundation/modules/social-links/social-links.php +108 -106
  66. themes/foundation/root-functions.php +0 -4
  67. wptouch.php +12 -2
admin/css/wptouch-admin-4-wizard.css CHANGED
@@ -1,10 +1,4 @@
1
- /* @override
2
- http://wptp3.local.com/wp-content/plugins/wptouch-pro/admin/css/wptouch-admin-4-wizard.css?ver=4.0rc3
3
- http://multisite.local.com/wordpress/wp-content/plugins/wptouch-pro/admin/css/wptouch-admin-4-wizard.css?ver=4.0rc3
4
- http://wptp3.local.com/wp-content/plugins/wptouch-pro/admin/css/wptouch-admin-4-wizard.css?ver=4.0rc4
5
- http://wptp3.local.com/wp-content/plugins/wptouch-pro/admin/css/wptouch-admin-4-wizard.css?ver=76e991ef18f00ccead0908dad1e8ca36
6
- http://local.free.com/wordpress/wp-content/plugins/wptouch-pro/admin/css/wptouch-admin-4-wizard.css?ver=ef6e6bd127f2d30c8e9b0f7ab4870428
7
- */
8
 
9
  /* @group Clearfix */
10
 
@@ -1311,6 +1305,13 @@ input.checkbox:disabled + label:after {
1311
  .show-love .icon-heart {
1312
  font-size: 240px;
1313
  color: #eb5768;
 
 
 
 
 
 
 
1314
  }
1315
  /* @end */
1316
 
1
+ /* @override http://wpt.local.com/wp-content/plugins/wptouch-pro/admin/css/wptouch-admin-4-wizard.css?ver=22ed6bf4adf5d9900c597275442749f4 */
 
 
 
 
 
 
2
 
3
  /* @group Clearfix */
4
 
1305
  .show-love .icon-heart {
1306
  font-size: 240px;
1307
  color: #eb5768;
1308
+ line-height: 240px;
1309
+ }
1310
+
1311
+ .show-love .icon-heart-broken {
1312
+ font-size: 194px;
1313
+ color: #eb5768;
1314
+ line-height: 249px;
1315
  }
1316
  /* @end */
1317
 
admin/css/wptouch-admin-4.css CHANGED
@@ -1,9 +1,3 @@
1
- /* @override
2
- http://local.free.com/wordpress/wp-content/plugins/wptouch/admin/css/wptouch-admin-4.css?ver=07078a97d66756f213dbca3e379bf084
3
- http://local.free.com/wordpress/wp-content/plugins/wptouch/admin/css/wptouch-admin-4.css?ver=23fb94884a48c87b2205cae4ed48d2a6
4
- http://wptouch.local.com/wp-content/plugins/wptouch-pro/admin/css/wptouch-admin-4.css?ver=8592ce708d0f07d31806215760a95116
5
- */
6
-
7
  /* @group Clearfix */
8
 
9
  .wptouch-clearfix:after {
@@ -371,11 +365,18 @@ a#preview-theme {
371
 
372
  /* @group Icons */
373
 
 
 
 
 
 
 
 
374
  #wptouch-admin-menu ul li a.updates-available:before {
375
  content: '\e81d';
376
  }
377
 
378
- #wptouch-admin-menu ul li a.setup-general-general:before {
379
  content: '\e805';
380
  }
381
 
@@ -443,6 +444,10 @@ a#preview-theme {
443
  content: '\e818';
444
  }
445
 
 
 
 
 
446
  /* @end */
447
 
448
  /* @end */
@@ -2281,4 +2286,64 @@ li.no-license:hover:after {
2281
  width: 100%;
2282
  }
2283
 
2284
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
  /* @group Clearfix */
2
 
3
  .wptouch-clearfix:after {
365
 
366
  /* @group Icons */
367
 
368
+ #wptouch-admin-menu a.should-hide:before, #wptouch-admin-menu a.active.should-hide:before, #wptouch-admin-menu a.active.should-hide {
369
+ background: -webkit-linear-gradient(#f29533, #f5696c);
370
+ -webkit-background-clip: text;
371
+ -webkit-text-fill-color: transparent;
372
+ content: '\e821' !important;
373
+ }
374
+
375
  #wptouch-admin-menu ul li a.updates-available:before {
376
  content: '\e81d';
377
  }
378
 
379
+ #wptouch-admin-menu ul li a.setup-general-general:before, #wptouch-admin-menu ul li a.wptouch-addon-deployment:before {
380
  content: '\e805';
381
  }
382
 
444
  content: '\e818';
445
  }
446
 
447
+ #wptouch-admin-menu ul li a.wptouch-addon-amp:before {
448
+ content: '\e822';
449
+ }
450
+
451
  /* @end */
452
 
453
  /* @end */
2286
  width: 100%;
2287
  }
2288
 
2289
+ }
2290
+
2291
+ /* @group Multisite */
2292
+
2293
+ #multisite-deploy-sites {
2294
+ max-height: 500px;
2295
+ overflow: scroll;
2296
+ border: 1px solid #e7eaed;
2297
+ margin-bottom: 30px;
2298
+ border-radius: 3px;
2299
+ }
2300
+
2301
+ #multisite-deploy-sites p {
2302
+ padding-left: 12px;
2303
+ margin: 0;
2304
+ }
2305
+
2306
+ #multisite-deploy-sites p label {
2307
+ display: inline-block;
2308
+ width: 90%;
2309
+ padding-top: 8px;
2310
+ padding-bottom: 8px;
2311
+ }
2312
+
2313
+ button#multisite-deploy {
2314
+ background-color: #55c2e8;
2315
+ float: right;
2316
+ }
2317
+
2318
+ #multisite-deploy-sites p:nth-child(odd) {
2319
+ background-color: #fcfcfc;
2320
+ }
2321
+
2322
+ #multisite-deploy-sites p input {
2323
+ margin-right: 10px;
2324
+ }
2325
+
2326
+ #multisite-deploy-sites input[type=checkbox][disabled] + label {
2327
+ font-style: italic;
2328
+ color: #ccc;
2329
+ }
2330
+
2331
+ p.deploy-text i {
2332
+ color: #8ec159;
2333
+ font-size: 100px;
2334
+ display: block;
2335
+ line-height: 0;
2336
+ margin-bottom: 20px;
2337
+ }
2338
+
2339
+ p.deploy-text {
2340
+ font-size: 15px;
2341
+ }
2342
+
2343
+ .remodal-multisite {
2344
+ min-height: 280px;
2345
+ }
2346
+
2347
+
2348
+
2349
+ /* @end */
admin/customizer/wptouch-customizer.php CHANGED
@@ -282,9 +282,9 @@ function wptouch_get_customizable_settings() {
282
  }
283
  }
284
 
285
- function wptouch_initialize_customizer() {
286
  $current_theme = wptouch_get_current_theme_name();
287
- if ( !get_option( 'wptouch_customizer_initialized_' . $current_theme ) ) {
288
  wptouch_customizer_initialize();
289
  add_option( 'wptouch_customizer_initialized_' . $current_theme, true );
290
  }
@@ -352,32 +352,34 @@ function wptouch_customizer_setup( $wp_customize ) {
352
  // Allow other areas of the plugin to perform actions before we get set up. These might be 'first load'-type calls
353
  do_action( 'wptouch_customizer_start_setup' );
354
 
355
- // Again, colours are a special case and are handled separately
356
- if ( foundation_has_theme_colors() ) {
357
- $colors = foundation_get_theme_colors();
 
358
 
359
- foreach( $colors as $color ) {
360
- if ( !array_key_exists( $color->domain, $defaults ) ) {
361
- $defaults[ $color->domain ] = $wptouch_pro->get_setting_defaults( $color->domain );
362
- }
363
 
364
- $setting_name = $color->setting;
365
 
366
- $args = array(
367
- 'default' => $defaults[ $color->domain ]->$setting_name
368
- );
369
 
370
- if ( $color->live_preview ) {
371
- $args[ 'transport' ] = 'postMessage';
372
- }
373
 
374
- // The Customizer constructs things in two parts
375
- $wp_customize->add_setting( 'wptouch_' . $setting_name, $args );
376
 
377
- $wp_customize->add_control( new WP_Customize_Color_Control( $wp_customize, 'wptouch_' . $setting_name, array(
378
- 'label' => __( $color->desc, 'wptouch-pro' ),
379
- 'section' => 'colors'
380
- ) ) );
 
381
  }
382
  }
383
 
@@ -761,7 +763,7 @@ function wptouch_customizer_port_image( $customizer_setting, $source_setting, $s
761
  $settings = wptouch_get_settings( $settings_domain );
762
  $upload_dir = wp_upload_dir();
763
 
764
- if ( $source_setting != false && $settings->$source_setting != false ) {
765
 
766
  if ( in_array( $settings_domain, $options_domains ) ) {
767
  $domain_options = get_option( 'wptouch_customizer_options_' . $settings_domain );
282
  }
283
  }
284
 
285
+ function wptouch_initialize_customizer( $override = false ) {
286
  $current_theme = wptouch_get_current_theme_name();
287
+ if ( !get_option( 'wptouch_customizer_initialized_' . $current_theme ) || $override ) {
288
  wptouch_customizer_initialize();
289
  add_option( 'wptouch_customizer_initialized_' . $current_theme, true );
290
  }
352
  // Allow other areas of the plugin to perform actions before we get set up. These might be 'first load'-type calls
353
  do_action( 'wptouch_customizer_start_setup' );
354
 
355
+ if ( wptouch_can_show_page( 'colors' ) ) {
356
+ // Again, colours are a special case and are handled separately
357
+ if ( foundation_has_theme_colors() ) {
358
+ $colors = foundation_get_theme_colors();
359
 
360
+ foreach( $colors as $color ) {
361
+ if ( !array_key_exists( $color->domain, $defaults ) ) {
362
+ $defaults[ $color->domain ] = $wptouch_pro->get_setting_defaults( $color->domain );
363
+ }
364
 
365
+ $setting_name = $color->setting;
366
 
367
+ $args = array(
368
+ 'default' => $defaults[ $color->domain ]->$setting_name
369
+ );
370
 
371
+ if ( $color->live_preview ) {
372
+ $args[ 'transport' ] = 'postMessage';
373
+ }
374
 
375
+ // The Customizer constructs things in two parts
376
+ $wp_customize->add_setting( 'wptouch_' . $setting_name, $args );
377
 
378
+ $wp_customize->add_control( new WP_Customize_Color_Control( $wp_customize, 'wptouch_' . $setting_name, array(
379
+ 'label' => __( $color->desc, 'wptouch-pro' ),
380
+ 'section' => 'colors'
381
+ ) ) );
382
+ }
383
  }
384
  }
385
 
763
  $settings = wptouch_get_settings( $settings_domain );
764
  $upload_dir = wp_upload_dir();
765
 
766
+ if ( $source_setting != false && isset( $settings->$source_setting ) && $settings->$source_setting != false ) {
767
 
768
  if ( in_array( $settings_domain, $options_domains ) ) {
769
  $domain_options = get_option( 'wptouch_customizer_options_' . $settings_domain );
admin/fontello/LICENSE.txt CHANGED
@@ -33,5 +33,34 @@ Font license info
33
  Copyright (C) 2012 by Dave Gandy
34
 
35
  Author: Dave Gandy
 
 
 
 
 
 
 
 
 
36
  License: SIL (http://scripts.sil.org/OFL)
37
- Homepage: http://fortawesome.github.com/Font-Awesome/
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
33
  Copyright (C) 2012 by Dave Gandy
34
 
35
  Author: Dave Gandy
36
+ License: SIL ()
37
+ Homepage: http://fortawesome.github.com/Font-Awesome/
38
+
39
+
40
+ ## MFG Labs
41
+
42
+ Copyright (C) 2012 by Daniel Bruce
43
+
44
+ Author: MFG Labs
45
  License: SIL (http://scripts.sil.org/OFL)
46
+ Homepage: http://www.mfglabs.com/
47
+
48
+
49
+ ## Elusive
50
+
51
+ Copyright (C) 2013 by Aristeides Stathopoulos
52
+
53
+ Author: Aristeides Stathopoulos
54
+ License: SIL (http://scripts.sil.org/OFL)
55
+ Homepage: http://aristeides.com/
56
+
57
+
58
+ ## Typicons
59
+
60
+ (c) Stephen Hutchings 2012
61
+
62
+ Author: Stephen Hutchings
63
+ License: SIL (http://scripts.sil.org/OFL)
64
+ Homepage: http://typicons.com/
65
+
66
+
admin/fontello/README.txt CHANGED
@@ -2,14 +2,14 @@ This webfont is generated by http://fontello.com open source project.
2
 
3
 
4
  ================================================================================
5
- Please, note, that you should obey original font licences, used to make this
6
  webfont pack. Details available in LICENSE.txt file.
7
 
8
  - Usually, it's enough to publish content of LICENSE.txt file somewhere on your
9
  site in "About" section.
10
 
11
  - If your project is open-source, usually, it will be ok to make LICENSE.txt
12
- file publically available in your repository.
13
 
14
  - Fonts, used in Fontello, don't require a clickable link on your site.
15
  But any kind of additional authors crediting is welcome.
2
 
3
 
4
  ================================================================================
5
+ Please, note, that you should obey original font licenses, used to make this
6
  webfont pack. Details available in LICENSE.txt file.
7
 
8
  - Usually, it's enough to publish content of LICENSE.txt file somewhere on your
9
  site in "About" section.
10
 
11
  - If your project is open-source, usually, it will be ok to make LICENSE.txt
12
+ file publicly available in your repository.
13
 
14
  - Fonts, used in Fontello, don't require a clickable link on your site.
15
  But any kind of additional authors crediting is welcome.
admin/fontello/config.json CHANGED
@@ -325,6 +325,24 @@
325
  "css": "tablet",
326
  "code": 59417,
327
  "src": "modernpics"
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
328
  }
329
  ]
330
  }
325
  "css": "tablet",
326
  "code": 59417,
327
  "src": "modernpics"
328
+ },
329
+ {
330
+ "uid": "862129f833b09f3d34ae39acf8484a7b",
331
+ "css": "heart-broken",
332
+ "code": 59424,
333
+ "src": "mfglabs"
334
+ },
335
+ {
336
+ "uid": "d218294e6f9f7191f6b0b3d1ff6239ff",
337
+ "css": "eye-off",
338
+ "code": 59425,
339
+ "src": "elusive"
340
+ },
341
+ {
342
+ "uid": "pgdm1vsngqxmheo5xkjpbm5o8k81pawd",
343
+ "css": "flash",
344
+ "code": 59426,
345
+ "src": "typicons"
346
  }
347
  ]
348
  }
admin/fontello/css/fontello-codes.css CHANGED
@@ -30,4 +30,7 @@
30
  .icon-key:before { content: '\e81c'; } /* '' */
31
  .icon-download-cloud:before { content: '\e81d'; } /* '' */
32
  .icon-heart:before { content: '\e81e'; } /* '' */
33
- .icon-chart-pie:before { content: '\e81f'; } /* '' */
 
 
 
30
  .icon-key:before { content: '\e81c'; } /* '' */
31
  .icon-download-cloud:before { content: '\e81d'; } /* '' */
32
  .icon-heart:before { content: '\e81e'; } /* '' */
33
+ .icon-chart-pie:before { content: '\e81f'; } /* '' */
34
+ .icon-heart-broken:before { content: '\e820'; } /* '' */
35
+ .icon-eye-off:before { content: '\e821'; } /* '' */
36
+ .icon-flash:before { content: '\e822'; } /* '' */
admin/fontello/css/fontello-embedded.css CHANGED
@@ -1,15 +1,15 @@
1
  @font-face {
2
  font-family: 'fontello';
3
- src: url('../font/fontello.eot?41454967');
4
- src: url('../font/fontello.eot?41454967#iefix') format('embedded-opentype'),
5
- url('../font/fontello.svg?41454967#fontello') format('svg');
6
  font-weight: normal;
7
  font-style: normal;
8
  }
9
  @font-face {
10
  font-family: 'fontello';
11
- src: url('data:application/octet-stream;base64,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') format('woff'),
12
- url('data:application/octet-stream;base64,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WCA8WS6xKwEUKy2wPiywNSsjIC5GsAIlRlJYIDxZLrErARQrLbA/LLA2K4ogIDywBCNCijgjIC5GsAIlRlJYIDxZLrErARQrsARDLrArKy2wQCywABawBCWwBCYgLkcjRyNhsAlDKyMgPCAuIzixKwEUKy2wQSyxCAQlQrAAFrAEJbAEJSAuRyNHI2EgsAQjQrAJQysgsGBQWCCwQFFYswIgAyAbswImAxpZQkIjIEewBEOwAmIgsABQWLBAYFlmsAFjYCCwASsgiophILACQ2BkI7ADQ2FkUFiwAkNhG7ADQ2BZsAMlsAJiILAAUFiwQGBZZrABY2GwAiVGYTgjIDwjOBshICBGI0ewASsjYTghWbErARQrLbBCLLA1Ky6xKwEUKy2wQyywNishIyAgPLAEI0IjOLErARQrsARDLrArKy2wRCywABUgR7AAI0KyAAEBFRQTLrAxKi2wRSywABUgR7AAI0KyAAEBFRQTLrAxKi2wRiyxAAEUE7AyKi2wRyywNCotsEgssAAWRSMgLiBGiiNhOLErARQrLbBJLLAII0KwSCstsEossgAAQSstsEsssgABQSstsEwssgEAQSstsE0ssgEBQSstsE4ssgAAQistsE8ssgABQistsFAssgEAQistsFEssgEBQistsFIssgAAPistsFMssgABPistsFQssgEAPistsFUssgEBPistsFYssgAAQCstsFcssgABQCstsFgssgEAQCstsFkssgEBQCstsFossgAAQystsFsssgABQystsFwssgEAQystsF0ssgEBQystsF4ssgAAPystsF8ssgABPystsGAssgEAPystsGEssgEBPystsGIssDcrLrErARQrLbBjLLA3K7A7Ky2wZCywNyuwPCstsGUssAAWsDcrsD0rLbBmLLA4Ky6xKwEUKy2wZyywOCuwOystsGgssDgrsDwrLbBpLLA4K7A9Ky2waiywOSsusSsBFCstsGsssDkrsDsrLbBsLLA5K7A8Ky2wbSywOSuwPSstsG4ssDorLrErARQrLbBvLLA6K7A7Ky2wcCywOiuwPCstsHEssDorsD0rLbByLLMJBAIDRVghGyMhWUIrsAhlsAMkUHiwARUwLQBLuADIUlixAQGOWbABuQgACABjcLEABUKxAAAqsQAFQrEACCqxAAVCsQAIKrEABUK5AAAACSqxAAVCuQAAAAkqsQMARLEkAYhRWLBAiFixA2REsSYBiFFYugiAAAEEQIhjVFixAwBEWVlZWbEADCq4Af+FsASNsQIARAA=') format('truetype');
13
  }
14
  /* Chrome hack: SVG is rendered more smooth in Windozze. 100% magic, uncomment if you need it. */
15
  /* Note, that will break hinting! In other OS-es font will be not as sharp as it could be */
@@ -17,7 +17,7 @@
17
  @media screen and (-webkit-min-device-pixel-ratio:0) {
18
  @font-face {
19
  font-family: 'fontello';
20
- src: url('../font/fontello.svg?41454967#fontello') format('svg');
21
  }
22
  }
23
  */
@@ -83,4 +83,7 @@
83
  .icon-key:before { content: '\e81c'; } /* '' */
84
  .icon-download-cloud:before { content: '\e81d'; } /* '' */
85
  .icon-heart:before { content: '\e81e'; } /* '' */
86
- .icon-chart-pie:before { content: '\e81f'; } /* '' */
 
 
 
1
  @font-face {
2
  font-family: 'fontello';
3
+ src: url('../font/fontello.eot?32536721');
4
+ src: url('../font/fontello.eot?32536721#iefix') format('embedded-opentype'),
5
+ url('../font/fontello.svg?32536721#fontello') format('svg');
6
  font-weight: normal;
7
  font-style: normal;
8
  }
9
  @font-face {
10
  font-family: 'fontello';
11
+ src: url('data:application/octet-stream;base64,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') format('woff'),
12
+ url('data:application/octet-stream;base64,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') format('truetype');
13
  }
14
  /* Chrome hack: SVG is rendered more smooth in Windozze. 100% magic, uncomment if you need it. */
15
  /* Note, that will break hinting! In other OS-es font will be not as sharp as it could be */
17
  @media screen and (-webkit-min-device-pixel-ratio:0) {
18
  @font-face {
19
  font-family: 'fontello';
20
+ src: url('../font/fontello.svg?32536721#fontello') format('svg');
21
  }
22
  }
23
  */
83
  .icon-key:before { content: '\e81c'; } /* '' */
84
  .icon-download-cloud:before { content: '\e81d'; } /* '' */
85
  .icon-heart:before { content: '\e81e'; } /* '' */
86
+ .icon-chart-pie:before { content: '\e81f'; } /* '' */
87
+ .icon-heart-broken:before { content: '\e820'; } /* '' */
88
+ .icon-eye-off:before { content: '\e821'; } /* '' */
89
+ .icon-flash:before { content: '\e822'; } /* '' */
admin/fontello/css/fontello-ie7-codes.css CHANGED
@@ -30,4 +30,7 @@
30
  .icon-key { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); }
31
  .icon-download-cloud { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); }
32
  .icon-heart { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); }
33
- .icon-chart-pie { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); }
 
 
 
30
  .icon-key { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); }
31
  .icon-download-cloud { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); }
32
  .icon-heart { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); }
33
+ .icon-chart-pie { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); }
34
+ .icon-heart-broken { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); }
35
+ .icon-eye-off { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); }
36
+ .icon-flash { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); }
admin/fontello/css/fontello-ie7.css CHANGED
@@ -41,4 +41,7 @@
41
  .icon-key { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); }
42
  .icon-download-cloud { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); }
43
  .icon-heart { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); }
44
- .icon-chart-pie { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); }
 
 
 
41
  .icon-key { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); }
42
  .icon-download-cloud { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); }
43
  .icon-heart { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); }
44
+ .icon-chart-pie { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); }
45
+ .icon-heart-broken { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); }
46
+ .icon-eye-off { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); }
47
+ .icon-flash { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); }
admin/fontello/css/fontello.css CHANGED
@@ -1,10 +1,11 @@
1
  @font-face {
2
  font-family: 'fontello';
3
- src: url('../font/fontello.eot?57201061');
4
- src: url('../font/fontello.eot?57201061#iefix') format('embedded-opentype'),
5
- url('../font/fontello.woff?57201061') format('woff'),
6
- url('../font/fontello.ttf?57201061') format('truetype'),
7
- url('../font/fontello.svg?57201061#fontello') format('svg');
 
8
  font-weight: normal;
9
  font-style: normal;
10
  }
@@ -14,7 +15,7 @@
14
  @media screen and (-webkit-min-device-pixel-ratio:0) {
15
  @font-face {
16
  font-family: 'fontello';
17
- src: url('../font/fontello.svg?57201061#fontello') format('svg');
18
  }
19
  }
20
  */
@@ -85,4 +86,7 @@
85
  .icon-key:before { content: '\e81c'; } /* '' */
86
  .icon-download-cloud:before { content: '\e81d'; } /* '' */
87
  .icon-heart:before { content: '\e81e'; } /* '' */
88
- .icon-chart-pie:before { content: '\e81f'; } /* '' */
 
 
 
1
  @font-face {
2
  font-family: 'fontello';
3
+ src: url('../font/fontello.eot?60051915');
4
+ src: url('../font/fontello.eot?60051915#iefix') format('embedded-opentype'),
5
+ url('../font/fontello.woff2?60051915') format('woff2'),
6
+ url('../font/fontello.woff?60051915') format('woff'),
7
+ url('../font/fontello.ttf?60051915') format('truetype'),
8
+ url('../font/fontello.svg?60051915#fontello') format('svg');
9
  font-weight: normal;
10
  font-style: normal;
11
  }
15
  @media screen and (-webkit-min-device-pixel-ratio:0) {
16
  @font-face {
17
  font-family: 'fontello';
18
+ src: url('../font/fontello.svg?60051915#fontello') format('svg');
19
  }
20
  }
21
  */
86
  .icon-key:before { content: '\e81c'; } /* '' */
87
  .icon-download-cloud:before { content: '\e81d'; } /* '' */
88
  .icon-heart:before { content: '\e81e'; } /* '' */
89
+ .icon-chart-pie:before { content: '\e81f'; } /* '' */
90
+ .icon-heart-broken:before { content: '\e820'; } /* '' */
91
+ .icon-eye-off:before { content: '\e821'; } /* '' */
92
+ .icon-flash:before { content: '\e822'; } /* '' */
admin/fontello/demo.html CHANGED
@@ -229,11 +229,11 @@ body {
229
  }
230
  @font-face {
231
  font-family: 'fontello';
232
- src: url('./font/fontello.eot?72599789');
233
- src: url('./font/fontello.eot?72599789#iefix') format('embedded-opentype'),
234
- url('./font/fontello.woff?72599789') format('woff'),
235
- url('./font/fontello.ttf?72599789') format('truetype'),
236
- url('./font/fontello.svg?72599789#fontello') format('svg');
237
  font-weight: normal;
238
  font-style: normal;
239
  }
@@ -279,7 +279,7 @@ body {
279
  <script>
280
  function toggleCodes(on) {
281
  var obj = document.getElementById('icons');
282
-
283
  if (on) {
284
  obj.className += ' codesOn';
285
  } else {
@@ -348,6 +348,11 @@ body {
348
  <div title="Code: 0xe81e" class="the-icons span3"><i class="demo-icon icon-heart">&#xe81e;</i> <span class="i-name">icon-heart</span><span class="i-code">0xe81e</span></div>
349
  <div title="Code: 0xe81f" class="the-icons span3"><i class="demo-icon icon-chart-pie">&#xe81f;</i> <span class="i-name">icon-chart-pie</span><span class="i-code">0xe81f</span></div>
350
  </div>
 
 
 
 
 
351
  </div>
352
  <div class="container footer">Generated by <a href="http://fontello.com">fontello.com</a></div>
353
  </body>
229
  }
230
  @font-face {
231
  font-family: 'fontello';
232
+ src: url('./font/fontello.eot?49615061');
233
+ src: url('./font/fontello.eot?49615061#iefix') format('embedded-opentype'),
234
+ url('./font/fontello.woff?49615061') format('woff'),
235
+ url('./font/fontello.ttf?49615061') format('truetype'),
236
+ url('./font/fontello.svg?49615061#fontello') format('svg');
237
  font-weight: normal;
238
  font-style: normal;
239
  }
279
  <script>
280
  function toggleCodes(on) {
281
  var obj = document.getElementById('icons');
282
+
283
  if (on) {
284
  obj.className += ' codesOn';
285
  } else {
348
  <div title="Code: 0xe81e" class="the-icons span3"><i class="demo-icon icon-heart">&#xe81e;</i> <span class="i-name">icon-heart</span><span class="i-code">0xe81e</span></div>
349
  <div title="Code: 0xe81f" class="the-icons span3"><i class="demo-icon icon-chart-pie">&#xe81f;</i> <span class="i-name">icon-chart-pie</span><span class="i-code">0xe81f</span></div>
350
  </div>
351
+ <div class="row">
352
+ <div title="Code: 0xe820" class="the-icons span3"><i class="demo-icon icon-heart-broken">&#xe820;</i> <span class="i-name">icon-heart-broken</span><span class="i-code">0xe820</span></div>
353
+ <div title="Code: 0xe821" class="the-icons span3"><i class="demo-icon icon-eye-off">&#xe821;</i> <span class="i-name">icon-eye-off</span><span class="i-code">0xe821</span></div>
354
+ <div title="Code: 0xe822" class="the-icons span3"><i class="demo-icon icon-flash">&#xe822;</i> <span class="i-name">icon-flash</span><span class="i-code">0xe822</span></div>
355
+ </div>
356
  </div>
357
  <div class="container footer">Generated by <a href="http://fontello.com">fontello.com</a></div>
358
  </body>
admin/fontello/font/fontello.eot CHANGED
Binary file
admin/fontello/font/fontello.svg CHANGED
@@ -1,43 +1,80 @@
1
  <?xml version="1.0" standalone="no"?>
2
  <!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
3
  <svg xmlns="http://www.w3.org/2000/svg">
4
- <metadata>Copyright (C) 2015 by original authors @ fontello.com</metadata>
5
  <defs>
6
  <font id="fontello" horiz-adv-x="1000" >
7
  <font-face font-family="fontello" font-weight="400" font-stretch="normal" units-per-em="1000" ascent="850" descent="-150" />
8
  <missing-glyph horiz-adv-x="1000" />
9
- <glyph glyph-name="info-circled" unicode="&#xe800;" d="m454 810q190 2 326-130t140-322q2-190-131-327t-323-141q-190-2-327 131t-139 323q-4 190 130 327t324 139z m52-152q-42 0-65-24t-23-50q-2-28 15-44t49-16q38 0 61 22t23 54q0 58-60 58z m-120-594q30 0 84 26t106 78l-18 24q-48-36-72-36-14 0-4 38l42 160q26 96-22 96-30 0-89-29t-115-75l16-26q52 34 74 34 12 0 0-34l-36-152q-26-104 34-104z" horiz-adv-x="920" />
10
- <glyph glyph-name="ok-circle" unicode="&#xe801;" d="m465 797q184 0 315-131t131-316-131-315-315-132-316 132-131 315 131 316 316 131z m-70-653l348 348-79 79-269-268-126 126-79-78z" horiz-adv-x="928" />
11
- <glyph glyph-name="advanced-type" unicode="&#xe802;" d="m686 848l-372-560-249-373-62 0 0-62 249 0 0 62-125 0 168 249 395 0 59-249-63 0 0-62 311 0 0 62-62 0-249 933z m-307-560l210 311 72-311-282 0z" horiz-adv-x="1000" />
12
- <glyph glyph-name="devices" unicode="&#xe803;" d="m958-82l-164 0c-24 0-43 20-43 44l0 324c0 24 19 44 43 44l164 0c23 0 42-20 42-44l0-324c0-24-19-44-42-44z m-82 22c10 0 18 8 18 18 0 10-8 19-18 19-10 0-18-9-18-19 0-10 8-18 18-18z m73 337l-147 0 0-280 147 0 0 280z m-157 345l-6 0 0 37c0 10-7 17-16 17l-614 0 0-488 198 0 0-106-236 0c-65 0-118 55-118 123l0 454c0 68 53 123 118 123l652 0c65 0 118-55 118-123l0-80c-24 27-58 43-96 43z m-709-146c-23 0-42-20-42-44 0-24 19-44 42-44 23 0 42 20 42 44 0 24-19 44-42 44z m402 88l307 0c45 0 81-37 81-84l0-111-67 0 0 111c0 8-6 14-14 14l-307 0c-7 0-13-6-13-14l0-443 237 0 0-80c0-6 1-12 2-17 1-8 4-15 7-22l-233 0c-44 0-81 38-81 85l0 477c0 47 37 84 81 84z m154-615c16 0 28 14 28 30 0 17-12 30-28 30-16 0-29-13-29-30 0-16 13-30 29-30z" horiz-adv-x="1000" />
13
- <glyph glyph-name="extension-browser" unicode="&#xe804;" d="m779 207l0 57 221 0 0-57-221 0z m0 435l221 0 0-57-221 0 0 57z m-56-453l0 94 0 284 0 94 0 189 37 0 0-38 0-756 0-56-37 0 0 189z m-442 39l0 376c9 22 251 220 277 227l147 0 0-812-147 0c-30 7-263 183-277 209z m-183 92c-16-56 66-138 95-178 54-73 161-220 39-286-52-28-103 51-50 79 48 26-158 279-174 336-49 173 133 185 254 193l0-91c-65 1-148 3-164-53z" horiz-adv-x="1000" />
14
- <glyph glyph-name="general-settings" unicode="&#xe805;" d="m974 796c-17 17-39 26-63 26-24 0-46-9-63-26l-397-397 126-126 397 397c35 35 35 91 0 126z m-36-71l-341-341c-5-5-11-8-18-8-6 0-12 3-17 8-10 9-10 25 0 35l341 341c10 10 25 10 35 0 10-10 10-25 0-35z m24-666l-265 264-85-85 13-13c10-10 10-25 0-35-5-5-11-7-17-7-7 0-13 2-18 7l-30 31c0 0 0 0 0 0l-63 62 0 0-35 36 0 0-63 62 0 0-31 31c-9 10-9 25 0 35 10 10 26 10 35 0l13-13 85 85-76 76c14 69-8 142-59 192-40 41-94 63-151 63-21 0-41-3-61-9-8-2-15-9-17-17-2-9 1-18 7-24l82-82c17-17 17-45 0-63l-31-30c-9-9-20-13-32-13-12 0-23 4-31 13l-82 81c-6 7-15 9-24 7-8-2-15-9-17-17-24-82 3-170 68-225 39-33 88-51 138-51 13 0 27 2 41 4l156-156-255-254-14 13c-5 6-12 8-20 8-7-1-14-5-18-11l-72-107c-7-10-6-23 3-32l28-28c4-5 11-7 17-7 5 0 10 1 14 4l107 73c6 4 10 10 11 18 0 7-2 15-7 20l-14 13 255 255 344-345c23-22 53-35 86-35 32 0 62 13 85 35 47 47 47 124 0 171z m-50-121c-12-12-28-18-44-18-17 0-33 6-45 18-24 25-24 64 0 89 12 12 28 18 45 18 16 0 32-6 44-18 24-25 24-64 0-89z" horiz-adv-x="1000" />
15
- <glyph glyph-name="infinity-cache" unicode="&#xe806;" d="m229 90c142 0 235 124 318 234 71 94 138 182 219 182 85 0 137-93 137-160 0-62-57-152-147-152-86 0-131 74-134 78-14 25-43 32-66 17-23-15-31-47-17-71 3-6 75-128 217-128 144 0 244 135 244 256 0 125-96 264-234 264-128 0-212-112-294-221-76-100-148-195-243-195-57 0-94 21-114 63-18 37-18 79-18 93 0 8 4 50 23 87 22 43 52 63 97 63 89 0 137-62 155-86 5-6 8-10 12-14 21-19 52-17 69 5 17 21 15 53-3 72-1 1-2 2-3 4-24 30-96 123-230 123-164 0-217-171-217-255 0-53 9-100 28-139 26-55 81-120 201-120z" horiz-adv-x="1000" />
16
- <glyph glyph-name="mobile-phone" unicode="&#xe807;" d="m773-127l-546 0c-33 0-60 27-60 60l0 834c0 33 27 60 60 60l546 0c33 0 60-27 60-60l0-834c0-33-27-60-60-60z m-273 43c26 0 47 21 47 47 0 25-21 46-47 46-26 0-47-21-47-46 0-26 21-47 47-47z m-273 791l0-655 546 0 0 47-543 0 0 552 543 0 0 56-546 0z m524-576l0 489-490 0 0-489 490 0z m-47 372l-395 0 0 69 395 0 0-69z m0-108l-395 0 0 69 395 0 0-69z m0-108l-395 0 0 68 395 0 0-68z m0-109l-395 0 0 69 395 0 0-69z" horiz-adv-x="1000" />
17
- <glyph glyph-name="multi-ads" unicode="&#xe808;" d="m917-107l-772 0c0 0 0 0 0 0l-14 0c-13-8-30-9-45-1-2 0-5 0-7 1l-57 0c-11 0-21 9-21 21l0 21c0 2 0 3 0 4l0 19c-1 7-1 13 0 20l0 32c0 1 0 2 0 4l0 815c0 12 10 21 21 21l123 0c11 0 20-9 20-21l0-563 276 474c13 22 41 30 64 17l61-35c22-13 30-42 17-64l-262-452 461 265c23 13 51 6 64-17l36-60c12-23 5-51-18-64l-476-274 529 0c26 0 47-21 47-46l0-71c0-25-21-46-47-46z" horiz-adv-x="1000" />
18
- <glyph glyph-name="related-posts" unicode="&#xe809;" d="m673 244l-100 100 242 241c27 28 27 73 0 100-28 28-73 28-100 0l-55-54-100 100 54 55c83 82 218 82 301 0 82-83 82-218 0-301l-242-241z m-167 200l-241 241c-28 28-73 28-100 0-28-27-28-72 0-100l54-54-100-100-55 54c-82 83-82 218 0 301 83 82 218 82 301 0l241-242-100-100z m-200 33l100-100-241-241c-28-28-28-73 0-101 27-27 72-27 100 0l54 55 100-100-54-55c-42-41-96-62-150-62-55 0-109 21-151 62-82 83-82 218 0 301l242 241z m167-200l242-242c27-27 72-27 100 0 27 28 27 73 0 101l-55 54 100 100 55-54c82-83 82-218 0-301-42-41-96-62-150-62-55 0-109 21-151 62l-241 242 100 100z" horiz-adv-x="1000" />
19
- <glyph glyph-name="responsive-images" unicode="&#xe80a;" d="m994 498l-151-310c-2-5-7-6-12-4l-34 16 0 107 56-26 99 204-317 148-59-120-43 0 80 164c2 4 7 6 11 4l366-172c4-2 6-7 4-11z m-634 137l-317-148 99-204 56 26 0-107-35-16c-4-2-9-1-11 4l-151 310c-2 4 0 9 4 11l366 172c4 2 9 0 11-4l80-164-44 0-58 120z m-112-150l514 0c7 0 11-4 11-10l0-437c0-6-4-11-11-11l-514 0c-6 0-11 5-11 11l0 437c0 6 5 10 11 10z m38-335l78 0c0 0 57 223 116 166 59-58 80-166 80-166 0 0 21 96 62 106 36 9 59-58 78-106l33 0 0 287-447 0 0-287z m368 197c-11 0-21 2-29 5-6-1-14-2-22-2-28 0-51 9-51 20 0 9 16 17 38 19 1 9 8 16 17 16l7 0c5 0 9-2 12-5 8 3 17 5 28 5 26 0 48-13 48-29 0-16-22-29-48-29z m-296-7c-20 0-36 16-36 35 0 20 16 36 36 36 21 0 37-16 37-36 0-19-16-35-37-35z" horiz-adv-x="1000" />
20
- <glyph glyph-name="book-open" unicode="&#xe80b;" d="m340 238l0-68-200 80 0 68z m0 208l0-68-200 80 0 68z m538 346q22-12 22-42l0-640q0-34-32-46l-398-160q-8-2-10-2t-5-1-5-1-5 1-5 1l-10 2-398 160q-32 12-32 46l0 640q0 30 22 42 22 16 46 6l382-154 382 154q24 10 46-6z m-478-788l0 560-320 128 0-560z m420 128l0 560-320-128 0-560z m-60 186l0-68-200-80 0 68z m0 208l0-68-200-80 0 68z" horiz-adv-x="900" />
21
- <glyph glyph-name="site-compatibility" unicode="&#xe80c;" d="m856 374c16-28 48-44 81-38 41 7 69 48 62 90-7 42-47 71-89 63-33-6-58-32-63-64l-212-38c-4 17-12 33-21 46l135 164c30-11 65-3 86 23 28 33 23 82-9 110-33 28-81 23-109-10-21-26-23-62-7-89l-134-162c-15 10-32 17-50 21l0 209c30 10 51 39 51 73 0 43-34 78-77 78-42 0-77-35-77-78 0-34 22-63 52-73l0-209c-19-4-36-11-51-21l-134 162c16 27 15 63-7 89-27 33-76 38-108 10-33-28-37-77-10-110 22-26 56-34 86-23l136-164c-10-13-18-29-22-46l-212 38c-5 32-29 58-62 64-42 8-82-21-90-63-7-42 21-83 63-90 33-6 65 10 80 38l217-39c1-15 5-29 11-43l-194-113c-24 21-59 25-88 8-37-22-50-69-28-107 21-37 68-50 105-28 29 17 43 50 37 82l197 115c10-9 20-17 32-24l-79-219c-32 0-62-19-73-51-15-41 6-86 46-100 40-15 84 6 99 46 11 32 1 67-24 87l80 221c6 0 12-1 18-1 6 0 13 1 19 1l79-221c-24-20-35-55-23-87 14-40 58-61 98-46 40 14 61 59 46 100-11 32-41 51-73 51l-79 219c12 7 23 15 32 24l197-115c-5-32 9-65 38-82 36-22 84-9 105 28 21 38 8 85-28 107-29 17-65 13-89-8l-194 113c6 14 10 28 12 43l216 39z" horiz-adv-x="1000" />
22
- <glyph glyph-name="theme-browser" unicode="&#xe80d;" d="m966 380l-116-92-164 203 116 93c5 4 12 6 18 6 9 0 17-4 23-11l127-158c11-12 8-31-4-41z m-336 153l-229 128 73 128c5 9 15 15 25 15 5 0 10-1 15-4l177-99c7-4 12-10 14-17 2-8 1-16-3-22l-72-129z m-120-212l-175 97 0 125 39 69 229-127-93-164z m-167-362l30 54 52-64-116-93c-5-4-12-6-18-6-9 0-18 4-23 11l-19 23 42 0c29 0 52 23 52 52l0 23z m-74-54l-215 0c-17 0-31 14-31 31l0 155 277 0 0-155c0-17-14-31-31-31z m-107 121c-16 0-29-12-29-28 0-15 13-28 29-28 15 0 28 13 28 28 0 16-13 28-28 28z m-139 322l277 0 0-198-277 0 0 198z m0 257l277 0 0-198-277 0 0 198z m0 214c0 17 14 31 31 31l215 0c17 0 31-14 31-31l0-155-277 0 0 155z m312-743l28-16-28-50 0 66z m0 279l148-83-93-164-55 31 0 216z m167-113l114-141-148-118-66 82 100 177z m106 187l35 28 2-3 162-201-148-117-127 158 76 135z" horiz-adv-x="1000" />
23
- <glyph glyph-name="theme-customizer" unicode="&#xe80e;" d="m768 399l-38 0-45 0 13 152c17 15 42 46 51 98 17 112-101 194-106 197-8 6-19 5-27-2-7-7-10-18-5-28 0 0 21-47 1-67-10-11-18-16-26-20-19-11-33-22-41-57-11-41 7-81 18-100l-40-173-60 0-17 196c0 0 0 0 0 0 0 2-1 3-1 4 0 1 0 1 0 1 0 1-1 2-1 3l-79 173-1 2 0 0 0 0c-1 1-1 1-1 1-2 5-7 9-12 11-3 1-6 2-10 2 0 0 0 0 0 0-3-1-6-2-9-4 0 0 0 0-1 0 0 0-1-1-1-1-1 0-1-1-1-1-1 0-1-1-1-1-1 0-1-1-2-1 0-1 0-1 0-1-1-1-1-1-2-2 0 0 0 0 0-1 0-1-1-1-1-2 0-1 0-1 0-1-1-1-1-2-2-3l-47-190c-1-1-1-2-1-3 0 0 0-1 0-1 0-1 0-2 0-4 0 0 0 0 0 0l16-177-21 0-36 0c-13 0-23-11-23-24 0-13 10-23 23-23l16 0 57-481c1-12 11-21 22-21l344 0c11 0 21 9 22 21l57 481 18 0c13 0 23 10 23 23 0 13-10 24-23 24z m-164 149l3-1 45-7-12-141-71 0 35 149z m-264 116l25 3 24-54-63-8 14 59z m-1-105l45 6 15-166-46 0-14 160z" horiz-adv-x="1000" />
24
- <glyph glyph-name="theme-settings" unicode="&#xe80f;" d="m980 265l-121-23c-7-25-17-48-29-71l69-101c6-9 5-23-3-31l-86-86c-8-8-22-10-32-3l-101 69c-22-12-46-22-71-29l-23-120c-2-11-13-20-24-20l-122 0c-11 0-22 9-24 20l-23 121c-24 8-47 17-68 29l-100-69c-10-6-24-5-32 3l-86 86c-8 8-9 22-3 32l69 100c-12 22-22 46-29 70l-121 23c-11 2-20 13-20 24l0 122c0 11 9 22 20 25l121 22c7 24 16 47 28 69l-69 101c-7 10-5 24 3 32l86 86c8 8 22 9 31 3l101-69c22 12 45 21 69 29l23 121c2 11 13 20 24 20l122 0c11 0 22-9 24-20l23-120c25-7 49-17 72-29l102 69c9 7 23 6 31-3l86-86c8-8 10-22 3-31l-69-102c11-22 21-46 28-70l121-22c11-3 20-14 20-25l0-122c0-11-9-22-20-24z m-480 294c-115 0-209-94-209-209 0-115 94-209 209-209 115 0 209 94 209 209 0 115-94 209-209 209z m0-295c-48 0-86 38-86 86 0 48 38 86 86 86 48 0 86-38 86-86 0-48-38-86-86-86z" horiz-adv-x="1000" />
25
- <glyph glyph-name="web-app-mode" unicode="&#xe810;" d="m5 251l0 132c0 12 10 22 23 22l237 0-103-176-134 0c-13 0-23 10-23 22z m169-270l-75-50c-11-7-18-3-16 9l10 87c1 12 11 16 22 10l58-32c11-7 11-17 1-24z m18 49l-58 33c-11 6-15 19-8 30l271 462c6 10 20 14 31 8l58-33c11-6 15-19 9-30l-272-462c-6-11-20-14-31-8z m207 199l103 176 60 0 84-176-247 0z m336-52c-23 11-140 275-170 344-30 69-120 252-91 266 21 10 96-134 152-220 56-87 173-310 187-336 14-25-14-46-29-53-16-6-25-13-49-1z m77-121l-35 54c-7 12-4 26 8 32l34 16c12 6 27 2 33-10l28-53c6-12 2-27-10-33l-24-14c-11-7-26-4-34 8z m130-144c-7 24-63 25-89 60-25 35-4 53 5 61 102 56 84-121 84-121z m53 339c0-12-10-22-23-22l-118 0c-2 7-4 14-7 20-4 6-11 20-22 41-16 29-39 71-63 115l210 0c13 0 23-10 23-22l0-132 0 0z" horiz-adv-x="1000" />
26
- <glyph glyph-name="js" unicode="&#xe811;" d="m917 766h-303c-1 0-3 0-4 0v84l-591-79v-840l591-81v86c1 0 3 0 4 0h303c35 0 64 29 64 64v702c0 36-29 64-64 64z m-663-436c0-63-29-84-74-83-11 0-25 2-34 6l5 39c7-2 15-4 24-4 19 0 32 9 32 43v137l47 2v-140z m94-87c-25 0-50 8-62 15l10 41c13-7 34-14 55-14 23-1 35 9 35 24 0 14-10 22-37 32-37 13-60 34-60 66 0 38 31 68 83 69 25 1 44-4 58-10l-12-42c-9 4-25 11-47 10-22 0-32-10-32-22 0-15 12-21 41-32 40-14 59-36 59-68 0-39-29-71-91-69z m596-243c0-15-12-27-27-27h-303c-1 0-3 0-4 0v86c8-15 22-27 39-33 18-6 41-5 57 1 21 9 33 26 36 51 0 2 0 31 0 84v81h-22-22l-1-81 0-80-1-4c-1-5-3-8-5-10-4-4-9-6-17-6-12 0-19 5-27 19-1 2-2 4-3 4 0 0-8-5-18-11l-16-10v665c1 1 3 1 4 1h303c15 0 27-13 27-28v-702z m-28 114c5-9 7-18 7-29 0-18-6-32-17-43-11-10-25-17-43-19-8-1-22-1-29 0-30 4-51 17-65 41-2 3-2 4-2 4 1 1 36 21 36 21 0 0 1-2 3-4 11-16 24-23 42-23 10 0 18 3 24 8 1 2 3 4 4 5 3 8 2 17-4 23-4 5-11 9-30 17-14 6-22 10-28 13-23 14-34 32-34 57 0 17 6 31 17 42 10 10 25 17 42 18 6 0 7 0 14 0 14-1 25-5 35-11 5-4 13-12 18-19 2-3 3-5 3-5 0-1-33-22-34-23 0 0-1 1-3 4-1 2-4 5-6 7-5 6-11 8-20 8-8 0-13-2-17-7-3-3-4-6-5-11 0-6 2-11 6-15 4-5 10-8 29-16 25-11 37-18 47-28 5-5 8-9 10-15z" horiz-adv-x="1000" />
27
- <glyph glyph-name="cancel-circled" unicode="&#xe812;" d="m420 770q174 0 297-123t123-297-123-297-297-123-297 123-123 297 123 297 297 123z m86-420l154 154-86 86-154-152-152 152-88-86 154-154-154-152 88-86 152 152 154-152 86 86z" horiz-adv-x="840" />
28
- <glyph glyph-name="plus-circled" unicode="&#xe813;" d="m420 770q174 0 297-123t123-297-123-297-297-123-297 123-123 297 123 297 297 123z m52-470l200 0 0 102-200 0 0 202-102 0 0-202-202 0 0-102 202 0 0-202 102 0 0 202z" horiz-adv-x="840" />
29
- <glyph glyph-name="check" unicode="&#xe814;" d="m249 0q-34 0-56 28l-180 236q-16 24-12 52t26 46 51 14 47-28l118-154 296 474q16 24 43 30t53-8q24-16 30-43t-8-53l-350-560q-20-32-56-32z" horiz-adv-x="667" />
30
- <glyph glyph-name="right-open-big" unicode="&#xe815;" d="m13-20l358 370-358 372q-26 26 0 48 26 26 48 0l392-394q24-26 0-50l-392-394q-22-26-48 0-26 22 0 48z" horiz-adv-x="465" />
31
- <glyph glyph-name="cloud307" unicode="&#xe816;" d="m808 475c-29 142-154 250-308 250-62 0-121-17-167-50l63-62c29 20 67 29 104 29 125 0 229-104 229-229v-21h63c71 0 125-54 125-125 0-46-25-88-67-109l63-62c54 37 87 100 87 171 0 108-87 200-192 208z m-683 196l117-113c-134-8-242-116-242-250 0-137 113-250 250-250h488l83-83 54 54-696 696-54-54z m196-196l333-333h-404c-92 0-167 75-167 166 0 92 75 167 167 167h71z" horiz-adv-x="1000" />
32
- <glyph glyph-name="left-open-big" unicode="&#xe817;" d="m452-20q26-26 0-48-26-26-48 0l-392 394q-24 24 0 50l392 394q22 26 48 0 26-22 0-48l-358-372z" horiz-adv-x="465" />
33
- <glyph glyph-name="megaphone" unicode="&#xe818;" d="m792 500q58-138 67-258t-39-140q-28-12-61 3t-65 40-99 41-149 8q-28-4-42-19t-6-37q22-56 46-108 4-10 24-22t24-20q14-34-22-46-50-22-102-40-30-10-54 42-32 76-58 132-6 12-34 17t-46 31q-30-10-38-14-34-12-74 12t-54 60q-17 32-5 79t43 61q126 52 213 108t124 103 59 92 25 78 15 59 36 36q48 20 130-70t142-228z m-28-300q8 4 10 38t-11 98-41 128q-28 66-67 123t-67 84-36 23-10-42 10-105 40-133 68-119 68-76 36-19z" horiz-adv-x="860" />
34
- <glyph glyph-name="tablet" unicode="&#xe819;" d="m613 788c55 0 98-45 98-100l0-675c0-56-43-101-98-101l-514 0c-55 0-99 45-99 101l0 675c0 55 44 100 99 100l514 0z m-22-720l0 600-471 0 0-600 471 0z m-235-123c28 0 48 22 48 47 0 28-20 48-48 48s-47-20-47-48c0-25 20-47 47-47z" horiz-adv-x="711" />
35
- <glyph glyph-name="alert" unicode="&#xe81a;" d="m885 234q20-16 16-33t-28-23l-78-22q-24-6-40-28t-14-48l4-82q2-24-14-34t-38 0l-86 44q-22 12-47 4t-35-30l-46-88q-12-22-29-23t-33 19l-50 78q-34 48-88 20l-122-70q-22-14-32-6t-2 32l54 164q8 24-4 44t-36 22l-106 12q-24 4-29 18t15 30l86 76q20 16 20 41t-20 41l-86 76q-20 16-16 33t28 23l78 22q24 6 41 28t15 48l-6 82q0 26 15 36t37 0l80-38q24-10 49-2t37 30l46 80q12 22 30 21t30-23l50-86q12-22 35-29t45 7l136 84q22 14 30 6t0-32l-60-170q-10-22 2-41t38-21l114-12q26-2 30-16t-16-30l-86-76q-18-16-18-41t18-41z m-384-92l0 104-100 0 0-104 100 0z m0 160l0 260-100 0 0-260 100 0z" horiz-adv-x="901" />
36
- <glyph glyph-name="mobile" unicode="&#xe81b;" d="m238-31c27 0 47 23 47 48 0 27-20 47-47 47s-48-20-48-47c0-25 20-48 48-48z m-154 794l307 0c50 0 84-34 84-81l0-670c0-42-34-75-75-75l-325 0c-41 0-75 33-75 75l0 670c0 47 34 81 84 81z m91-54c-9 0-15-7-15-16s6-16 15-16l125 0c9 0 15 7 15 16s-6 16-15 16l-125 0z m255-607l0 496-385 0 0-496 385 0z" horiz-adv-x="475" />
37
- <glyph glyph-name="key" unicode="&#xe81c;" d="m774 612q20-116-28-215t-150-117q-66-12-130-2l-118-194-70-12-104-166q-14-28-46-32l-76-14q-12-4-22 4t-12 22l-16 98q-8 30 12 56l258 386q-24 50-38 120-18 106 53 187t185 101q106 20 195-45t107-177z m-126-76q30 44 21 97t-51 83q-42 32-92 22t-80-54q-8-12-12-23t-1-20 5-16 13-17 18-15 22-16 23-17q6-4 22-16t23-16 19-12 19-8 17 1 18 8 16 19z" horiz-adv-x="780" />
38
- <glyph glyph-name="download-cloud" unicode="&#xe81d;" d="m714 332q0 8-5 13t-13 5h-125v196q0 8-5 13t-12 5h-108q-7 0-12-5t-5-13v-196h-125q-8 0-13-5t-5-13q0-8 5-13l196-196q5-5 13-5t13 5l196 196q5 6 5 13z m357-125q0-89-62-151t-152-63h-607q-103 0-177 73t-73 177q0 72 39 134t105 92q-1 17-1 24 0 118 84 202t202 84q87 0 159-49t105-129q40 35 93 35 59 0 101-42t42-101q0-43-23-77 72-17 119-76t46-133z" horiz-adv-x="1071.4" />
39
- <glyph glyph-name="heart" unicode="&#xe81e;" d="m380 18l-285 283c-66 65-95 137-95 200 0 109 73 182 183 182 102 0 137-48 197-117 60 69 95 117 198 117 110 0 182-73 182-182 0-63-29-135-95-200z" horiz-adv-x="760" />
40
- <glyph glyph-name="chart-pie" unicode="&#xe81f;" d="m429 353l304-304q-59-61-138-94t-166-34q-117 0-216 58t-155 156-58 215 58 215 155 156 216 58v-426z m104-3h431q0-88-33-167t-94-138z m396 71h-429v429q117 0 215-57t156-156 58-216z" horiz-adv-x="1000" />
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
41
  </font>
42
  </defs>
43
  </svg>
1
  <?xml version="1.0" standalone="no"?>
2
  <!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
3
  <svg xmlns="http://www.w3.org/2000/svg">
4
+ <metadata>Copyright (C) 2016 by original authors @ fontello.com</metadata>
5
  <defs>
6
  <font id="fontello" horiz-adv-x="1000" >
7
  <font-face font-family="fontello" font-weight="400" font-stretch="normal" units-per-em="1000" ascent="850" descent="-150" />
8
  <missing-glyph horiz-adv-x="1000" />
9
+ <glyph glyph-name="info-circled" unicode="&#xe800;" d="M454 810q190 2 326-130t140-322q2-190-131-327t-323-141q-190-2-327 131t-139 323q-4 190 130 327t324 139z m52-152q-42 0-65-24t-23-50q-2-28 15-44t49-16q38 0 61 22t23 54q0 58-60 58z m-120-594q30 0 84 26t106 78l-18 24q-48-36-72-36-14 0-4 38l42 160q26 96-22 96-30 0-89-29t-115-75l16-26q52 34 74 34 12 0 0-34l-36-152q-26-104 34-104z" horiz-adv-x="920" />
10
+
11
+ <glyph glyph-name="ok-circle" unicode="&#xe801;" d="M465 797q184 0 315-131t131-316-131-315-315-132-316 132-131 315 131 316 316 131z m-70-653l348 348-79 79-269-268-126 126-79-78z" horiz-adv-x="928" />
12
+
13
+ <glyph glyph-name="advanced-type" unicode="&#xe802;" d="M686 848l-372-560-249-373-62 0 0-62 249 0 0 62-125 0 168 249 395 0 59-249-63 0 0-62 311 0 0 62-62 0-249 933z m-307-560l210 311 72-311-282 0z" horiz-adv-x="1000" />
14
+
15
+ <glyph glyph-name="devices" unicode="&#xe803;" d="M958-82l-164 0c-24 0-43 20-43 44l0 324c0 24 19 44 43 44l164 0c23 0 42-20 42-44l0-324c0-24-19-44-42-44z m-82 22c10 0 18 8 18 18 0 10-8 19-18 19-10 0-18-9-18-19 0-10 8-18 18-18z m73 337l-147 0 0-280 147 0 0 280z m-157 345l-6 0 0 37c0 10-7 17-16 17l-614 0 0-488 198 0 0-106-236 0c-65 0-118 55-118 123l0 454c0 68 53 123 118 123l652 0c65 0 118-55 118-123l0-80c-24 27-58 43-96 43z m-709-146c-23 0-42-20-42-44 0-24 19-44 42-44 23 0 42 20 42 44 0 24-19 44-42 44z m402 88l307 0c45 0 81-37 81-84l0-111-67 0 0 111c0 8-6 14-14 14l-307 0c-7 0-13-6-13-14l0-443 237 0 0-80c0-6 1-12 2-17 1-8 4-15 7-22l-233 0c-44 0-81 38-81 85l0 477c0 47 37 84 81 84z m154-615c16 0 28 14 28 30 0 17-12 30-28 30-16 0-29-13-29-30 0-16 13-30 29-30z" horiz-adv-x="1000" />
16
+
17
+ <glyph glyph-name="extension-browser" unicode="&#xe804;" d="M779 207l0 57 221 0 0-57-221 0z m0 435l221 0 0-57-221 0 0 57z m-56-453l0 94 0 284 0 94 0 189 37 0 0-38 0-756 0-56-37 0 0 189z m-442 39l0 376c9 22 251 220 277 227l147 0 0-812-147 0c-30 7-263 183-277 209z m-183 92c-16-56 66-138 95-178 54-73 161-220 39-286-52-28-103 51-50 79 48 26-158 279-174 336-49 173 133 185 254 193l0-91c-65 1-148 3-164-53z" horiz-adv-x="1000" />
18
+
19
+ <glyph glyph-name="general-settings" unicode="&#xe805;" d="M974 796c-17 17-39 26-63 26-24 0-46-9-63-26l-397-397 126-126 397 397c35 35 35 91 0 126z m-36-71l-341-341c-5-5-11-8-18-8-6 0-12 3-17 8-10 9-10 25 0 35l341 341c10 10 25 10 35 0 10-10 10-25 0-35z m24-666l-265 264-85-85 13-13c10-10 10-25 0-35-5-5-11-7-17-7-7 0-13 2-18 7l-30 31c0 0 0 0 0 0l-63 62 0 0-35 36 0 0-63 62 0 0-31 31c-9 10-9 25 0 35 10 10 26 10 35 0l13-13 85 85-76 76c14 69-8 142-59 192-40 41-94 63-151 63-21 0-41-3-61-9-8-2-15-9-17-17-2-9 1-18 7-24l82-82c17-17 17-45 0-63l-31-30c-9-9-20-13-32-13-12 0-23 4-31 13l-82 81c-6 7-15 9-24 7-8-2-15-9-17-17-24-82 3-170 68-225 39-33 88-51 138-51 13 0 27 2 41 4l156-156-255-254-14 13c-5 6-12 8-20 8-7-1-14-5-18-11l-72-107c-7-10-6-23 3-32l28-28c4-5 11-7 17-7 5 0 10 1 14 4l107 73c6 4 10 10 11 18 0 7-2 15-7 20l-14 13 255 255 344-345c23-22 53-35 86-35 32 0 62 13 85 35 47 47 47 124 0 171z m-50-121c-12-12-28-18-44-18-17 0-33 6-45 18-24 25-24 64 0 89 12 12 28 18 45 18 16 0 32-6 44-18 24-25 24-64 0-89z" horiz-adv-x="1000" />
20
+
21
+ <glyph glyph-name="infinity-cache" unicode="&#xe806;" d="M229 90c142 0 235 124 318 234 71 94 138 182 219 182 85 0 137-93 137-160 0-62-57-152-147-152-86 0-131 74-134 78-14 25-43 32-66 17-23-15-31-47-17-71 3-6 75-128 217-128 144 0 244 135 244 256 0 125-96 264-234 264-128 0-212-112-294-221-76-100-148-195-243-195-57 0-94 21-114 63-18 37-18 79-18 93 0 8 4 50 23 87 22 43 52 63 97 63 89 0 137-62 155-86 5-6 8-10 12-14 21-19 52-17 69 5 17 21 15 53-3 72-1 1-2 2-3 4-24 30-96 123-230 123-164 0-217-171-217-255 0-53 9-100 28-139 26-55 81-120 201-120z" horiz-adv-x="1000" />
22
+
23
+ <glyph glyph-name="mobile-phone" unicode="&#xe807;" d="M773-127l-546 0c-33 0-60 27-60 60l0 834c0 33 27 60 60 60l546 0c33 0 60-27 60-60l0-834c0-33-27-60-60-60z m-273 43c26 0 47 21 47 47 0 25-21 46-47 46-26 0-47-21-47-46 0-26 21-47 47-47z m-273 791l0-655 546 0 0 47-543 0 0 552 543 0 0 56-546 0z m524-576l0 489-490 0 0-489 490 0z m-47 372l-395 0 0 69 395 0 0-69z m0-108l-395 0 0 69 395 0 0-69z m0-108l-395 0 0 68 395 0 0-68z m0-109l-395 0 0 69 395 0 0-69z" horiz-adv-x="1000" />
24
+
25
+ <glyph glyph-name="multi-ads" unicode="&#xe808;" d="M917-107l-772 0c0 0 0 0 0 0l-14 0c-13-8-30-9-45-1-2 0-5 0-7 1l-57 0c-11 0-21 9-21 21l0 21c0 2 0 3 0 4l0 19c-1 7-1 13 0 20l0 32c0 1 0 2 0 4l0 815c0 12 10 21 21 21l123 0c11 0 20-9 20-21l0-563 276 474c13 22 41 30 64 17l61-35c22-13 30-42 17-64l-262-452 461 265c23 13 51 6 64-17l36-60c12-23 5-51-18-64l-476-274 529 0c26 0 47-21 47-46l0-71c0-25-21-46-47-46z" horiz-adv-x="1000" />
26
+
27
+ <glyph glyph-name="related-posts" unicode="&#xe809;" d="M673 244l-100 100 242 241c27 28 27 73 0 100-28 28-73 28-100 0l-55-54-100 100 54 55c83 82 218 82 301 0 82-83 82-218 0-301l-242-241z m-167 200l-241 241c-28 28-73 28-100 0-28-27-28-72 0-100l54-54-100-100-55 54c-82 83-82 218 0 301 83 82 218 82 301 0l241-242-100-100z m-200 33l100-100-241-241c-28-28-28-73 0-101 27-27 72-27 100 0l54 55 100-100-54-55c-42-41-96-62-150-62-55 0-109 21-151 62-82 83-82 218 0 301l242 241z m167-200l242-242c27-27 72-27 100 0 27 28 27 73 0 101l-55 54 100 100 55-54c82-83 82-218 0-301-42-41-96-62-150-62-55 0-109 21-151 62l-241 242 100 100z" horiz-adv-x="1000" />
28
+
29
+ <glyph glyph-name="responsive-images" unicode="&#xe80a;" d="M994 498l-151-310c-2-5-7-6-12-4l-34 16 0 107 56-26 99 204-317 148-59-120-43 0 80 164c2 4 7 6 11 4l366-172c4-2 6-7 4-11z m-634 137l-317-148 99-204 56 26 0-107-35-16c-4-2-9-1-11 4l-151 310c-2 4 0 9 4 11l366 172c4 2 9 0 11-4l80-164-44 0-58 120z m-112-150l514 0c7 0 11-4 11-10l0-437c0-6-4-11-11-11l-514 0c-6 0-11 5-11 11l0 437c0 6 5 10 11 10z m38-335l78 0c0 0 57 223 116 166 59-58 80-166 80-166 0 0 21 96 62 106 36 9 59-58 78-106l33 0 0 287-447 0 0-287z m368 197c-11 0-21 2-29 5-6-1-14-2-22-2-28 0-51 9-51 20 0 9 16 17 38 19 1 9 8 16 17 16l7 0c5 0 9-2 12-5 8 3 17 5 28 5 26 0 48-13 48-29 0-16-22-29-48-29z m-296-7c-20 0-36 16-36 35 0 20 16 36 36 36 21 0 37-16 37-36 0-19-16-35-37-35z" horiz-adv-x="1000" />
30
+
31
+ <glyph glyph-name="book-open" unicode="&#xe80b;" d="M340 238l0-68-200 80 0 68z m0 208l0-68-200 80 0 68z m538 346q22-12 22-42l0-640q0-34-32-46l-398-160q-8-2-10-2t-5-1-5-1-5 1-5 1l-10 2-398 160q-32 12-32 46l0 640q0 30 22 42 22 16 46 6l382-154 382 154q24 10 46-6z m-478-788l0 560-320 128 0-560z m420 128l0 560-320-128 0-560z m-60 186l0-68-200-80 0 68z m0 208l0-68-200-80 0 68z" horiz-adv-x="900" />
32
+
33
+ <glyph glyph-name="site-compatibility" unicode="&#xe80c;" d="M856 374c16-28 48-44 81-38 41 7 69 48 62 90-7 42-47 71-89 63-33-6-58-32-63-64l-212-38c-4 17-12 33-21 46l135 164c30-11 65-3 86 23 28 33 23 82-9 110-33 28-81 23-109-10-21-26-23-62-7-89l-134-162c-15 10-32 17-50 21l0 209c30 10 51 39 51 73 0 43-34 78-77 78-42 0-77-35-77-78 0-34 22-63 52-73l0-209c-19-4-36-11-51-21l-134 162c16 27 15 63-7 89-27 33-76 38-108 10-33-28-37-77-10-110 22-26 56-34 86-23l136-164c-10-13-18-29-22-46l-212 38c-5 32-29 58-62 64-42 8-82-21-90-63-7-42 21-83 63-90 33-6 65 10 80 38l217-39c1-15 5-29 11-43l-194-113c-24 21-59 25-88 8-37-22-50-69-28-107 21-37 68-50 105-28 29 17 43 50 37 82l197 115c10-9 20-17 32-24l-79-219c-32 0-62-19-73-51-15-41 6-86 46-100 40-15 84 6 99 46 11 32 1 67-24 87l80 221c6 0 12-1 18-1 6 0 13 1 19 1l79-221c-24-20-35-55-23-87 14-40 58-61 98-46 40 14 61 59 46 100-11 32-41 51-73 51l-79 219c12 7 23 15 32 24l197-115c-5-32 9-65 38-82 36-22 84-9 105 28 21 38 8 85-28 107-29 17-65 13-89-8l-194 113c6 14 10 28 12 43l216 39z" horiz-adv-x="1000" />
34
+
35
+ <glyph glyph-name="theme-browser" unicode="&#xe80d;" d="M966 380l-116-92-164 203 116 93c5 4 12 6 18 6 9 0 17-4 23-11l127-158c11-12 8-31-4-41z m-336 153l-229 128 73 128c5 9 15 15 25 15 5 0 10-1 15-4l177-99c7-4 12-10 14-17 2-8 1-16-3-22l-72-129z m-120-212l-175 97 0 125 39 69 229-127-93-164z m-167-362l30 54 52-64-116-93c-5-4-12-6-18-6-9 0-18 4-23 11l-19 23 42 0c29 0 52 23 52 52l0 23z m-74-54l-215 0c-17 0-31 14-31 31l0 155 277 0 0-155c0-17-14-31-31-31z m-107 121c-16 0-29-12-29-28 0-15 13-28 29-28 15 0 28 13 28 28 0 16-13 28-28 28z m-139 322l277 0 0-198-277 0 0 198z m0 257l277 0 0-198-277 0 0 198z m0 214c0 17 14 31 31 31l215 0c17 0 31-14 31-31l0-155-277 0 0 155z m312-743l28-16-28-50 0 66z m0 279l148-83-93-164-55 31 0 216z m167-113l114-141-148-118-66 82 100 177z m106 187l35 28 2-3 162-201-148-117-127 158 76 135z" horiz-adv-x="1000" />
36
+
37
+ <glyph glyph-name="theme-customizer" unicode="&#xe80e;" d="M768 399l-38 0-45 0 13 152c17 15 42 46 51 98 17 112-101 194-106 197-8 6-19 5-27-2-7-7-10-18-5-28 0 0 21-47 1-67-10-11-18-16-26-20-19-11-33-22-41-57-11-41 7-81 18-100l-40-173-60 0-17 196c0 0 0 0 0 0 0 2-1 3-1 4 0 1 0 1 0 1 0 1-1 2-1 3l-79 173-1 2 0 0 0 0c-1 1-1 1-1 1-2 5-7 9-12 11-3 1-6 2-10 2 0 0 0 0 0 0-3-1-6-2-9-4 0 0 0 0-1 0 0 0-1-1-1-1-1 0-1-1-1-1-1 0-1-1-1-1-1 0-1-1-2-1 0-1 0-1 0-1-1-1-1-1-2-2 0 0 0 0 0-1 0-1-1-1-1-2 0-1 0-1 0-1-1-1-1-2-2-3l-47-190c-1-1-1-2-1-3 0 0 0-1 0-1 0-1 0-2 0-4 0 0 0 0 0 0l16-177-21 0-36 0c-13 0-23-11-23-24 0-13 10-23 23-23l16 0 57-481c1-12 11-21 22-21l344 0c11 0 21 9 22 21l57 481 18 0c13 0 23 10 23 23 0 13-10 24-23 24z m-164 149l3-1 45-7-12-141-71 0 35 149z m-264 116l25 3 24-54-63-8 14 59z m-1-105l45 6 15-166-46 0-14 160z" horiz-adv-x="1000" />
38
+
39
+ <glyph glyph-name="theme-settings" unicode="&#xe80f;" d="M980 265l-121-23c-7-25-17-48-29-71l69-101c6-9 5-23-3-31l-86-86c-8-8-22-10-32-3l-101 69c-22-12-46-22-71-29l-23-120c-2-11-13-20-24-20l-122 0c-11 0-22 9-24 20l-23 121c-24 8-47 17-68 29l-100-69c-10-6-24-5-32 3l-86 86c-8 8-9 22-3 32l69 100c-12 22-22 46-29 70l-121 23c-11 2-20 13-20 24l0 122c0 11 9 22 20 25l121 22c7 24 16 47 28 69l-69 101c-7 10-5 24 3 32l86 86c8 8 22 9 31 3l101-69c22 12 45 21 69 29l23 121c2 11 13 20 24 20l122 0c11 0 22-9 24-20l23-120c25-7 49-17 72-29l102 69c9 7 23 6 31-3l86-86c8-8 10-22 3-31l-69-102c11-22 21-46 28-70l121-22c11-3 20-14 20-25l0-122c0-11-9-22-20-24z m-480 294c-115 0-209-94-209-209 0-115 94-209 209-209 115 0 209 94 209 209 0 115-94 209-209 209z m0-295c-48 0-86 38-86 86 0 48 38 86 86 86 48 0 86-38 86-86 0-48-38-86-86-86z" horiz-adv-x="1000" />
40
+
41
+ <glyph glyph-name="web-app-mode" unicode="&#xe810;" d="M5 251l0 132c0 12 10 22 23 22l237 0-103-176-134 0c-13 0-23 10-23 22z m169-270l-75-50c-11-7-18-3-16 9l10 87c1 12 11 16 22 10l58-32c11-7 11-17 1-24z m18 49l-58 33c-11 6-15 19-8 30l271 462c6 10 20 14 31 8l58-33c11-6 15-19 9-30l-272-462c-6-11-20-14-31-8z m207 199l103 176 60 0 84-176-247 0z m336-52c-23 11-140 275-170 344-30 69-120 252-91 266 21 10 96-134 152-220 56-87 173-310 187-336 14-25-14-46-29-53-16-6-25-13-49-1z m77-121l-35 54c-7 12-4 26 8 32l34 16c12 6 27 2 33-10l28-53c6-12 2-27-10-33l-24-14c-11-7-26-4-34 8z m130-144c-7 24-63 25-89 60-25 35-4 53 5 61 102 56 84-121 84-121z m53 339c0-12-10-22-23-22l-118 0c-2 7-4 14-7 20-4 6-11 20-22 41-16 29-39 71-63 115l210 0c13 0 23-10 23-22l0-132 0 0z" horiz-adv-x="1000" />
42
+
43
+ <glyph glyph-name="js" unicode="&#xe811;" d="M917 766h-303c-1 0-3 0-4 0v84l-591-79v-840l591-81v86c1 0 3 0 4 0h303c35 0 64 29 64 64v702c0 36-29 64-64 64z m-663-436c0-63-29-84-74-83-11 0-25 2-34 6l5 39c7-2 15-4 24-4 19 0 32 9 32 43v137l47 2v-140z m94-87c-25 0-50 8-62 15l10 41c13-7 34-14 55-14 23-1 35 9 35 24 0 14-10 22-37 32-37 13-60 34-60 66 0 38 31 68 83 69 25 1 44-4 58-10l-12-42c-9 4-25 11-47 10-22 0-32-10-32-22 0-15 12-21 41-32 40-14 59-36 59-68 0-39-29-71-91-69z m596-243c0-15-12-27-27-27h-303c-1 0-3 0-4 0v86c8-15 22-27 39-33 18-6 41-5 57 1 21 9 33 26 36 51 0 2 0 31 0 84v81h-22-22l-1-81 0-80-1-4c-1-5-3-8-5-10-4-4-9-6-17-6-12 0-19 5-27 19-1 2-2 4-3 4 0 0-8-5-18-11l-16-10v665c1 1 3 1 4 1h303c15 0 27-13 27-28v-702z m-28 114c5-9 7-18 7-29 0-18-6-32-17-43-11-10-25-17-43-19-8-1-22-1-29 0-30 4-51 17-65 41-2 3-2 4-2 4 1 1 36 21 36 21 0 0 1-2 3-4 11-16 24-23 42-23 10 0 18 3 24 8 1 2 3 4 4 5 3 8 2 17-4 23-4 5-11 9-30 17-14 6-22 10-28 13-23 14-34 32-34 57 0 17 6 31 17 42 10 10 25 17 42 18 6 0 7 0 14 0 14-1 25-5 35-11 5-4 13-12 18-19 2-3 3-5 3-5 0-1-33-22-34-23 0 0-1 1-3 4-1 2-4 5-6 7-5 6-11 8-20 8-8 0-13-2-17-7-3-3-4-6-5-11 0-6 2-11 6-15 4-5 10-8 29-16 25-11 37-18 47-28 5-5 8-9 10-15z" horiz-adv-x="1000" />
44
+
45
+ <glyph glyph-name="cancel-circled" unicode="&#xe812;" d="M420 770q174 0 297-123t123-297-123-297-297-123-297 123-123 297 123 297 297 123z m86-420l154 154-86 86-154-152-152 152-88-86 154-154-154-152 88-86 152 152 154-152 86 86z" horiz-adv-x="840" />
46
+
47
+ <glyph glyph-name="plus-circled" unicode="&#xe813;" d="M420 770q174 0 297-123t123-297-123-297-297-123-297 123-123 297 123 297 297 123z m52-470l200 0 0 102-200 0 0 202-102 0 0-202-202 0 0-102 202 0 0-202 102 0 0 202z" horiz-adv-x="840" />
48
+
49
+ <glyph glyph-name="check" unicode="&#xe814;" d="M249 0q-34 0-56 28l-180 236q-16 24-12 52t26 46 51 14 47-28l118-154 296 474q16 24 43 30t53-8q24-16 30-43t-8-53l-350-560q-20-32-56-32z" horiz-adv-x="667" />
50
+
51
+ <glyph glyph-name="right-open-big" unicode="&#xe815;" d="M13-20l358 370-358 372q-26 26 0 48 26 26 48 0l392-394q24-26 0-50l-392-394q-22-26-48 0-26 22 0 48z" horiz-adv-x="465" />
52
+
53
+ <glyph glyph-name="cloud307" unicode="&#xe816;" d="M808 475c-29 142-154 250-308 250-62 0-121-17-167-50l63-62c29 20 67 29 104 29 125 0 229-104 229-229v-21h63c71 0 125-54 125-125 0-46-25-88-67-109l63-62c54 37 87 100 87 171 0 108-87 200-192 208z m-683 196l117-113c-134-8-242-116-242-250 0-137 113-250 250-250h488l83-83 54 54-696 696-54-54z m196-196l333-333h-404c-92 0-167 75-167 166 0 92 75 167 167 167h71z" horiz-adv-x="1000" />
54
+
55
+ <glyph glyph-name="left-open-big" unicode="&#xe817;" d="M452-20q26-26 0-48-26-26-48 0l-392 394q-24 24 0 50l392 394q22 26 48 0 26-22 0-48l-358-372z" horiz-adv-x="465" />
56
+
57
+ <glyph glyph-name="megaphone" unicode="&#xe818;" d="M792 500q58-138 67-258t-39-140q-28-12-61 3t-65 40-99 41-149 8q-28-4-42-19t-6-37q22-56 46-108 4-10 24-22t24-20q14-34-22-46-50-22-102-40-30-10-54 42-32 76-58 132-6 12-34 17t-46 31q-30-10-38-14-34-12-74 12t-54 60q-17 32-5 79t43 61q126 52 213 108t124 103 59 92 25 78 15 59 36 36q48 20 130-70t142-228z m-28-300q8 4 10 38t-11 98-41 128q-28 66-67 123t-67 84-36 23-10-42 10-105 40-133 68-119 68-76 36-19z" horiz-adv-x="860" />
58
+
59
+ <glyph glyph-name="tablet" unicode="&#xe819;" d="M613 788c55 0 98-45 98-100l0-675c0-56-43-101-98-101l-514 0c-55 0-99 45-99 101l0 675c0 55 44 100 99 100l514 0z m-22-720l0 600-471 0 0-600 471 0z m-235-123c28 0 48 22 48 47 0 28-20 48-48 48s-47-20-47-48c0-25 20-47 47-47z" horiz-adv-x="711" />
60
+
61
+ <glyph glyph-name="alert" unicode="&#xe81a;" d="M885 234q20-16 16-33t-28-23l-78-22q-24-6-40-28t-14-48l4-82q2-24-14-34t-38 0l-86 44q-22 12-47 4t-35-30l-46-88q-12-22-29-23t-33 19l-50 78q-34 48-88 20l-122-70q-22-14-32-6t-2 32l54 164q8 24-4 44t-36 22l-106 12q-24 4-29 18t15 30l86 76q20 16 20 41t-20 41l-86 76q-20 16-16 33t28 23l78 22q24 6 41 28t15 48l-6 82q0 26 15 36t37 0l80-38q24-10 49-2t37 30l46 80q12 22 30 21t30-23l50-86q12-22 35-29t45 7l136 84q22 14 30 6t0-32l-60-170q-10-22 2-41t38-21l114-12q26-2 30-16t-16-30l-86-76q-18-16-18-41t18-41z m-384-92l0 104-100 0 0-104 100 0z m0 160l0 260-100 0 0-260 100 0z" horiz-adv-x="901" />
62
+
63
+ <glyph glyph-name="mobile" unicode="&#xe81b;" d="M238-31c27 0 47 23 47 48 0 27-20 47-47 47s-48-20-48-47c0-25 20-48 48-48z m-154 794l307 0c50 0 84-34 84-81l0-670c0-42-34-75-75-75l-325 0c-41 0-75 33-75 75l0 670c0 47 34 81 84 81z m91-54c-9 0-15-7-15-16s6-16 15-16l125 0c9 0 15 7 15 16s-6 16-15 16l-125 0z m255-607l0 496-385 0 0-496 385 0z" horiz-adv-x="475" />
64
+
65
+ <glyph glyph-name="key" unicode="&#xe81c;" d="M774 612q20-116-28-215t-150-117q-66-12-130-2l-118-194-70-12-104-166q-14-28-46-32l-76-14q-12-4-22 4t-12 22l-16 98q-8 30 12 56l258 386q-24 50-38 120-18 106 53 187t185 101q106 20 195-45t107-177z m-126-76q30 44 21 97t-51 83q-42 32-92 22t-80-54q-8-12-12-23t-1-20 5-16 13-17 18-15 22-16 23-17q6-4 22-16t23-16 19-12 19-8 17 1 18 8 16 19z" horiz-adv-x="780" />
66
+
67
+ <glyph glyph-name="download-cloud" unicode="&#xe81d;" d="M714 332q0 8-5 13t-13 5h-125v196q0 8-5 13t-12 5h-108q-7 0-12-5t-5-13v-196h-125q-8 0-13-5t-5-13q0-8 5-13l196-196q5-5 13-5t13 5l196 196q5 6 5 13z m357-125q0-89-62-151t-152-63h-607q-103 0-177 73t-73 177q0 72 39 134t105 92q-1 17-1 24 0 118 84 202t202 84q87 0 159-49t105-129q40 35 93 35 59 0 101-42t42-101q0-43-23-77 72-17 119-76t46-133z" horiz-adv-x="1071.4" />
68
+
69
+ <glyph glyph-name="heart" unicode="&#xe81e;" d="M380 18l-285 283c-66 65-95 137-95 200 0 109 73 182 183 182 102 0 137-48 197-117 60 69 95 117 198 117 110 0 182-73 182-182 0-63-29-135-95-200z" horiz-adv-x="760" />
70
+
71
+ <glyph glyph-name="chart-pie" unicode="&#xe81f;" d="M429 353l304-304q-59-61-138-94t-166-34q-117 0-216 58t-155 156-58 215 58 215 155 156 216 58v-426z m104-3h431q0-88-33-167t-94-138z m396 71h-429v429q117 0 215-57t156-156 58-216z" horiz-adv-x="1000" />
72
+
73
+ <glyph glyph-name="heart-broken" unicode="&#xe820;" d="M0 530q0 103 73 176t177 73q81 0 147-47l-14-250q0-12 9-20t21-9h10q12 0 18-8t3-20l-57-172q-4-12-2-13t9 8l194 267q7 9 4 16t-16 7h-77q-12 0-17 8t-1 18l82 183q57 32 124 32 103 0 177-73t73-176q0-94-63-166l-343-403q-25-31-62-31t-63 31l-342 403q-64 72-64 166z" horiz-adv-x="937.5" />
74
+
75
+ <glyph glyph-name="eye-off" unicode="&#xe821;" d="M0 326q6 49 64 110 79 80 176 128 129 61 260 61 29 0 59-2l74 129q10 16 23 18 4 0 8-2l51-32q17-7 2-33l-57-101-47-79-41-72-144-250-41-72-47-80-57-100q-15-25-31-15l-53 31q-15 8 0 33l49 86-8 4q-103 53-176 129-64 72-64 109z m264 0q0-74 47-133l48 84q-9 24-9 49 0 51 34 91t85 50l49 84-18 0q-98 0-167-66t-69-159z m177-295l41 71 18 0q98 0 167 65t69 159q0 74-47 133l63 109q2-2 4-3t4-1q103-52 176-128 64-73 64-110-6-49-64-109-79-80-176-129-129-61-260-61-25 0-59 4z m90 155l110 189q9-25 9-49 0-51-34-90t-85-50z" horiz-adv-x="1000" />
76
+
77
+ <glyph glyph-name="flash" unicode="&#xe822;" d="M598 349q23-12 26-39t-16-45l-391-370q-14-14-35-14-28 0-43 24t-6 49l113 270-220 128q-22 12-25 38t15 45l391 370q11 14 35 14 21 0 37-16t15-36q0-13-5-23l-111-267z" horiz-adv-x="624" />
78
  </font>
79
  </defs>
80
  </svg>
admin/fontello/font/fontello.ttf CHANGED
Binary file
admin/fontello/font/fontello.woff CHANGED
Binary file
admin/fontello/font/fontello.woff2 ADDED
Binary file
admin/images/auto-config.jpg ADDED
Binary file
admin/js/wptouch-admin-4.js CHANGED
@@ -687,9 +687,98 @@ function wptouchSetupFreeSettings(){
687
  }
688
  }
689
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
690
  function wptouchControlReturn(){
691
  // Intercept enter key, which strangely causes the first button in the DOM to be pressed
692
- // in our case this results in a backup file download
693
  jQuery( 'input' ).keypress( function ( e ) {
694
  if ( ( e.which && e.which == 13 ) || ( e.keyCode && e.keyCode == 13 ) ) {
695
  return false;
@@ -781,7 +870,7 @@ function wptouchAdminSetupSave(){
781
 
782
  if ( wptouchAdminForm.length ) {
783
  // Toggles, textareas & selects
784
- wptouchAdminForm.on( 'change.ajaxed', 'input[type="checkbox"]:not(#translate_admin):not(#multisite_control), textarea, select:not(#force_locale):not(#force_network_locale)', function(){
785
  wptouchTriggerSave();
786
  });
787
 
@@ -900,6 +989,8 @@ function wptouchAdminReady() {
900
  wptouchThemesExtensionsPanels();
901
 
902
  wptouchHandleResetSettings();
 
 
903
 
904
  wptouchControlReturn();
905
 
@@ -914,6 +1005,7 @@ function wptouchAdminReady() {
914
  wptouchThemesAddonsAjaxInstall();
915
 
916
  wptouchPreviewWindow();
 
917
  wptouchHandlePreviewWindow();
918
  }
919
 
687
  }
688
  }
689
 
690
+ function wptouchAdminMutisite(){
691
+
692
+ jQuery( '#multisite-select-all' ).on( 'click', function( e ){
693
+ jQuery( '#multisite-deploy-sites input:not(input:disabled)' ).prop( 'checked', 'checked' );
694
+ e.preventDefault();
695
+ });
696
+
697
+ jQuery( '#multisite-select-none' ).on( 'click', function( e ){
698
+ jQuery( '#multisite-deploy-sites input' ).prop( 'checked', '' );
699
+ e.preventDefault();
700
+ });
701
+
702
+ var deployment_modal = jQuery('[data-remodal-id=modal-deployment]').remodal();
703
+
704
+ jQuery( '#multisite-deploy' ).on( 'click', function( e ){
705
+ e.preventDefault();
706
+
707
+ if ( jQuery( '#multisite-deploy-sites input' ).is( ':checked' ) ) {
708
+ jQuery( '.deploy-to-sites' ).show();
709
+ jQuery( '.icon-ok-circle, .button-close' ).remove();
710
+ jQuery( 'p.deploy-text' ).text( jQuery( 'p.deploy-text' ).attr( 'data-text' ) );
711
+ deployment_modal.open();
712
+
713
+ }
714
+ });
715
+
716
+ jQuery( '#multisite_deployment_source' ).change( function(){
717
+ // what's the current selected site?
718
+ var currentSite = jQuery( this ).val();
719
+ // reset all checkboxes to enabled
720
+ jQuery( '#multisite-deploy-sites input' ).attr( 'disabled', false );
721
+ // disabled the selected site's checkbox and uncheck it
722
+ var destinationSite = jQuery( '#multisite-deploy-sites' ).find( 'input#site-' + currentSite );
723
+ destinationSite.prop( 'checked', false ).attr( 'disabled', true );
724
+ }).change();
725
+
726
+ jQuery( '.deploy-to-sites' ).on( 'click', function( e ){
727
+ jQuery( this ).hide();
728
+ e.preventDefault();
729
+
730
+ var sourceSite = jQuery( '#multisite_deployment_source' ).val();
731
+ var deployGeneral = jQuery( "#multisite_deploy_general_settings" ).is( ":checked" );
732
+ var deployCompat = jQuery( "#multisite_deploy_site_compat" ).is( ":checked" );
733
+ var deployDevices = jQuery( "#multisite_deploy_devices" ).is( ":checked" );
734
+ var deployMenus = jQuery( "#multisite_deploy_menus" ).is( ":checked" );
735
+ var deployThemes = jQuery( "#multisite_deploy_themes" ).is( ":checked" );
736
+ var deployExtensions = jQuery( "#multisite_deploy_extensions" ).is( ":checked" );
737
+ var deployColors = jQuery( "#multisite_deploy_colors" ).is( ":checked" );
738
+ var deploySocialMedia = jQuery( "#multisite_deploy_social_media" ).is( ":checked" );
739
+ var deploySocialSharing = jQuery( "#multisite_deploy_social_sharing" ).is( ":checked" );
740
+
741
+ var sites = [];
742
+
743
+ jQuery( '#multisite-deploy-sites input' ).each( function( index, value ) {
744
+ if ( jQuery( this ).is( ":checked" ) ) {
745
+ sites.push( jQuery( this ).attr( 'id' ) );
746
+ }
747
+ });
748
+
749
+ var ajaxParams = {
750
+ source_site: sourceSite,
751
+ deploy_general: deployGeneral ? '1' : '0',
752
+ deploy_compat: deployCompat ? '1' : '0',
753
+ deploy_devices: deployDevices ? '1' : '0',
754
+ deploy_menus: deployMenus ? '1' : '0',
755
+ deploy_themes: deployThemes ? '1' : '0',
756
+ deploy_extensions: deployExtensions ? '1' : '0',
757
+ deploy_colors: deployColors ? '1' : '0',
758
+ deploy_social_media: deploySocialMedia ? '1' : '0',
759
+ deploy_social_sharing: deploySocialSharing ? '1' : '0',
760
+ deploy_sites: sites
761
+ };
762
+
763
+ jQuery( 'p.deploy-text' ).text( jQuery( 'p.deploy-text' ).attr( 'data-deploying-text' ) );
764
+
765
+ wptouchAdminAjax( 'multisite_deploy', ajaxParams, function( result ) {
766
+ alert( result );
767
+ setTimeout( function(){
768
+ jQuery( 'p.deploy-text' )
769
+ .text( jQuery( 'p.deploy-text' ).attr( 'data-completed-text' ) )
770
+ .prepend( '<i class="icon-ok-circle"></i>' )
771
+ .append( '<br /><br /><button class="button button-close" data-remodal-action="cancel">Close</button>' );
772
+ }, 1000 );
773
+ });
774
+ });
775
+
776
+ }
777
+
778
+
779
  function wptouchControlReturn(){
780
  // Intercept enter key, which strangely causes the first button in the DOM to be pressed
781
+ // in our case this might result in a backup file download!
782
  jQuery( 'input' ).keypress( function ( e ) {
783
  if ( ( e.which && e.which == 13 ) || ( e.keyCode && e.keyCode == 13 ) ) {
784
  return false;
870
 
871
  if ( wptouchAdminForm.length ) {
872
  // Toggles, textareas & selects
873
+ wptouchAdminForm.on( 'change.ajaxed', 'input[type="checkbox"]:not(#translate_admin):not(#multisite_control):not(#wptouch-addon-deployment input), textarea, select:not(#force_locale):not(#force_network_locale):not(#wptouch-addon-deployment select)', function(){
874
  wptouchTriggerSave();
875
  });
876
 
989
  wptouchThemesExtensionsPanels();
990
 
991
  wptouchHandleResetSettings();
992
+
993
+ wptouchAdminMutisite();
994
 
995
  wptouchControlReturn();
996
 
1005
  wptouchThemesAddonsAjaxInstall();
1006
 
1007
  wptouchPreviewWindow();
1008
+
1009
  wptouchHandlePreviewWindow();
1010
  }
1011
 
admin/js/wptouch-admin-wizard.js CHANGED
@@ -94,7 +94,7 @@ function wptouchDoWizard(){
94
  if ( theme_selected ) {
95
  jQuery( '.actions li' ).removeClass( 'disabled' );
96
  jQuery.cookie( 'jQu3ry_5teps_St@te_wptouch-wizard-container', '4' );
97
- wptouchAdminAjax( 'wizard-theme', { 'theme': theme_selected }, wptouchReload );
98
  } else{
99
  jQuery( '.actions li' ).addClass( 'disabled' );
100
  return false;
@@ -165,6 +165,16 @@ function wptouchSetupSelects(){
165
  });
166
  }
167
 
 
 
 
 
 
 
 
 
 
 
168
  function wptouchWizardLicense(){
169
 
170
  if ( jQuery( '#activate-license a' ).length ){
@@ -186,19 +196,8 @@ function wptouchWizardLicense(){
186
  wptouchAdminAjax( 'activate-license-key', ajaxParams, function( result ) {
187
  if ( result == '1' ) {
188
  // license success
189
- bncHasLicense = 1;
190
- jQuery( '.activate-license .unlicensed' ).fadeOut( 'fast', function(){
191
- jQuery( '.activate-license .activated' ).show();
192
- jQuery( 'i.icon-ok-circle' ).addClass( 'flipInX' );
193
- jQuery( '.steps li.current' ).removeClass( 'error' );
194
- });
195
-
196
- // Animate Activation icon if it's there
197
- if ( jQuery( '#wptouch-wizard-container' ).has( 'i.icon-ok-circle' ) ) {
198
- setTimeout( function(){
199
- // wptouchReload();
200
- }, 500 );
201
- }
202
 
203
  } else {
204
  // rejected license
@@ -209,7 +208,7 @@ function wptouchWizardLicense(){
209
  licenseTextDiv.html( 'You have no licenses remaining to activate this site.<br />You can add <a href="http://www.wptouch-com/account">additional licenses</a> to your account and try again.' );
210
  } else if( result == '4' ){
211
  licenseTextDiv.html( 'The server is having an issue activating your license.<br />Please contact us at <a href="mailto:support@wtouch.com?subject=Cannot%20Reach%20WPtouch%20Server">support@wptouch.com</a> and let us know.' );
212
- }else if( result == '5' ){
213
  licenseTextDiv.html( 'Your license has expired.<br />Please <a href="//www.wptouch.com/renew">renew</a> to activate this site.' );
214
  }
215
 
@@ -322,6 +321,7 @@ function wptouchWizardDownloadUpload(){
322
 
323
  jQuery( document ).ready( function(){
324
  wptouchDoWizard();
 
325
  wptouchSetupSelects();
326
  wptouchWizardLicense();
327
  wptouchWizardThemeSelect();
94
  if ( theme_selected ) {
95
  jQuery( '.actions li' ).removeClass( 'disabled' );
96
  jQuery.cookie( 'jQu3ry_5teps_St@te_wptouch-wizard-container', '4' );
97
+ wptouchAdminAjax( 'wizard-theme', { 'theme': theme_selected }, wptouchContinue );
98
  } else{
99
  jQuery( '.actions li' ).addClass( 'disabled' );
100
  return false;
165
  });
166
  }
167
 
168
+ function wptouchLove(){
169
+ jQuery( '#wptouch_love' ).on( 'change', function(){
170
+ if ( !jQuery( this ).prop( 'checked' ) ) {
171
+ jQuery( 'i.heartbeat' ).removeClass( 'icon-heart' ).addClass( 'icon-heart-broken' );
172
+ } else {
173
+ jQuery( 'i.heartbeat' ).addClass( 'icon-heart' ).removeClass( 'icon-heart-broken' );
174
+ }
175
+ });
176
+ }
177
+
178
  function wptouchWizardLicense(){
179
 
180
  if ( jQuery( '#activate-license a' ).length ){
196
  wptouchAdminAjax( 'activate-license-key', ajaxParams, function( result ) {
197
  if ( result == '1' ) {
198
  // license success
199
+ bncHasLicense = 1;
200
+ wptouchReload();
 
 
 
 
 
 
 
 
 
 
 
201
 
202
  } else {
203
  // rejected license
208
  licenseTextDiv.html( 'You have no licenses remaining to activate this site.<br />You can add <a href="http://www.wptouch-com/account">additional licenses</a> to your account and try again.' );
209
  } else if( result == '4' ){
210
  licenseTextDiv.html( 'The server is having an issue activating your license.<br />Please contact us at <a href="mailto:support@wtouch.com?subject=Cannot%20Reach%20WPtouch%20Server">support@wptouch.com</a> and let us know.' );
211
+ } else if( result == '5' ){
212
  licenseTextDiv.html( 'Your license has expired.<br />Please <a href="//www.wptouch.com/renew">renew</a> to activate this site.' );
213
  }
214
 
321
 
322
  jQuery( document ).ready( function(){
323
  wptouchDoWizard();
324
+ wptouchLove();
325
  wptouchSetupSelects();
326
  wptouchWizardLicense();
327
  wptouchWizardThemeSelect();
admin/pages/custom/wptouch-admin-license.php CHANGED
@@ -89,7 +89,7 @@
89
  <?php } else { ?>
90
  <tr>
91
  <td><?php _e( 'Site License', 'wptouch-pro' ); ?>:</td>
92
- <td><?php echo $bncid_info->licensed_site; ?> | <a href="<?php echo add_query_arg( array( 'wptouch_license_action' => 'remove_license', 'wptouch_license_nonce' => wp_create_nonce( 'tsarbomba' ) ), $_SERVER[ 'REQUEST_URI' ] ) ; ?>" class="remove-license"><?php _e( 'Remove', 'wptouch-pro' ); ?></a></td>
93
  </tr>
94
  <tr>
95
  <td><?php _e( 'Licenses used', 'wptouch-pro' ); ?>:</td>
89
  <?php } else { ?>
90
  <tr>
91
  <td><?php _e( 'Site License', 'wptouch-pro' ); ?>:</td>
92
+ <td><?php echo $bncid_info->licensed_site; ?> | <a href="<?php echo add_query_arg( array( 'wptouch_license_action' => 'remove_license', 'wptouch_license_nonce' => wp_create_nonce( 'tsarbomba' ) ), $_SERVER[ 'REQUEST_URI' ] ) ; ?>" class="remove-license"><?php _e( 'Deactivate', 'wptouch-pro' ); ?></a></td>
93
  </tr>
94
  <tr>
95
  <td><?php _e( 'Licenses used', 'wptouch-pro' ); ?>:</td>
admin/pages/custom/wptouch-admin-wizard.php CHANGED
@@ -2,7 +2,7 @@
2
  $settings = array(
3
  'bncid' => wptouch_get_settings( 'bncid' ),
4
  'foundation' => wptouch_get_settings( 'foundation' ),
5
- 'wptouch_pro' => wptouch_get_settings( 'wptouch_pro')
6
  );
7
 
8
  global $wptouch_pro;
@@ -90,14 +90,14 @@
90
  <?php } ?>
91
  <span class="activated" <?php if ( !wptouch_has_license() ) { echo 'style="display:none"'; } ?>>
92
  <h2><?php _e( 'License Activation Complete','wptouch-pro' ); ?></h2>
93
- <i class="icon-ok-circle animated"></i>
94
  <p><?php echo sprintf( __( 'Thank you for purchasing a %s licence!', 'wptouch-pro' ), 'WPtouch Pro' ); ?></p>
95
  </span>
96
  </section>
97
  <?php if ( is_network_admin() ) { ?>
98
  <details>Multisite</details>
99
  <section class="multisite-panel">
100
- <h2><?php _e( 'Multisite Network Activation','wptouch-pro' ); ?></h2>
101
  <p><?php echo wptouchize_it( __( 'Since you have network activated WPtouch Pro, you can configure the way themes and extensions are controlled in your environment.', 'wptouch-pro' ) ); ?></p>
102
  <i class="icon-theme-settings"></i>
103
  <p><?php echo wptouchize_it( __( 'By default network activations of WPtouch Pro mean that the Network Admin controls theme and extension downloads and updates. You can also choose to allow sub-sites to behave like independent installations, and control themes and extensions themselves.','wptouch-pro' ) ); ?></p>
2
  $settings = array(
3
  'bncid' => wptouch_get_settings( 'bncid' ),
4
  'foundation' => wptouch_get_settings( 'foundation' ),
5
+ 'wptouch_pro' => wptouch_get_settings( 'wptouch_pro' )
6
  );
7
 
8
  global $wptouch_pro;
90
  <?php } ?>
91
  <span class="activated" <?php if ( !wptouch_has_license() ) { echo 'style="display:none"'; } ?>>
92
  <h2><?php _e( 'License Activation Complete','wptouch-pro' ); ?></h2>
93
+ <i class="icon-ok-circle animated flipInX"></i>
94
  <p><?php echo sprintf( __( 'Thank you for purchasing a %s licence!', 'wptouch-pro' ), 'WPtouch Pro' ); ?></p>
95
  </span>
96
  </section>
97
  <?php if ( is_network_admin() ) { ?>
98
  <details>Multisite</details>
99
  <section class="multisite-panel">
100
+ <h2><?php _e( 'Multisite Network','wptouch-pro' ); ?></h2>
101
  <p><?php echo wptouchize_it( __( 'Since you have network activated WPtouch Pro, you can configure the way themes and extensions are controlled in your environment.', 'wptouch-pro' ) ); ?></p>
102
  <i class="icon-theme-settings"></i>
103
  <p><?php echo wptouchize_it( __( 'By default network activations of WPtouch Pro mean that the Network Admin controls theme and extension downloads and updates. You can also choose to allow sub-sites to behave like independent installations, and control themes and extensions themselves.','wptouch-pro' ) ); ?></p>
admin/pages/wptouch-admin-general-settings.php CHANGED
@@ -5,9 +5,7 @@ if ( !defined( 'FOUNDATION_SETTING_DOMAIN' ) ) {
5
  if ( !wptouch_is_controlled_network() || ( wptouch_is_controlled_network() && is_network_admin() ) ) {
6
  add_filter( 'wptouch_admin_page_render_wptouch-admin-general-settings', 'wptouch_render_updates_page' );
7
  }
8
- if ( is_network_admin() ) {
9
- add_filter( 'wptouch_admin_page_render_wptouch-admin-general-settings', 'wptouch_render_multisite_page' );
10
- }
11
  add_filter( 'wptouch_admin_page_render_wptouch-admin-general-settings', 'wptouch_render_general_page' );
12
  add_filter( 'wptouch_admin_page_render_wptouch-admin-general-settings', 'wptouch_render_compat_page' );
13
  add_filter( 'wptouch_admin_page_render_wptouch-admin-general-settings', 'wptouch_render_devices_page' );
@@ -18,49 +16,10 @@ add_filter( 'wptouch_admin_page_render_wptouch-admin-general-settings', 'wptouch
18
  add_filter( 'wptouch_admin_page_render_wptouch-admin-general-settings', 'wptouch_render_addons' );
19
  add_filter( 'wptouch_admin_page_render_wptouch-admin-general-settings', 'wptouch_render_addon_settings' );
20
 
21
- function wptouch_render_multisite_page( $page_options ) {
22
- global $wptouch_pro;
23
-
24
- $settings = wptouch_get_settings();
25
-
26
- wptouch_add_sub_page( WPTOUCH_ADMIN_MULTISITE_SETUP, 'multisite-network-admin', $page_options );
27
-
28
- wptouch_add_page_section(
29
- WPTOUCH_ADMIN_MULTISITE_SETUP,
30
- __( 'Multisite Setup', 'wptouch-pro' ),
31
- 'mutisite-setup',
32
- array(
33
- wptouch_add_setting(
34
- 'list',
35
- 'force_network_locale',
36
- __( 'Admin Language', 'wptouch-pro' ),
37
- false,
38
- WPTOUCH_SETTING_BASIC,
39
- '3.0',
40
- wptouch_admin_get_languages(),
41
- 'wptouch_pro'
42
- ),
43
- wptouch_add_setting(
44
- 'checkbox',
45
- 'multisite_control',
46
- __( 'Control themes and extension downloads and updates', 'wptouch-pro' ),
47
- __( 'If enabled, sub-sites can only activate/deactivate themes and extensions that have been downloaded in the network admin.', 'wptouch-pro' ),
48
- WPTOUCH_SETTING_BASIC,
49
- '4.0',
50
- false,
51
- 'bncid'
52
- )
53
- ),
54
- $page_options
55
- );
56
-
57
- return $page_options;
58
- }
59
-
60
  function wptouch_render_updates_page( $page_options ) {
61
  global $wptouch_pro;
62
 
63
- if ( $wptouch_pro->theme_upgrades_available() || $wptouch_pro->extension_upgrades_available() ) {
64
  $settings = wptouch_get_settings();
65
 
66
  wptouch_add_sub_page( WPTOUCH_ADMIN_UPDATES_AVAILABLE, 'updates-available', $page_options );
@@ -592,7 +551,7 @@ function wptouch_render_menu_page( $page_options ) {
592
  WPTOUCH_ADMIN_MENU_MANAGE_ICON_SETS,
593
  __( 'Menu Options', 'wptouch-pro' ),
594
  'setup-menu-parent-items',
595
- array(
596
  wptouch_add_setting(
597
  'checkbox',
598
  'enable_parent_items',
@@ -609,7 +568,7 @@ function wptouch_render_menu_page( $page_options ) {
609
  WPTOUCH_SETTING_BASIC,
610
  '3.0'
611
  )
612
- ),
613
  $page_options,
614
  'wptouch_pro'
615
  );
5
  if ( !wptouch_is_controlled_network() || ( wptouch_is_controlled_network() && is_network_admin() ) ) {
6
  add_filter( 'wptouch_admin_page_render_wptouch-admin-general-settings', 'wptouch_render_updates_page' );
7
  }
8
+
 
 
9
  add_filter( 'wptouch_admin_page_render_wptouch-admin-general-settings', 'wptouch_render_general_page' );
10
  add_filter( 'wptouch_admin_page_render_wptouch-admin-general-settings', 'wptouch_render_compat_page' );
11
  add_filter( 'wptouch_admin_page_render_wptouch-admin-general-settings', 'wptouch_render_devices_page' );
16
  add_filter( 'wptouch_admin_page_render_wptouch-admin-general-settings', 'wptouch_render_addons' );
17
  add_filter( 'wptouch_admin_page_render_wptouch-admin-general-settings', 'wptouch_render_addon_settings' );
18
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
19
  function wptouch_render_updates_page( $page_options ) {
20
  global $wptouch_pro;
21
 
22
+ if ( $wptouch_pro->theme_upgrades_available() || $wptouch_pro->extension_upgrades_available() || wptouch_is_update_available() != WPTOUCH_VERSION ) {
23
  $settings = wptouch_get_settings();
24
 
25
  wptouch_add_sub_page( WPTOUCH_ADMIN_UPDATES_AVAILABLE, 'updates-available', $page_options );
551
  WPTOUCH_ADMIN_MENU_MANAGE_ICON_SETS,
552
  __( 'Menu Options', 'wptouch-pro' ),
553
  'setup-menu-parent-items',
554
+ apply_filters( 'wptouch_foundation_menu_options', array(
555
  wptouch_add_setting(
556
  'checkbox',
557
  'enable_parent_items',
568
  WPTOUCH_SETTING_BASIC,
569
  '3.0'
570
  )
571
+ ) ),
572
  $page_options,
573
  'wptouch_pro'
574
  );
admin/settings/html/auto_configure.php ADDED
@@ -0,0 +1,6 @@
 
 
 
 
 
 
1
+ <div class="new-in-four">
2
+ <img src="<?php echo WPTOUCH_ADMIN_URL; ?>/images/auto-config.jpg" alt="menu setup icon with phone and graphic" />
3
+ <?php
4
+ echo '<p>' . sprintf( __( 'This extension doesn’t currently require configuration. All of its settings are inherited from your WPtouch Pro configuration automatically.', 'wptouch-pro' ), '<br />', '<em>', '</em>' ) . '</p>';
5
+ ?>
6
+ </div>
admin/settings/html/extension-browser-item-detail.php CHANGED
@@ -1,10 +1,4 @@
1
- <?php
2
- if ( is_network_admin() ) {
3
- $activate_label = __( 'Install', 'wptouch-pro' );
4
- } else {
5
- $activate_label = __( 'Activate', 'wptouch-pro' );
6
- }
7
- ?>
8
  <div id="<?php echo wptouch_convert_to_class_name( wptouch_get_addon_title() ); ?>-container" class="view inner-view <?php wptouch_the_addon_classes(); ?>">
9
  <div class="back-link">
10
  <a href="#main-extension-panel" data-popview>
@@ -17,7 +11,6 @@
17
  <img src="<?php wptouch_the_addon_icon(); ?>" alt="<?php wptouch_the_addon_title(); ?>" />
18
  </div>
19
  <?php } ?>
20
-
21
  <h2>
22
  <?php wptouch_the_addon_title(); ?>
23
  <?php if ( wptouch_is_addon_active() && current_user_can( 'manage_options' ) ) { ?><i class="icon-ok-circle"></i><?php } ?>
@@ -26,20 +19,83 @@
26
 
27
  <p class="desc"><?php wptouch_the_addon_description(); ?></p>
28
 
29
- <?php if ( !is_network_admin() || wptouch_is_controlled_network() ) { ?>
30
  <div class="action-buttons<?php if ( !wptouch_can_cloud_install() ) { ?> no-install<?php } ?>">
 
 
 
 
 
 
 
 
 
 
 
 
 
 
31
 
32
- <?php if ( current_user_can( 'install_plugins' ) && !defined( 'WPTOUCH_IS_FREE' ) ) { ?>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
33
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
34
  <?php if ( wptouch_get_addon_buy_url() ) { ?>
35
  <?php if ( !is_multisite() || is_network_admin() ) { ?>
36
  <a class="button buynow" href="<?php wptouch_the_addon_buy_url(); ?>">
37
  <?php _e( 'Add to License', 'wptouch-pro' ); ?>
38
  </a>
39
  <?php } ?>
40
- <?php } elseif ( ( !wptouch_is_addon_active() && !is_network_admin() ) || wptouch_is_addon_in_cloud() ) { ?>
41
  <a class="button activate" href="<?php echo wptouch_check_url_ssl( wptouch_get_addon_activate_link_url() ); ?>">
42
- <?php echo $activate_label; ?>
43
  </a>
44
 
45
  <?php if ( !wptouch_can_cloud_install() && wptouch_get_addon_download_url() && !wptouch_get_addon_buy_url() && ( !wptouch_is_controlled_network() || is_network_admin() ) ) { ?>
@@ -48,12 +104,13 @@
48
  </a>
49
  <?php } ?>
50
 
51
- <?php } elseif ( !is_network_admin() ) { ?>
52
  <a class="button deactivate" href="<?php wptouch_the_addon_deactivate_link_url(); ?>"><?php _e( 'Deactivate', 'wptouch-pro' ); ?></a>
53
  <?php } ?>
54
  <?php } ?>
55
  </div>
56
  <?php } ?>
 
57
 
58
  </div>
59
 
1
+
 
 
 
 
 
 
2
  <div id="<?php echo wptouch_convert_to_class_name( wptouch_get_addon_title() ); ?>-container" class="view inner-view <?php wptouch_the_addon_classes(); ?>">
3
  <div class="back-link">
4
  <a href="#main-extension-panel" data-popview>
11
  <img src="<?php wptouch_the_addon_icon(); ?>" alt="<?php wptouch_the_addon_title(); ?>" />
12
  </div>
13
  <?php } ?>
 
14
  <h2>
15
  <?php wptouch_the_addon_title(); ?>
16
  <?php if ( wptouch_is_addon_active() && current_user_can( 'manage_options' ) ) { ?><i class="icon-ok-circle"></i><?php } ?>
19
 
20
  <p class="desc"><?php wptouch_the_addon_description(); ?></p>
21
 
22
+ <?php if ( current_user_can( 'install_plugins' ) && !defined( 'WPTOUCH_IS_FREE' ) ) { ?>
23
  <div class="action-buttons<?php if ( !wptouch_can_cloud_install() ) { ?> no-install<?php } ?>">
24
+ <?php if ( is_network_admin() ) { ?>
25
+ <?php if ( wptouch_is_controlled_network() || wptouch_is_multisite_extension() ) { ?>
26
+ <?php if ( !wptouch_is_addon_active() ) { ?>
27
+ <?php if ( wptouch_get_addon_buy_url() ) { ?>
28
+ <a class="button buynow" href="<?php wptouch_the_addon_buy_url(); ?>">
29
+ <?php _e( 'Add to License', 'wptouch-pro' ); ?>
30
+ </a>
31
+ <?php } else { ?>
32
+ <!-- Extension has been purchased -->
33
+ <?php if ( wptouch_can_cloud_install() || wptouch_is_multisite_extension() ) { ?>
34
+ <a class="button activate" href="<?php echo wptouch_check_url_ssl( wptouch_get_addon_activate_link_url() ); ?>">
35
+ <?php echo wptouch_get_activation_label(); ?>
36
+ </a>
37
+ <?php } ?>
38
 
39
+ <?php if ( !wptouch_can_cloud_install() ) { ?>
40
+ <a class="button activate" href="<?php echo wptouch_check_url_ssl( wptouch_get_addon_activate_link_url() ); ?>">
41
+ <?php } ?>
42
+ <?php } ?>
43
+ <?php } else { ?>
44
+ <!-- Plugin is active -->
45
+ <?php if ( wptouch_is_multisite_extension() ) { ?>
46
+ <a class="button deactivate" href="<?php wptouch_the_addon_deactivate_link_url(); ?>"><?php _e( 'Deactivate', 'wptouch-pro' ); ?></a>
47
+ <?php } ?>
48
+ <?php } ?>
49
+ <?php } ?>
50
+ <?php } else { ?>
51
+ <?php if ( !wptouch_is_addon_active() ) { ?>
52
+ <?php if ( wptouch_get_addon_buy_url() ) { ?>
53
+ <a class="button buynow" href="<?php wptouch_the_addon_buy_url(); ?>">
54
+ <?php _e( 'Add to License', 'wptouch-pro' ); ?>
55
+ </a>
56
+ <?php } else { ?>
57
+ <!-- Extension has been purchased -->
58
+ <?php if ( wptouch_can_cloud_install() ) { ?>
59
+ <?php if ( wptouch_is_multisite_extension() ) { ?>
60
+ <div><strong><?php _e( 'Must be activated from Network Admin', 'wptouch-pro' ); ?><strong></div>
61
+ <?php } else { ?>
62
+ <a class="button activate" href="<?php echo wptouch_check_url_ssl( wptouch_get_addon_activate_link_url() ); ?>">
63
+ <?php echo wptouch_get_activation_label(); ?>
64
+ </a>
65
+ <?php } ?>
66
+ <?php } ?>
67
 
68
+ <?php if ( !wptouch_can_cloud_install() ) { ?>
69
+ <a class="button activate" href="<?php echo wptouch_check_url_ssl( wptouch_get_addon_activate_link_url() ); ?>">
70
+ <?php } ?>
71
+ <?php } ?>
72
+ <?php } else { ?>
73
+ <!-- Plugin is active -->
74
+ <?php if ( !wptouch_is_multisite_extension() ) { ?>
75
+ <a class="button deactivate" href="<?php wptouch_the_addon_deactivate_link_url(); ?>"><?php _e( 'Deactivate', 'wptouch-pro' ); ?></a>
76
+ <?php } ?>
77
+ <?php } ?>
78
+ <?php } ?>
79
+ </div>
80
+ <?php } else { ?>
81
+ <div class="action-buttons<?php if ( !wptouch_can_cloud_install() ) { ?> no-install<?php } ?>">
82
+ <a class="button" href="<?php echo wptouch_addon_info_url(); ?>"><?php _e( 'Learn More', 'wptouch-pro' ); ?></a>
83
+ </div>
84
+ <?php } ?>
85
+
86
+ <?php /*
87
+ <?php if ( !is_network_admin() || wptouch_is_controlled_network() ) { ?>
88
+ <div class="action-buttons<?php if ( !wptouch_can_cloud_install() ) { ?> no-install<?php } ?>">
89
+ <?php if ( current_user_can( 'install_plugins' ) && !defined( 'WPTOUCH_IS_FREE' ) ) { ?>
90
  <?php if ( wptouch_get_addon_buy_url() ) { ?>
91
  <?php if ( !is_multisite() || is_network_admin() ) { ?>
92
  <a class="button buynow" href="<?php wptouch_the_addon_buy_url(); ?>">
93
  <?php _e( 'Add to License', 'wptouch-pro' ); ?>
94
  </a>
95
  <?php } ?>
96
+ <?php } elseif ( ( !wptouch_is_addon_active() && ( is_network_admin() && wptouch_is_multisite_extension() ) ) || wptouch_is_addon_in_cloud() ) { ?>
97
  <a class="button activate" href="<?php echo wptouch_check_url_ssl( wptouch_get_addon_activate_link_url() ); ?>">
98
+ <?php echo wptouch_get_activation_label(); ?>
99
  </a>
100
 
101
  <?php if ( !wptouch_can_cloud_install() && wptouch_get_addon_download_url() && !wptouch_get_addon_buy_url() && ( !wptouch_is_controlled_network() || is_network_admin() ) ) { ?>
104
  </a>
105
  <?php } ?>
106
 
107
+ <?php } elseif ( wptouch_is_multisite_extension() || ( !wptouch_is_multisite_extension() && !is_network_admin() ) ) { ?>
108
  <a class="button deactivate" href="<?php wptouch_the_addon_deactivate_link_url(); ?>"><?php _e( 'Deactivate', 'wptouch-pro' ); ?></a>
109
  <?php } ?>
110
  <?php } ?>
111
  </div>
112
  <?php } ?>
113
+ <?php */ ?>
114
 
115
  </div>
116
 
admin/settings/html/extension-browser-item.php CHANGED
@@ -1,4 +1,4 @@
1
- <li class="<?php wptouch_the_addon_classes(); ?> <?php if ( wptouch_get_addon_buy_url() ) { echo 'no-license'; } ?>" data-pushview="#<?php echo wptouch_convert_to_class_name( wptouch_get_addon_title() ); ?>-container">
2
  <div class="item-information">
3
  <?php if ( wptouch_get_addon_icon() ) { ?>
4
  <div class="image-wrapper">
1
+ <li class="<?php wptouch_the_addon_classes(); ?> <?php if ( wptouch_get_addon_buy_url() && !defined( 'WPTOUCH_IS_FREE') ) { echo 'no-license'; } ?>" data-pushview="#<?php echo wptouch_convert_to_class_name( wptouch_get_addon_title() ); ?>-container">
2
  <div class="item-information">
3
  <?php if ( wptouch_get_addon_icon() ) { ?>
4
  <div class="image-wrapper">
admin/settings/html/gopro.php CHANGED
@@ -1,7 +1,7 @@
1
  <?php $settings = wptouch_get_settings( 'bncid' ); ?>
2
  <?php if ( wptouch_is_path_writable( WP_PLUGIN_DIR ) && wptouch_is_path_writable( WPTOUCH_DIR ) ) { ?>
3
- <h3>WPtouch Pro License</h3>
4
- <p>If you have a licence for WPtouch Pro you can enter it here. </p>
5
  <div id="license-settings-area" class="wptouch-clearfix">
6
  <input class="license-inputs" type="text" placeholder="<?php _e( 'Account E-Mail Address', 'wptouch-pro' ); ?>" id="license_email" name="<?php echo wptouch_admin_get_manual_encoded_setting_name( 'bncid', 'bncid' ); ?>" value="<?php if ( $settings->bncid ) echo $settings->bncid; else ''; ?>" />
7
 
@@ -14,7 +14,7 @@
14
  <?php } ?>
15
 
16
  <div id="upgrade-area">
17
-
18
  </div>
19
 
20
  <?php include_once( WPTOUCH_ADMIN_DIR . '/html/license-modals.php' ); ?>
1
  <?php $settings = wptouch_get_settings( 'bncid' ); ?>
2
  <?php if ( wptouch_is_path_writable( WP_PLUGIN_DIR ) && wptouch_is_path_writable( WPTOUCH_DIR ) ) { ?>
3
+ <h3>Upgrade to WPtouch Pro</h3>
4
+ <p>If you have a licence for WPtouch Pro you can enter it here and automatically upgrade.</p>
5
  <div id="license-settings-area" class="wptouch-clearfix">
6
  <input class="license-inputs" type="text" placeholder="<?php _e( 'Account E-Mail Address', 'wptouch-pro' ); ?>" id="license_email" name="<?php echo wptouch_admin_get_manual_encoded_setting_name( 'bncid', 'bncid' ); ?>" value="<?php if ( $settings->bncid ) echo $settings->bncid; else ''; ?>" />
7
 
14
  <?php } ?>
15
 
16
  <div id="upgrade-area">
17
+ <!-- ajaxed -->
18
  </div>
19
 
20
  <?php include_once( WPTOUCH_ADMIN_DIR . '/html/license-modals.php' ); ?>
admin/settings/html/sites.php ADDED
@@ -0,0 +1 @@
 
1
+ <!-- used to inject sites -->
admin/settings/html/theme-browser-item-detail.php CHANGED
@@ -54,6 +54,8 @@
54
  <?php } ?>
55
 
56
  <?php } ?>
 
 
57
  <?php } ?>
58
  </div>
59
  <?php } ?>
54
  <?php } ?>
55
 
56
  <?php } ?>
57
+ <?php } else { ?>
58
+ <a class="button" href="<?php echo wptouch_theme_info_url(); ?>"><?php _e( 'Learn More', 'wptouch-pro' ); ?></a>
59
  <?php } ?>
60
  </div>
61
  <?php } ?>
admin/settings/html/theme-browser-item.php CHANGED
@@ -1,4 +1,4 @@
1
- <li class="<?php wptouch_the_theme_classes(); ?> <?php if ( wptouch_get_theme_buy_url() ) { echo 'no-license'; } ?>" data-pushview="#<?php echo wptouch_convert_to_class_name( wptouch_get_theme_title() ); ?>-container">
2
 
3
  <div class="item-information">
4
  <?php if ( wptouch_get_theme_icon() ) { ?>
1
+ <li class="<?php wptouch_the_theme_classes(); ?> <?php if ( wptouch_get_theme_buy_url() && !defined( 'WPTOUCH_IS_FREE') ) { echo 'no-license'; } ?>" data-pushview="#<?php echo wptouch_convert_to_class_name( wptouch_get_theme_title() ); ?>-container">
2
 
3
  <div class="item-information">
4
  <?php if ( wptouch_get_theme_icon() ) { ?>
admin/settings/html/updates-available.php CHANGED
@@ -7,9 +7,24 @@
7
  <button class="update-all" data-loading-text="<?php _e( 'Updating', 'wptouch-pro' ); ?>&hellip;"><?php _e( 'Update All', 'wptouch-pro' ); ?></button>
8
  <?php } ?>
9
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
10
  <?php if ( $wptouch_pro->theme_upgrades_available() ) { ?>
11
  <div class="updates-themes">
12
- <h3><?php _e( 'Themes', 'wptouch-pro' ); ?></h3>
13
  <ul>
14
  <?php while ( wptouch_has_themes( true ) ) { ?>
15
  <?php wptouch_the_theme(); ?>
@@ -37,7 +52,7 @@
37
 
38
  <?php if ( $wptouch_pro->extension_upgrades_available() ) { ?>
39
  <div class="updates-extensions">
40
- <h3><?php _e( 'Extensions', 'wptouch-pro' ); ?></h3>
41
  <ul>
42
  <?php while ( wptouch_has_addons( true ) ) { ?>
43
  <?php wptouch_the_addon(); ?>
7
  <button class="update-all" data-loading-text="<?php _e( 'Updating', 'wptouch-pro' ); ?>&hellip;"><?php _e( 'Update All', 'wptouch-pro' ); ?></button>
8
  <?php } ?>
9
 
10
+ <?php if ( function_exists( 'wptouch_is_update_available' ) && wptouch_is_update_available() != WPTOUCH_VERSION ) { ?>
11
+ <div class="updates-plugin">
12
+ <?php if ( $wptouch_pro->theme_upgrades_available() ) { ?><h3><?php _e( 'Core Plugin Updates', 'wptouch-pro' ); ?></h3><?php } ?>
13
+ <ul>
14
+ <li>
15
+ <h4>WPtouch Pro Plugin</h4>
16
+ <span class="update-version">
17
+ <?php echo sprintf( __( 'Upgrade to %s', 'wptouch-pro' ), wptouch_is_update_available() ); ?>
18
+ </span>
19
+ </li>
20
+ </ul>
21
+ </div>
22
+ <?php } ?>
23
+
24
+
25
  <?php if ( $wptouch_pro->theme_upgrades_available() ) { ?>
26
  <div class="updates-themes">
27
+ <h3><?php _e( 'Theme Updates', 'wptouch-pro' ); ?></h3>
28
  <ul>
29
  <?php while ( wptouch_has_themes( true ) ) { ?>
30
  <?php wptouch_the_theme(); ?>
52
 
53
  <?php if ( $wptouch_pro->extension_upgrades_available() ) { ?>
54
  <div class="updates-extensions">
55
+ <h3><?php _e( 'Extension Updates', 'wptouch-pro' ); ?></h3>
56
  <ul>
57
  <?php while ( wptouch_has_addons( true ) ) { ?>
58
  <?php wptouch_the_addon(); ?>
admin/settings/include/sites.php ADDED
@@ -0,0 +1,32 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ wptouch_admin_the_setting_desc();
4
+
5
+ echo '<div id="multisite-deploy-sites">';
6
+ $all_sites = wptouch_multisite_get_site_array();
7
+
8
+ foreach( $all_sites as $id => $value ) {
9
+ $lowercase = strtolower( $value );
10
+ $classnamed = preg_replace( '/[\s_]/', '-', $lowercase );
11
+
12
+ echo '<p><input type="checkbox" id="site-' . $id . '" class="site-check"></input>' . '<label for="site-' . $id . '">' . $value . '</label></p>';
13
+ }
14
+ echo "</div>";
15
+
16
+ echo '<div id="deploy-button-area">';
17
+ echo '<button id="multisite-select-all">' . __( 'Select All', 'wptouch-pro' ) . '</button>';
18
+ echo '<button id="multisite-select-none">' . __( 'Select None', 'wptouch-pro' ) . '</button>';
19
+ echo '<button id="multisite-deploy">' . __( 'Deploy to Sites', 'wptouch-pro' ) . '</button>';
20
+ echo '</div>';
21
+
22
+ ?>
23
+
24
+ <!-- Modals -->
25
+ <div class="remodal remodal-multisite" data-remodal-id="modal-deployment" data-remodal-options="hashTracking: false">
26
+ <button data-remodal-action="close" class="remodal-close"></button>
27
+ <div>
28
+ <h1><?php _e( 'Deployment', 'wptouch-pro' ); ?></h1>
29
+ <p class="deploy-text" data-text="<?php _e( 'WARNING: Deploying to sub sites will overwrite sub site WPtouch Pro settings.', 'wptouch-pro' ); ?>" data-deploying-text="<?php _e( 'Your selected options are being deployed to sub sites', 'wptouch-pro' ); ?>&hellip;" data-completed-text="<?php _e( 'Deploy Complete', 'wptouch-pro' ); ?>!"></p>
30
+ <button class="remodal-confirm deploy-to-sites"><?php _e( 'Deploy Now', 'wptouch-pro' ); ?></button>
31
+ </div>
32
+ </div>
core/admin-ajax.php CHANGED
@@ -1,6 +1,6 @@
1
  <?php
2
 
3
- function wptouch_admin_handle_ajax( $wptouch_pro, $ajax_action ) {
4
  switch( $ajax_action ) {
5
  case 'dismiss-warning':
6
  $wptouch_pro->check_plugins_for_warnings();
@@ -305,6 +305,175 @@ function wptouch_admin_handle_ajax( $wptouch_pro, $ajax_action ) {
305
  case 'go-pro':
306
  $result = wptouch_free_go_pro();
307
  echo $result;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
308
  break;
309
  default:
310
  do_action( 'wptouch_admin_ajax_' . $ajax_action, $wptouch_pro );
1
  <?php
2
 
3
+ function wptouch_admin_handle_ajax( &$wptouch_pro, $ajax_action ) {
4
  switch( $ajax_action ) {
5
  case 'dismiss-warning':
6
  $wptouch_pro->check_plugins_for_warnings();
305
  case 'go-pro':
306
  $result = wptouch_free_go_pro();
307
  echo $result;
308
+ break;
309
+ case 'multisite_deploy':
310
+ $source_site = $wptouch_pro->post[ 'source_site' ];
311
+
312
+ $current_blog_id = get_current_blog_id();
313
+
314
+ // Switch to the source site
315
+ if ( $current_blog_id != $source_site ) {
316
+ switch_to_blog( $source_site );
317
+
318
+ $wptouch_pro->settings_object = array();
319
+ }
320
+
321
+ $main_settings = $wptouch_pro->get_raw_settings( 'wptouch_pro' );
322
+ $foundation_settings = $wptouch_pro->get_raw_settings( 'foundation' );
323
+ $compat_settings = $wptouch_pro->get_raw_settings( 'compat' );
324
+
325
+ $colors = foundation_get_theme_colors();
326
+ $color_settings = array();
327
+
328
+ // Deploy color settings
329
+ foreach( $colors as $color ) {
330
+ if ( !isset( $color_settings[ $color->domain ] ) ) {
331
+ $new_settings = wptouch_get_settings( $color->domain );
332
+ $color_settings[ $color->domain ] = $new_settings;
333
+ }
334
+ }
335
+
336
+ $destination_sites = $wptouch_pro->post[ 'deploy_sites' ];
337
+ foreach( $destination_sites as $site ) {
338
+ $update_customizer = false;
339
+
340
+ $real_site = str_replace( 'site-', '', $site );
341
+
342
+ restore_current_blog();
343
+
344
+ switch_to_blog( $real_site );
345
+
346
+ $destination_main_settings = $wptouch_pro->get_raw_settings( 'wptouch_pro' );
347
+ $destination_foundation_settings = $wptouch_pro->get_raw_settings( 'foundation' );
348
+ $destination_compat_settings = $wptouch_pro->get_raw_settings( 'compat' );
349
+
350
+ if ( $wptouch_pro->post[ 'deploy_general' ] ) {
351
+ // Deploy general settings
352
+ $destination_main_settings->new_display_mode = $main_settings->new_display_mode;
353
+ $destination_main_settings->show_switch_link = $main_settings->show_switch_link;
354
+ $destination_foundation_settings->allow_zoom = $foundation_settings->allow_zoom;
355
+ $destination_foundation_settings->smart_app_banner = $foundation_settings->smart_app_banner;
356
+
357
+ $destination_main_settings->analytics_embed_method = $main_settings->analytics_embed_method;
358
+ $destination_main_settings->analytics_google_id = $main_settings->analytics_google_id;
359
+ $destination_main_settings->custom_stats_code= $main_settings->custom_stats_code;
360
+ $destination_main_settings->show_wptouch_in_footer = $main_settings->show_wptouch_in_footer;
361
+ }
362
+
363
+ if ( $wptouch_pro->post[ 'deploy_compat' ] ) {
364
+ // Deploy compatiblitiy settings
365
+ $destination_main_settings->process_desktop_shortcodes = $main_settings->process_desktop_shortcodes;
366
+ $destination_main_settings->remove_shortcodes = $main_settings->remove_shortcodes;
367
+
368
+ $destination_compat_settings->plugin_hooks = $compat_settings->plugin_hooks;
369
+ $destination_compat_settings->enabled_plugins = $compat_settings->enabled_plugins;
370
+ }
371
+
372
+ if ( $wptouch_pro->post[ 'deploy_devices' ] ) {
373
+ // Deploy device settings
374
+ $destination_main_settings->enable_ios_phone = $main_settings->enable_ios_phone;
375
+ $destination_main_settings->enable_android_phone = $main_settings->enable_android_phone;
376
+ $destination_main_settings->enable_blackberry_phone = $main_settings->enable_blackberry_phone;
377
+ $destination_main_settings->enable_firefox_phone = $main_settings->enable_firefox_phone;
378
+ $destination_main_settings->enable_opera_phone = $main_settings->enable_opera_phone;
379
+ $destination_main_settings->enable_windows_phone = $main_settings->enable_windows_phone;
380
+
381
+ $destination_main_settings->enable_ios_tablet = $main_settings->enable_ios_tablet ;
382
+ $destination_main_settings->enable_android_tablet = $main_settings->enable_android_tablet;
383
+ $destination_main_settings->enable_windows_tablet = $main_settings->enable_windows_tablet;
384
+ $destination_main_settings->enable_kindle_tablet = $main_settings->enable_kindle_tablet;
385
+ $destination_main_settings->enable_blackberry_tablet = $main_settings->enable_blackberry_tablet;
386
+ $destination_main_settings->enable_webos_tablet = $main_settings->enable_webos_tablet;
387
+
388
+ $destination_main_settings->custom_user_agents = $main_settings->custom_user_agents;
389
+ }
390
+
391
+ if ( $wptouch_pro->post[ 'deploy_menus' ] ) {
392
+ // Deploy menu settings
393
+ $destination_main_settings->enable_parent_items = $main_settings->enable_parent_items;
394
+ $destination_main_settings->enable_menu_icons = $main_settings->enable_menu_icons;
395
+ }
396
+
397
+ if ( $wptouch_pro->post[ 'deploy_themes'] ) {
398
+ // Deploy theme settings
399
+ $destination_main_settings->current_theme_friendly_name = $main_settings->current_theme_friendly_name;
400
+ $destination_main_settings->current_theme_location = $main_settings->current_theme_location;
401
+ $destination_main_settings->current_theme_name = $main_settings->current_theme_name;
402
+
403
+ $update_customizer = true;
404
+ }
405
+
406
+ if ( $wptouch_pro->post[ 'deploy_extensions'] ) {
407
+ // Deploy extension settings
408
+ $destination_main_settings->active_addons = $main_settings->active_addons;
409
+ }
410
+
411
+ if ( $wptouch_pro->post[ 'deploy_colors' ] ) {
412
+ //echo $wptouch_pro->post[ 'deploy_colors' ];
413
+ // Deploy color settings
414
+ $destination_color_settings = array();
415
+
416
+ foreach( $colors as $color ) {
417
+ if ( !isset( $destination_color_settings[ $color->domain ] ) ) {
418
+ $new_settings = wptouch_get_settings( $color->domain );
419
+ $destination_color_settings[ $color->domain ] = $new_settings;
420
+ }
421
+ }
422
+
423
+ foreach( $colors as $color ) {
424
+ $setting_name = $color->setting;
425
+ $destination_color_settings[ $color->domain ]->$setting_name = $color_settings[ $color->domain ]->$setting_name;
426
+ }
427
+
428
+ foreach( $destination_color_settings as $settings_object ) {
429
+ $settings_object->save();
430
+ }
431
+
432
+ $update_customizer = true;
433
+ }
434
+
435
+ if ( $wptouch_pro->post[ 'deploy_social_media' ] ) {
436
+ // Deploy social media settings
437
+ $destination_foundation_settings->social_facebook_url = $foundation_settings->social_facebook_url;
438
+ $destination_foundation_settings->social_twitter_url = $foundation_settings->social_twitter_url;
439
+ $destination_foundation_settings->social_google_url = $foundation_settings->social_google_url;
440
+ $destination_foundation_settings->social_instagram_url = $foundation_settings->social_instagram_url;
441
+ $destination_foundation_settings->social_tumblr_url = $foundation_settings->social_tumblr_url;
442
+ $destination_foundation_settings->social_pinterest_url = $foundation_settings->social_pinterest_url;
443
+ $destination_foundation_settings->social_vimeo_url = $foundation_settings->social_vimeo_url;
444
+ $destination_foundation_settings->social_youtube_url = $foundation_settings->social_youtube_url;
445
+ $destination_foundation_settings->social_linkedin_url = $foundation_settings->social_linkedin_url;
446
+ $destination_foundation_settings->social_yelp_url = $foundation_settings->social_yelp_url;
447
+ $destination_foundation_settings->social_email_url = $foundation_settings->social_email_url;
448
+ $destination_foundation_settings->social_rss_url = $foundation_settings->social_rss_url;
449
+
450
+ $update_customizer = true;
451
+ }
452
+
453
+ if ( $wptouch_pro->post[ 'deploy_social_sharing'] ) {
454
+ // Deploy social sharing icons
455
+ $destination_foundation_settings->show_share = $foundation_settings->show_share;
456
+ $destination_foundation_settings->share_on_pages = $foundation_settings->share_on_pages;
457
+ $destination_foundation_settings->share_location = $foundation_settings->share_location;
458
+ $destination_foundation_settings->share_colour_scheme = $foundation_settings->share_colour_scheme;
459
+
460
+ $update_customizer = true;
461
+ }
462
+
463
+ $destination_foundation_settings->save();
464
+ $destination_main_settings->save();
465
+ $destination_compat_settings->save();
466
+
467
+ if ( $update_customizer ) {
468
+ wptouch_initialize_customizer( true );
469
+ }
470
+ }
471
+
472
+ // Switch to the original site
473
+ if ( $current_blog_id != $source_site ) {
474
+ restore_current_blog();
475
+ }
476
+
477
  break;
478
  default:
479
  do_action( 'wptouch_admin_ajax_' . $ajax_action, $wptouch_pro );
core/admin-extensions.php CHANGED
@@ -60,6 +60,10 @@ function wptouch_get_addon_classes( $extra_classes = array() ) {
60
  return $classes;
61
  }
62
 
 
 
 
 
63
  function wptouch_has_addon_tags() {
64
  global $wptouch_cur_addon;
65
 
@@ -76,9 +80,13 @@ function wptouch_is_addon_active() {
76
  global $wptouch_pro;
77
  global $wptouch_cur_addon;
78
 
79
- $settings = $wptouch_pro->get_settings();
80
-
81
- return isset( $settings->active_addons[ $wptouch_cur_addon->name ] );
 
 
 
 
82
  }
83
 
84
  function wptouch_the_addon_version() {
@@ -96,19 +104,10 @@ function wptouch_get_addon_version() {
96
 
97
  function wptouch_addon_info_url() {
98
  global $wptouch_cur_addon;
99
- if ( isset( $wptouch_cur_addon->info_url ) ) {
100
- $url_parts = explode( '#', $wptouch_cur_addon->info_url );
101
- $url = $url_parts[ 0 ] . '?utm_source=' . WPTOUCH_UTM_SOURCE . '&utm_campaign=extension-browser-' . $url_parts[ 1 ] . '&utm_medium=web';
102
-
103
- if ( $url_parts[ 1 ] ) {
104
- $url .= '#' . $url_parts[ 1 ];
105
- }
106
 
107
- return $url;
108
 
109
- } else {
110
- return false;
111
- }
112
  }
113
 
114
  function wptouch_the_addon_title() {
@@ -275,12 +274,12 @@ function wptouch_the_addon_deactivate_link_url() {
275
  }
276
 
277
  function wptouch_get_addon_deactivate_link_url() {
278
- return add_query_arg( array(
279
  'admin_command' => 'deactivate_addon',
280
  'addon_name' => urlencode( wptouch_get_addon_title() ),
281
  'addon_location' => urlencode( wptouch_get_addon_location() ),
282
  'admin_menu_nonce' => wptouch_admin_menu_get_nonce()
283
- ), admin_url( 'admin.php?page=wptouch-admin-general-settings' ) );
284
  }
285
 
286
  global $wptouch_addon_previews;
@@ -356,4 +355,14 @@ function wptouch_the_addon_long_desc() {
356
  function wptouch_get_addon_long_desc() {
357
  global $wptouch_cur_addon;
358
  return $wptouch_cur_addon->long_description;
 
 
 
 
 
 
 
 
 
 
359
  }
60
  return $classes;
61
  }
62
 
63
+ function wptouch_is_multisite_extension() {
64
+ return wptouch_convert_to_class_name( wptouch_get_addon_title() ) == 'multisite';
65
+ }
66
+
67
  function wptouch_has_addon_tags() {
68
  global $wptouch_cur_addon;
69
 
80
  global $wptouch_pro;
81
  global $wptouch_cur_addon;
82
 
83
+ if ( wptouch_is_multisite_extension() ) {
84
+ $multisite_info = get_site_option( 'wptouch_multisite_active', false, false );
85
+ return ( is_object( $multisite_info ) );
86
+ } else {
87
+ $settings = $wptouch_pro->get_settings();
88
+ return isset( $settings->active_addons[ $wptouch_cur_addon->name ] );
89
+ }
90
  }
91
 
92
  function wptouch_the_addon_version() {
104
 
105
  function wptouch_addon_info_url() {
106
  global $wptouch_cur_addon;
 
 
 
 
 
 
 
107
 
108
+ $url = 'http://wptouch.com/extensions/' . $wptouch_cur_addon->base . '/' . '?utm_source=' . WPTOUCH_UTM_SOURCE . '&utm_campaign=extension-browser-' . $wptouch_cur_addon->base . '&utm_medium=web';
109
 
110
+ return $url;
 
 
111
  }
112
 
113
  function wptouch_the_addon_title() {
274
  }
275
 
276
  function wptouch_get_addon_deactivate_link_url() {
277
+ return esc_url( add_query_arg( array(
278
  'admin_command' => 'deactivate_addon',
279
  'addon_name' => urlencode( wptouch_get_addon_title() ),
280
  'addon_location' => urlencode( wptouch_get_addon_location() ),
281
  'admin_menu_nonce' => wptouch_admin_menu_get_nonce()
282
+ ) ) );
283
  }
284
 
285
  global $wptouch_addon_previews;
355
  function wptouch_get_addon_long_desc() {
356
  global $wptouch_cur_addon;
357
  return $wptouch_cur_addon->long_description;
358
+ }
359
+
360
+ function wptouch_get_activation_label() {
361
+ if ( is_network_admin() ) {
362
+ if ( !wptouch_is_multisite_extension() ) {
363
+ return __( 'Install', 'wptouch-pro' );
364
+ } else {
365
+ return __( 'Site Activate', 'wptouch-pro' );
366
+ }
367
+ } else return __( 'Activate', 'wptouch-pro' );
368
  }
core/admin-load.php CHANGED
@@ -31,25 +31,28 @@ function wptouch_admin_build_menu( $network_admin = false ) {
31
  $available_menus = wptouch_admin_get_predefined_menus( $network_admin );
32
 
33
  // Add the main plugin menu for WPtouch Pro
34
- add_menu_page(
35
- WPTOUCH_PRODUCT_NAME,
36
- WPTOUCH_PRODUCT_NAME,
37
- 'manage_options',
38
- wptouch_admin_get_root_slug( $network_admin ),
39
- '',
40
- WPTOUCH_ADMIN_URL . '/images/wptouch-admin-icon.png'
41
- );
42
-
43
- // Iterate through available menus
44
- foreach( $available_menus as $id => $menu ) {
45
- add_submenu_page(
46
- $available_menus[ wptouch_admin_get_root_slug( $network_admin ) ]->slug,
47
- $menu->friendly_name,
48
- $menu->friendly_name,
49
  'manage_options',
50
- $menu->slug,
51
- 'wptouch_admin_render_menu'
 
52
  );
 
 
 
 
 
 
 
 
 
 
 
 
53
  }
54
  }
55
 
@@ -71,7 +74,7 @@ function wptouch_add_sub_page( $sub_page_name, $sub_page_slug, &$options ) {
71
  function wptouch_add_page_section( $sub_page_name, $section_name, $section_slug, $section_settings, &$options, $domain = 'wptouch_pro', $use_customizer = false, $section_description = false, $section_weight = 50 ) {
72
  $section = new stdClass;
73
 
74
- $skip_domains = array( ADDON_SETTING_DOMAIN, 'wptouch_pro', 'bncid' );
75
  $skip_pages = array( 'Compatibility', 'Web-App Mode', 'Basic Ads', 'General' );
76
 
77
  if ( defined( 'WPTOUCH_IS_FREE' ) ) {
31
  $available_menus = wptouch_admin_get_predefined_menus( $network_admin );
32
 
33
  // Add the main plugin menu for WPtouch Pro
34
+
35
+ if ( !$network_admin || !defined( 'WPTOUCH_IS_FREE' ) ) {
36
+ add_menu_page(
37
+ WPTOUCH_PRODUCT_NAME,
38
+ WPTOUCH_PRODUCT_NAME,
 
 
 
 
 
 
 
 
 
 
39
  'manage_options',
40
+ wptouch_admin_get_root_slug( $network_admin ),
41
+ '',
42
+ WPTOUCH_ADMIN_URL . '/images/wptouch-admin-icon.png'
43
  );
44
+
45
+ // Iterate through available menus
46
+ foreach( $available_menus as $id => $menu ) {
47
+ add_submenu_page(
48
+ $available_menus[ wptouch_admin_get_root_slug( $network_admin ) ]->slug,
49
+ $menu->friendly_name,
50
+ $menu->friendly_name,
51
+ 'manage_options',
52
+ $menu->slug,
53
+ 'wptouch_admin_render_menu'
54
+ );
55
+ }
56
  }
57
  }
58
 
74
  function wptouch_add_page_section( $sub_page_name, $section_name, $section_slug, $section_settings, &$options, $domain = 'wptouch_pro', $use_customizer = false, $section_description = false, $section_weight = 50 ) {
75
  $section = new stdClass;
76
 
77
+ $skip_domains = array( ADDON_SETTING_DOMAIN, 'multisite', 'wptouch_pro', 'bncid' );
78
  $skip_pages = array( 'Compatibility', 'Web-App Mode', 'Basic Ads', 'General' );
79
 
80
  if ( defined( 'WPTOUCH_IS_FREE' ) ) {
core/admin-menu.php CHANGED
@@ -21,6 +21,7 @@ function wptouch_menu_redirects() {
21
  // All available built-in WPtouch Pro menu items go here
22
  define( 'WPTOUCH_PRO_ADMIN_WIZARD', 'wptouch-admin-wizard' );
23
  define( 'WPTOUCH_PRO_ADMIN_GENERAL_SETTINGS', 'wptouch-admin-general-settings' );
 
24
  define( 'WPTOUCH_PRO_ADMIN_LICENSE', 'wptouch-admin-license' );
25
 
26
  function wptouch_admin_create_menu( $id, $friendly_name, $menu_type = WPTOUCH_PRO_ADMIN_SETTINGS_PAGE, $display_name = false ) {
@@ -47,7 +48,7 @@ function wptouch_admin_get_predefined_menus( $network_admin = false ) {
47
  $settings_title = __( 'Settings', 'wptouch-pro' );
48
  $license_title = sprintf( __( 'License %s Support', 'wptouch-pro' ), '&amp;' );
49
  $network_admin = is_network_admin();
50
- if ( $network_admin ) {
51
  if ( $show_network_wizard ) {
52
  $available_menus = array(
53
  WPTOUCH_PRO_ADMIN_WIZARD => wptouch_admin_create_menu( WPTOUCH_PRO_ADMIN_WIZARD, $wizard_title, WPTOUCH_PRO_ADMIN_CUSTOM_PAGE ),
@@ -64,6 +65,7 @@ function wptouch_admin_get_predefined_menus( $network_admin = false ) {
64
  }
65
 
66
  if ( !$show_network_wizard ) {
 
67
  $available_menus[ WPTOUCH_PRO_ADMIN_LICENSE ] = wptouch_admin_create_menu( WPTOUCH_PRO_ADMIN_LICENSE, $license_title, WPTOUCH_PRO_ADMIN_CUSTOM_PAGE );
68
  }
69
  } else {
21
  // All available built-in WPtouch Pro menu items go here
22
  define( 'WPTOUCH_PRO_ADMIN_WIZARD', 'wptouch-admin-wizard' );
23
  define( 'WPTOUCH_PRO_ADMIN_GENERAL_SETTINGS', 'wptouch-admin-general-settings' );
24
+ define( 'WPTOUCH_PRO_ADMIN_MULTISITE_SETTINGS', 'wptouch-multisite' );
25
  define( 'WPTOUCH_PRO_ADMIN_LICENSE', 'wptouch-admin-license' );
26
 
27
  function wptouch_admin_create_menu( $id, $friendly_name, $menu_type = WPTOUCH_PRO_ADMIN_SETTINGS_PAGE, $display_name = false ) {
48
  $settings_title = __( 'Settings', 'wptouch-pro' );
49
  $license_title = sprintf( __( 'License %s Support', 'wptouch-pro' ), '&amp;' );
50
  $network_admin = is_network_admin();
51
+ if ( $network_admin && !defined( 'WPTOUCH_IS_FREE' ) ) {
52
  if ( $show_network_wizard ) {
53
  $available_menus = array(
54
  WPTOUCH_PRO_ADMIN_WIZARD => wptouch_admin_create_menu( WPTOUCH_PRO_ADMIN_WIZARD, $wizard_title, WPTOUCH_PRO_ADMIN_CUSTOM_PAGE ),
65
  }
66
 
67
  if ( !$show_network_wizard ) {
68
+ $available_menus[ WPTOUCH_PRO_ADMIN_MULTISITE_SETTINGS ] = wptouch_admin_create_menu( WPTOUCH_PRO_ADMIN_MULTISITE_SETTINGS, __( 'Multisite Setup', 'wptouch-pro' ) );
69
  $available_menus[ WPTOUCH_PRO_ADMIN_LICENSE ] = wptouch_admin_create_menu( WPTOUCH_PRO_ADMIN_LICENSE, $license_title, WPTOUCH_PRO_ADMIN_CUSTOM_PAGE );
70
  }
71
  } else {
core/admin-render.php CHANGED
@@ -45,63 +45,102 @@
45
 
46
  <div id="wptouch-settings-area" class="<?php wptouch_admin_panel_classes( array( 'wptouch-clearfix' ) ); ?>">
47
  <?php if ( is_array( $panel_options ) ) { ?>
48
- <nav id="wptouch-admin-menu" <?php if ( count ( $panel_options ) <= 1 ) echo 'style="display: none;"'; ?>>
 
 
 
 
 
 
 
 
 
 
 
 
49
  <?php
50
- $hide_keys = array( 'Updates Available', 'Multisite Setup', 'General', 'Compatibility', 'Customize Theme', 'Devices', 'Themes', 'Extensions', 'Customizer', 'Theme Settings', 'Menu Settings' );
51
- if ( !defined( 'WPTOUCH_IS_FREE' ) ) { $hide_keys[] = 'Go Pro'; }
52
- $show_keys = array_diff( array_keys( $panel_options ), $hide_keys );
53
- ?>
54
- <h2><?php _e( 'Setup', 'wptouch-pro' ); ?></h2>
55
- <ul>
56
- <?php if ( !defined( 'WPTOUCH_IS_FREE' ) && ( !wptouch_is_controlled_network() || ( wptouch_is_controlled_network() && is_network_admin() ) ) ) { ?>
57
- <?php global $wptouch_pro; ?>
58
- <?php if ( $wptouch_pro->theme_upgrades_available() || $wptouch_pro->extension_upgrades_available() ) { ?>
59
- <li><a href="#" class="updates-available<?php if ( isset( $_COOKIE['wptouch-4-admin-menu'] ) && ( $_COOKIE['wptouch-4-admin-menu'] == 'updates-available' ) ) { echo ' active'; } ?>" data-page-slug="updates-available"><?php _e( 'Updates Available', 'wptouch-pro' ); ?></a></li>
 
60
  <?php } ?>
61
- <?php } ?>
62
 
63
- <?php if ( defined( 'WPTOUCH_IS_FREE' ) ) { ?>
64
- <li><a href="#" class="setup-general-general<?php if ( isset( $_COOKIE['wptouch-4-admin-menu'] ) && ( $_COOKIE['wptouch-4-admin-menu'] == 'setup-general-general' ) ) { echo ' active'; } ?>" data-page-slug="setup-general-general"><?php _e( 'General', 'wptouch-pro' ); ?></a></li>
65
- <li><a href="#" class="setup-devices<?php if ( isset( $_COOKIE['wptouch-4-admin-menu'] ) && ( $_COOKIE['wptouch-4-admin-menu'] == 'setup-devices' ) ) { echo ' active'; } ?>" data-page-slug="setup-devices"><?php _e( 'Devices', 'wptouch-pro' ); ?></a></li>
66
- <li><a href="#" class="menu-icons-manage-icon-sets<?php if ( isset( $_COOKIE['wptouch-4-admin-menu'] ) && ( $_COOKIE['wptouch-4-admin-menu'] == 'menu-icons-manage-icon-sets' ) ) { echo ' active'; } ?>" data-page-slug="menu-icons-manage-icon-sets"><?php _e( 'Menu Settings', 'wptouch-pro' ); ?></a></li>
67
- <li><a href="#" class="foundation-page-theme-settings<?php if ( isset( $_COOKIE['wptouch-4-admin-menu'] ) && ( $_COOKIE['wptouch-4-admin-menu'] == 'foundation-page-theme-settings' ) ) { echo ' active'; } ?>" data-page-slug="foundation-page-theme-settings"><?php _e( 'Theme Settings', 'wptouch-pro' ); ?></a></li>
68
- <li><a href="#" class="foundation-page-theme-gopro<?php if ( isset( $_COOKIE['wptouch-4-admin-menu'] ) && ( $_COOKIE['wptouch-4-admin-menu'] == 'foundation-page-theme-gopro' ) ) { echo ' active'; } ?>" data-page-slug="foundation-page-theme-gopro"><?php _e( 'WPtouch Pro', 'wptouch-pro' ); ?></a></li>
69
- <?php } elseif ( !is_network_admin() ) { ?>
70
- <li><a href="#" class="setup-general-general<?php if ( isset( $_COOKIE['wptouch-4-admin-menu'] ) && ( $_COOKIE['wptouch-4-admin-menu'] == 'setup-general-general' ) ) { echo ' active'; } ?>" data-page-slug="setup-general-general"><?php _e( 'General', 'wptouch-pro' ); ?></a></li>
71
- <li><a href="#" class="setup-compat<?php if ( isset( $_COOKIE['wptouch-4-admin-menu'] ) && ( $_COOKIE['wptouch-4-admin-menu'] == 'setup-compat' ) ) { echo ' active'; } ?>" data-page-slug="setup-compat"><?php _e( 'Site Compatibility', 'wptouch-pro' ); ?></a></li>
72
- <li><a href="#" class="setup-devices<?php if ( isset( $_COOKIE['wptouch-4-admin-menu'] ) && ( $_COOKIE['wptouch-4-admin-menu'] == 'setup-devices' ) ) { echo ' active'; } ?>" data-page-slug="setup-devices"><?php _e( 'Devices', 'wptouch-pro' ); ?></a></li>
73
- <li><a href="#" class="menu-icons-manage-icon-sets<?php if ( isset( $_COOKIE['wptouch-4-admin-menu'] ) && ( $_COOKIE['wptouch-4-admin-menu'] == 'menu-icons-manage-icon-sets' ) ) { echo ' active'; } ?>" data-page-slug="menu-icons-manage-icon-sets"><?php _e( 'Menu Settings', 'wptouch-pro' ); ?></a></li>
74
- <?php } else { ?>
75
- <li><a href="#" class="multisite-network-admin<?php if ( isset( $_COOKIE['wptouch-4-admin-menu'] ) && ( $_COOKIE['wptouch-4-admin-menu'] == 'multisite-network-admin' ) ) { echo ' active'; } ?>" data-page-slug="multisite-network-admin"><?php _e( 'Multisite Setup', 'wptouch-pro' ); ?></a></li>
76
- <?php } ?>
77
 
78
- </ul>
 
 
79
 
80
- <?php if ( !defined( 'WPTOUCH_IS_FREE' ) ) { ?>
81
- <h2><?php _e( 'Themes', 'wptouch-pro' ); ?></h2>
82
- <ul>
83
- <li><a href="#" class="setup-themes-browser<?php if ( isset( $_COOKIE['wptouch-4-admin-menu'] ) && ( $_COOKIE['wptouch-4-admin-menu'] == 'setup-themes-browser' ) ) { echo ' active'; } ?>" data-page-slug="setup-themes-browser"><?php _e( 'Themes', 'wptouch-pro' ); ?></a></li>
84
- <?php if ( !is_network_admin() ) { ?>
85
- <?php if ( isset( $panel_options[ 'Theme Settings' ]->sections ) && count( $panel_options[ 'Theme Settings' ]->sections ) > 0 ) { ?>
86
- <li><a href="#" class="foundation-page-theme-settings<?php if ( isset( $_COOKIE['wptouch-4-admin-menu'] ) && ( $_COOKIE['wptouch-4-admin-menu'] == 'foundation-page-theme-settings' ) ) { echo ' active'; } ?>" data-page-slug="foundation-page-theme-settings"><?php _e( 'Theme Settings', 'wptouch-pro' ); ?></a></li>
87
  <?php } ?>
88
- <li><a href="#" class="foundation-page-theme-customizer<?php if ( isset( $_COOKIE['wptouch-4-admin-menu'] ) && ( $_COOKIE['wptouch-4-admin-menu'] == 'foundation-page-theme-customizer' ) ) { echo ' active'; } ?>" data-page-slug="foundation-page-theme-customizer"><?php _e( 'Customize Theme', 'wptouch-pro' ); ?></a></li>
89
  <?php } ?>
90
  </ul>
91
 
92
- <h2><?php _e( 'Extensions', 'wptouch-pro' ); ?></h2>
93
- <ul>
94
- <li><a href="#" class="setup-addons-browser<?php if ( isset( $_COOKIE['wptouch-4-admin-menu'] ) && ( $_COOKIE['wptouch-4-admin-menu'] == 'setup-addons-browser' ) ) { echo ' active'; } ?>" data-page-slug="setup-addons-browser"><?php _e( 'Extensions', 'wptouch-pro' ); ?></a></li>
95
- <?php
96
- array_multisort(array_map('strtolower', $show_keys), $show_keys);
97
- foreach( $show_keys as $page_name ) {
98
- $page_info = $panel_options[ $page_name ];
99
- ?>
100
- <?php if ( !is_network_admin() && isset( $page_info->sections ) && is_array( $page_info->sections ) && count( $page_info->sections ) ) { ?>
101
- <li><a href="#" class="<?php echo $page_info->slug; ?><?php if ( isset( $_COOKIE['wptouch-4-admin-menu'] ) && ( $_COOKIE['wptouch-4-admin-menu'] == $page_info->slug ) ) { echo ' active'; } ?>" data-page-slug="<?php echo $page_info->slug; ?>"><?php echo $page_name; ?></a></li>
 
 
102
  <?php } ?>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
103
  <?php } ?>
104
- </ul>
105
  <?php } ?>
106
  </nav>
107
  <?php } ?>
45
 
46
  <div id="wptouch-settings-area" class="<?php wptouch_admin_panel_classes( array( 'wptouch-clearfix' ) ); ?>">
47
  <?php if ( is_array( $panel_options ) ) { ?>
48
+ <nav id="wptouch-admin-menu" <?php if ( count ( $panel_options ) <= 0 ) echo 'style="display: none;"'; ?>>
49
+ <?php if ( isset( $_GET[ 'page' ] ) && $_GET[ 'page' ] == 'wptouch-multisite' ) { ?>
50
+ <h2><?php _e( 'Setup', 'wptouch-pro' ); ?></h2>
51
+ <ul>
52
+ <li><a href="#" class="wptouch-addon-multisite<?php if ( isset( $_COOKIE['wptouch-4-admin-menu'] ) && ( $_COOKIE['wptouch-4-admin-menu'] == 'wptouch-addon-multisite' ) ) { echo ' active'; } ?>" data-page-slug="wptouch-addon-multisite"><?php _e( 'General Options', 'wptouch-pro' ); ?></a></li>
53
+ </ul>
54
+ <?php if ( wptouch_has_multisite_support_licensed() ) { ?>
55
+ <h2><?php _e( 'Tools', 'wptouch-pro' ); ?></h2>
56
+ <ul>
57
+ <li><a href="#" class="wptouch-addon-deployment<?php if ( isset( $_COOKIE['wptouch-4-admin-menu'] ) && ( $_COOKIE['wptouch-4-admin-menu'] == 'wptouch-addon-deployment' ) ) { echo ' active'; } ?>" data-page-slug="wptouch-addon-deployment"><?php _e( 'Deployment', 'wptouch-pro' ); ?></a></li>
58
+ </ul>
59
+ <?php } ?>
60
+ <?php } else { ?>
61
  <?php
62
+ $hide_keys = array( 'Updates Available', 'General', 'Compatibility', 'Customize Theme', 'Devices', 'Themes', 'Extensions', 'Customizer', 'Theme Settings', 'Menu Settings' );
63
+ if ( !defined( 'WPTOUCH_IS_FREE' ) ) { $hide_keys[] = 'Go Pro'; }
64
+ $show_keys = array_diff( array_keys( $panel_options ), $hide_keys );
65
+ ?>
66
+ <h2><?php _e( 'Setup', 'wptouch-pro' ); ?></h2>
67
+ <ul>
68
+ <?php if ( !defined( 'WPTOUCH_IS_FREE' ) && ( !wptouch_is_controlled_network() || ( wptouch_is_controlled_network() && is_network_admin() ) ) ) { ?>
69
+ <?php global $wptouch_pro; ?>
70
+ <?php if ( $wptouch_pro->theme_upgrades_available() || $wptouch_pro->extension_upgrades_available() || wptouch_is_update_available() != WPTOUCH_VERSION ) { ?>
71
+ <li><a href="#" class="updates-available<?php if ( isset( $_COOKIE['wptouch-4-admin-menu'] ) && ( $_COOKIE['wptouch-4-admin-menu'] == 'updates-available' ) ) { echo ' active'; } ?>" data-page-slug="updates-available"><?php _e( 'Updates Available', 'wptouch-pro' ); ?></a></li>
72
+ <?php } ?>
73
  <?php } ?>
 
74
 
75
+ <?php if ( defined( 'WPTOUCH_IS_FREE' ) ) { ?>
76
+ <li><a href="#" class="setup-general-general<?php if ( isset( $_COOKIE['wptouch-4-admin-menu'] ) && ( $_COOKIE['wptouch-4-admin-menu'] == 'setup-general-general' ) ) { echo ' active'; } ?>" data-page-slug="setup-general-general"><?php _e( 'General', 'wptouch-pro' ); ?></a></li>
77
+ <li><a href="#" class="setup-devices<?php if ( isset( $_COOKIE['wptouch-4-admin-menu'] ) && ( $_COOKIE['wptouch-4-admin-menu'] == 'setup-devices' ) ) { echo ' active'; } ?>" data-page-slug="setup-devices"><?php _e( 'Devices', 'wptouch-pro' ); ?></a></li>
78
+ <li><a href="#" class="menu-icons-manage-icon-sets<?php if ( isset( $_COOKIE['wptouch-4-admin-menu'] ) && ( $_COOKIE['wptouch-4-admin-menu'] == 'menu-icons-manage-icon-sets' ) ) { echo ' active'; } ?>" data-page-slug="menu-icons-manage-icon-sets"><?php _e( 'Menu Settings', 'wptouch-pro' ); ?></a></li>
79
+ <li><a href="#" class="foundation-page-theme-settings<?php if ( isset( $_COOKIE['wptouch-4-admin-menu'] ) && ( $_COOKIE['wptouch-4-admin-menu'] == 'foundation-page-theme-settings' ) ) { echo ' active'; } ?>" data-page-slug="foundation-page-theme-settings"><?php _e( 'Theme Settings', 'wptouch-pro' ); ?></a></li>
80
+ <li><a href="#" class="foundation-page-theme-gopro<?php if ( isset( $_COOKIE['wptouch-4-admin-menu'] ) && ( $_COOKIE['wptouch-4-admin-menu'] == 'foundation-page-theme-gopro' ) ) { echo ' active'; } ?>" data-page-slug="foundation-page-theme-gopro"><?php _e( 'WPtouch Pro', 'wptouch-pro' ); ?></a></li>
81
+ <?php } elseif ( !is_network_admin() ) { ?>
82
+ <?php if ( wptouch_can_show_page( 'general' ) ) { ?>
83
+ <li><a href="#" class="<?php wptouch_multisite_page_classes( 'general' ); ?> setup-general-general<?php if ( isset( $_COOKIE['wptouch-4-admin-menu'] ) && ( $_COOKIE['wptouch-4-admin-menu'] == 'setup-general-general' ) ) { echo ' active'; } ?>" data-page-slug="setup-general-general"><?php _e( 'General', 'wptouch-pro' ); ?></a></li>
84
+ <?php } ?>
 
 
 
 
85
 
86
+ <?php if ( wptouch_can_show_page( 'site-compat' ) ) { ?>
87
+ <li><a href="#" class="<?php wptouch_multisite_page_classes( 'site-compat' ); ?> setup-compat<?php if ( isset( $_COOKIE['wptouch-4-admin-menu'] ) && ( $_COOKIE['wptouch-4-admin-menu'] == 'setup-compat' ) ) { echo ' active'; } ?>" data-page-slug="setup-compat"><?php _e( 'Site Compatibility', 'wptouch-pro' ); ?></a></li>
88
+ <?php } ?>
89
 
90
+ <?php if ( wptouch_can_show_page( 'devices' ) ) { ?>
91
+ <li><a href="#" class="<?php wptouch_multisite_page_classes( 'devices' ); ?> setup-devices<?php if ( isset( $_COOKIE['wptouch-4-admin-menu'] ) && ( $_COOKIE['wptouch-4-admin-menu'] == 'setup-devices' ) ) { echo ' active'; } ?>" data-page-slug="setup-devices"><?php _e( 'Devices', 'wptouch-pro' ); ?></a></li>
92
+ <?php } ?>
93
+
94
+ <?php if ( wptouch_can_show_page( 'menu' ) ) { ?>
95
+ <li><a href="#" class="<?php wptouch_multisite_page_classes( 'menu' ); ?> menu-icons-manage-icon-sets<?php if ( isset( $_COOKIE['wptouch-4-admin-menu'] ) && ( $_COOKIE['wptouch-4-admin-menu'] == 'menu-icons-manage-icon-sets' ) ) { echo ' active'; } ?>" data-page-slug="menu-icons-manage-icon-sets"><?php _e( 'Menu Settings', 'wptouch-pro' ); ?></a></li>
 
96
  <?php } ?>
 
97
  <?php } ?>
98
  </ul>
99
 
100
+ <?php if ( !defined( 'WPTOUCH_IS_FREE' ) ) { ?>
101
+ <?php if ( wptouch_can_show_page( 'themes' ) ) { ?>
102
+ <h2><?php _e( 'Themes', 'wptouch-pro' ); ?></h2>
103
+ <ul>
104
+ <li><a href="#" class="<?php wptouch_multisite_page_classes( 'themes' ); ?> setup-themes-browser<?php if ( isset( $_COOKIE['wptouch-4-admin-menu'] ) && ( $_COOKIE['wptouch-4-admin-menu'] == 'setup-themes-browser' ) ) { echo ' active'; } ?>" data-page-slug="setup-themes-browser"><?php _e( 'Themes', 'wptouch-pro' ); ?></a></li>
105
+ <?php if ( !is_network_admin() ) { ?>
106
+ <?php if ( isset( $panel_options[ 'Theme Settings' ]->sections ) && count( $panel_options[ 'Theme Settings' ]->sections ) > 0 ) { ?>
107
+ <li><a href="#" class="<?php wptouch_multisite_page_classes( 'themes' ); ?> foundation-page-theme-settings<?php if ( isset( $_COOKIE['wptouch-4-admin-menu'] ) && ( $_COOKIE['wptouch-4-admin-menu'] == 'foundation-page-theme-settings' ) ) { echo ' active'; } ?>" data-page-slug="foundation-page-theme-settings"><?php _e( 'Theme Settings', 'wptouch-pro' ); ?></a></li>
108
+ <?php } ?>
109
+ <li><a href="#" class="<?php wptouch_multisite_page_classes( 'themes' ); ?> foundation-page-theme-customizer<?php if ( isset( $_COOKIE['wptouch-4-admin-menu'] ) && ( $_COOKIE['wptouch-4-admin-menu'] == 'foundation-page-theme-customizer' ) ) { echo ' active'; } ?>" data-page-slug="foundation-page-theme-customizer"><?php _e( 'Customize Theme', 'wptouch-pro' ); ?></a></li>
110
+ <?php } ?>
111
+ </ul>
112
  <?php } ?>
113
+
114
+ <?php if ( wptouch_can_show_page( 'extensions' ) ) { ?>
115
+ <h2><?php _e( 'Extensions', 'wptouch-pro' ); ?></h2>
116
+ <ul>
117
+ <li><a href="#" class="<?php wptouch_multisite_page_classes( 'extensions' ); ?> setup-addons-browser<?php if ( isset( $_COOKIE['wptouch-4-admin-menu'] ) && ( $_COOKIE['wptouch-4-admin-menu'] == 'setup-addons-browser' ) ) { echo ' active'; } ?>" data-page-slug="setup-addons-browser"><?php _e( 'Extensions', 'wptouch-pro' ); ?></a></li>
118
+ <?php
119
+ array_multisort(array_map('strtolower', $show_keys), $show_keys);
120
+ foreach( $show_keys as $page_name ) {
121
+ $page_info = $panel_options[ $page_name ];
122
+ ?>
123
+ <?php if ( isset( $page_info->sections ) && is_array( $page_info->sections ) && count( $page_info->sections ) ) { ?>
124
+ <?php if ( is_network_admin() ) { ?>
125
+ <?php if ( $page_info->slug == 'wptouch-addon-multisite' || $page_info->slug == 'wptouch-addon-multisite-deploy' ) { ?>
126
+ <li><a href="#" class="<?php wptouch_multisite_page_classes( 'extensions' ); ?> <?php echo $page_info->slug; ?><?php if ( isset( $_COOKIE['wptouch-4-admin-menu'] ) && ( $_COOKIE['wptouch-4-admin-menu'] == $page_info->slug ) ) { echo ' active'; } ?>" data-page-slug="<?php echo $page_info->slug; ?>"><?php echo $page_name; ?></a></li>
127
+ <?php } ?>
128
+ <?php } else { ?>
129
+ <?php if ( $page_info->slug != 'wptouch-addon-multisite' && $page_info->slug != 'wptouch-addon-multisite-deploy' ) { ?>
130
+ <li><a href="#" class="<?php wptouch_multisite_page_classes( 'extensions' ); ?> <?php echo $page_info->slug; ?><?php if ( isset( $_COOKIE['wptouch-4-admin-menu'] ) && ( $_COOKIE['wptouch-4-admin-menu'] == $page_info->slug ) ) { echo ' active'; } ?>" data-page-slug="<?php echo $page_info->slug; ?>"><?php echo $page_name; ?></a></li>
131
+ <?php } ?>
132
+ <?php } ?>
133
+ <?php } ?>
134
+ <?php } ?>
135
+ </ul>
136
+ <?php } ?>
137
+ <?php } else { ?>
138
+ <h2><?php _e( 'Available for WPtouch Pro', 'wptouch-pro' ); ?></h2>
139
+ <ul>
140
+ <li><a href="#" class="<?php wptouch_multisite_page_classes( 'themes' ); ?> setup-themes-browser<?php if ( isset( $_COOKIE['wptouch-4-admin-menu'] ) && ( $_COOKIE['wptouch-4-admin-menu'] == 'setup-themes-browser' ) ) { echo ' active'; } ?>" data-page-slug="setup-themes-browser"><?php _e( 'Themes', 'wptouch-pro' ); ?></a></li>
141
+ <li><a href="#" class="<?php wptouch_multisite_page_classes( 'extensions' ); ?> setup-addons-browser<?php if ( isset( $_COOKIE['wptouch-4-admin-menu'] ) && ( $_COOKIE['wptouch-4-admin-menu'] == 'setup-addons-browser' ) ) { echo ' active'; } ?>" data-page-slug="setup-addons-browser"><?php _e( 'Extensions', 'wptouch-pro' ); ?></a></li>
142
+ </ul>
143
  <?php } ?>
 
144
  <?php } ?>
145
  </nav>
146
  <?php } ?>
core/admin-themes.php CHANGED
@@ -42,18 +42,9 @@ function wptouch_theme_type() {
42
  function wptouch_theme_info_url() {
43
  global $wptouch_cur_theme;
44
 
45
- if ( isset( $wptouch_cur_theme->info_url ) ) {
46
- $url_parts = explode( '#', $wptouch_cur_theme->info_url );
47
- $url = $url_parts[ 0 ] . '?utm_source=' . WPTOUCH_UTM_SOURCE . '&utm_campaign=theme-browser-' . $url_parts[ 1 ] . '&utm_medium=web';
48
 
49
- if ( $url_parts[ 1 ] ) {
50
- $url .= '#' . $url_parts[ 1 ];
51
- }
52
-
53
- return $url;
54
- } else {
55
- return false;
56
- }
57
  }
58
 
59
  function wptouch_cloud_theme_update_available() {
42
  function wptouch_theme_info_url() {
43
  global $wptouch_cur_theme;
44
 
45
+ $url = 'http://wptouch.com/themes/' . $wptouch_cur_theme->base . '/' . '?utm_source=' . WPTOUCH_UTM_SOURCE . '&utm_campaign=theme-browser-' . $wptouch_cur_theme->base . '&utm_medium=web';
 
 
46
 
47
+ return $url;
 
 
 
 
 
 
 
48
  }
49
 
50
  function wptouch_cloud_theme_update_available() {
core/bncid.php CHANGED
@@ -80,6 +80,7 @@ function wptouch_check_api( $force_refresh = false ) {
80
  $bnc_settings->license_total_sites = 0;
81
  $bnc_settings->license_friendly_name = '';
82
  $bnc_settings->license_used_sites = 0;
 
83
 
84
  if ( $result[ 'license_expiry_date'] ) {
85
  $bnc_settings->license_expiry_date = $result[ 'license_expiry_date'];
80
  $bnc_settings->license_total_sites = 0;
81
  $bnc_settings->license_friendly_name = '';
82
  $bnc_settings->license_used_sites = 0;
83
+ $bnc_settings->license_support_packages = $result[ 'support_packages' ];
84
 
85
  if ( $result[ 'license_expiry_date'] ) {
86
  $bnc_settings->license_expiry_date = $result[ 'license_expiry_date'];
core/class-bncapi.php CHANGED
@@ -1,6 +1,6 @@
1
  <?php
2
 
3
- define( 'BNC_API_VERSION', '5.0' );
4
  define( 'BNC_API_URL', 'http://api.wptouch.com/v/' . BNC_API_VERSION );
5
  define( 'BNC_API_TIMEOUT', 30 );
6
 
1
  <?php
2
 
3
+ define( 'BNC_API_VERSION', '5.1' );
4
  define( 'BNC_API_URL', 'http://api.wptouch.com/v/' . BNC_API_VERSION );
5
  define( 'BNC_API_TIMEOUT', 30 );
6
 
core/class-wptouch-pro-settings.php CHANGED
@@ -81,7 +81,6 @@ class WPtouchDefaultSettings30 extends WPtouchSettings {
81
 
82
  $this->custom_user_agents = '';
83
 
84
-
85
  // Default Theme
86
  if ( defined( 'WPTOUCH_IS_FREE' ) ) {
87
  $this->current_theme_friendly_name = 'Bauhaus';
@@ -100,6 +99,7 @@ class WPtouchDefaultSettings30 extends WPtouchSettings {
100
 
101
  $this->enable_parent_items = true;
102
  $this->enable_menu_icons = false;
 
103
 
104
  $this->default_menu_icon = WPTOUCH_DEFAULT_MENU_ICON;
105
  $this->disabled_menu_items = array();
@@ -133,6 +133,8 @@ class WPtouchDefaultSettingsBNCID30 extends WPtouchSettings {
133
  $this->referral_user_id = false;
134
  $this->allow_multisite = true;
135
  $this->multisite_control = true;
 
 
136
  }
137
  };
138
 
@@ -142,3 +144,19 @@ class WPtouchDefaultSettingsCompat extends WPtouchSettings {
142
  $this->enabled_plugins = array();
143
  }
144
  };
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
81
 
82
  $this->custom_user_agents = '';
83
 
 
84
  // Default Theme
85
  if ( defined( 'WPTOUCH_IS_FREE' ) ) {
86
  $this->current_theme_friendly_name = 'Bauhaus';
99
 
100
  $this->enable_parent_items = true;
101
  $this->enable_menu_icons = false;
102
+ $this->show_login_box = false;
103
 
104
  $this->default_menu_icon = WPTOUCH_DEFAULT_MENU_ICON;
105
  $this->disabled_menu_items = array();
133
  $this->referral_user_id = false;
134
  $this->allow_multisite = true;
135
  $this->multisite_control = true;
136
+
137
+ $this->license_support_packages = array();
138
  }
139
  };
140
 
144
  $this->enabled_plugins = array();
145
  }
146
  };
147
+
148
+ class WPtouchDefaultSettingsMultisite extends WPtouchSettings {
149
+ function WPtouchDefaultSettingsMultisite() {
150
+ $this->multisite_use_master_settings = false;
151
+ $this->multisite_master_site = 1;
152
+ $this->multisite_show_general_settings = true;
153
+ $this->multisite_show_site_compat = true;
154
+ $this->multisite_show_devices = true;
155
+ $this->multisite_show_menus = true;
156
+ $this->multisite_show_themes = true;
157
+ $this->multisite_show_extensions = true;
158
+ $this->multisite_show_colors = true;
159
+ $this->multisite_show_social_media = true;
160
+ $this->multisite_show_social_sharing = true;
161
+ }
162
+ };
core/class-wptouch-pro.php CHANGED
@@ -374,11 +374,11 @@ class WPtouchProFour {
374
 
375
  function desktop_shortcode_magic( $content ) {
376
  if ( $this->is_mobile_device && $this->showing_mobile_theme ) {
 
377
  global $woocommerce;
378
 
379
  if ( is_singular() && ( !is_object( $woocommerce ) || !( is_cart() || is_checkout() ) ) ) {
380
  $should_regenerate = true;
381
-
382
  $shortcode_data = get_post_meta( get_the_ID(), 'wptouch_sc_data', true );
383
  if ( $shortcode_data ) {
384
  if ( $shortcode_data->has_desktop_shortcode ) {
@@ -402,9 +402,28 @@ class WPtouchProFour {
402
  }
403
 
404
  if ( $should_regenerate ) {
 
 
 
 
 
 
405
  $content = '<div class="wptouch-sc-content" data-post-id="' . get_the_ID() . '"></div><div style="display: none;" class="wptouch-orig-content">' . $content . '</div>';
406
  } else {
407
  $content = wptexturize( $content );
 
 
 
 
 
 
 
 
 
 
 
 
 
408
  }
409
  }
410
 
@@ -414,6 +433,31 @@ class WPtouchProFour {
414
  }
415
  }
416
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
417
  function handle_desktop_shortcode_save_post( $post_id ) {
418
  delete_post_meta( $post_id, 'wptouch_sc_data' );
419
  }
@@ -439,6 +483,9 @@ class WPtouchProFour {
439
  remove_action( 'the_content', 'wptouch_addon_the_content_mobile_content', 1 );
440
  $content = apply_filters( 'the_content', $post_content );
441
 
 
 
 
442
  $shortcode_data->valid_until = time() + 3600*24;
443
  $shortcode_data->shortcode_content = $content;
444
 
@@ -628,6 +675,20 @@ class WPtouchProFour {
628
 
629
  function load_addon_modules() {
630
  $settings = $this->get_settings();
 
 
 
 
 
 
 
 
 
 
 
 
 
 
631
 
632
  if ( count( $settings->active_addons ) ) {
633
  foreach( $settings->active_addons as $addon_name => $addon_info ) {
@@ -636,9 +697,13 @@ class WPtouchProFour {
636
  // Load the add-on file
637
  if ( file_exists( $addon_file_name ) ) {
638
  require_once( $addon_file_name );
 
 
639
  }
640
  }
 
641
 
 
642
  do_action( 'wptouch_addon_init' );
643
 
644
  if ( is_admin() ) {
@@ -1153,6 +1218,10 @@ class WPtouchProFour {
1153
 
1154
  function handle_activation() {
1155
  // activation hook
 
 
 
 
1156
  $site_root = get_home_path();
1157
  if ( file_exists( $site_root . 'robots.txt' ) ) {
1158
 
@@ -2375,6 +2444,45 @@ class WPtouchProFour {
2375
  }
2376
  }
2377
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
2378
  function get_setting_defaults( $domain ) {
2379
  $setting_defaults = new WPtouchSettings;
2380
 
@@ -2384,18 +2492,51 @@ class WPtouchProFour {
2384
  $setting_defaults = new WPtouchDefaultSettingsBNCID30;
2385
  } else if ( $domain == 'compat' ) {
2386
  $setting_defaults = new WPtouchDefaultSettingsCompat;
 
 
2387
  } else {
2388
  $setting_defaults = apply_filters( 'wptouch_setting_defaults', $setting_defaults, $domain );
2389
  $setting_defaults = apply_filters( 'wptouch_setting_defaults_' . wptouch_strip_dashes( $domain ), $setting_defaults );
2390
  }
2391
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
2392
  $settings_defaults = apply_filters( 'wptouch_settings_override_defaults', $setting_defaults, $domain );
2393
 
2394
  return $setting_defaults;
2395
  }
2396
 
2397
  function get_active_setting_domains() {
2398
- $active_domains = array( 'wptouch_pro', 'bncid' , 'compat', 'addons' );
2399
 
2400
  return apply_filters( 'wptouch_registered_setting_domains', $active_domains );
2401
  }
@@ -2407,7 +2548,7 @@ class WPtouchProFour {
2407
  function is_domain_site_wide( $domain ) {
2408
  $site_wide = false;
2409
  if ( is_multisite() ) {
2410
- $site_wide_domains = array( 'bncid' );
2411
 
2412
  $domains = apply_filters( 'wptouch_domain_site_wide', false, $site_wide_domains );
2413
  if ( in_array( $domain, $site_wide_domains ) ) {
@@ -2428,27 +2569,16 @@ class WPtouchProFour {
2428
 
2429
  if ( isset( $this->settings_objects[ $domain ] ) ) {
2430
  // settings have been loaded before
2431
-
2432
  $settings = $this->settings_objects[ $domain ];
2433
 
2434
  WPTOUCH_DEBUG( WPTOUCH_INFO, '.. Returning previously loaded settings ' . $domain );
2435
  } else {
2436
  // settings have not been loaded
2437
- $setting_name = $this->get_wp_setting_name_for_domain( $domain );
2438
-
2439
- if ( $this->is_domain_site_wide( $domain ) ) {
2440
- WPTOUCH_DEBUG( WPTOUCH_INFO, 'Loading site wide option on DOMAIN ' . $domain );
2441
- $settings = get_site_option( $setting_name, false, false );
2442
- } else {
2443
- $settings = get_option( $setting_name, false );
2444
- WPTOUCH_DEBUG( WPTOUCH_INFO, 'Loading setting ' . $setting_name . ' from DATABASE' );
2445
- }
2446
-
2447
  WPTOUCH_DEBUG( WPTOUCH_INFO, '.. Loading settings from database ' . $domain );
2448
 
2449
  if ( !$settings ) {
2450
  // Nothing stored in the database, return default settings
2451
- WPTOUCH_DEBUG( WPTOUCH_INFO, '..What, no chicken? ' . $domain );
2452
  $settings = $this->get_setting_defaults( $domain );
2453
  } else {
2454
  // Check for stray serialization
@@ -2564,7 +2694,11 @@ class WPtouchProFour {
2564
  }
2565
 
2566
  function is_supported_device() {
2567
- $user_agent = apply_filters( 'wptouch_user_agent', str_replace( 'Twitter for iPhone', '', $_SERVER['HTTP_USER_AGENT'] ) );
 
 
 
 
2568
 
2569
  $settings = $this->get_settings();
2570
 
@@ -2948,7 +3082,7 @@ class WPtouchProFour {
2948
  return $parent_info->location;
2949
  } else {
2950
  return $settings->current_theme_location . DIRECTORY_SEPARATOR . $settings->current_theme_name;
2951
- }
2952
  }
2953
 
2954
  function setup_theme_styles() {
@@ -3025,10 +3159,15 @@ class WPtouchProFour {
3025
  }
3026
 
3027
  function verify_post_nonce() {
3028
- $nonce = $this->post['wptouch-admin-nonce'];
3029
- if ( !wp_verify_nonce( $nonce, 'wptouch-post-nonce' ) ) {
3030
  WPTOUCH_DEBUG( WPTOUCH_SECURITY, "Unable to verify WPtouch post nonce" );
3031
  die( 'Unable to verify WPtouch Pro post nonce' );
 
 
 
 
 
 
3032
  }
3033
 
3034
  return true;
374
 
375
  function desktop_shortcode_magic( $content ) {
376
  if ( $this->is_mobile_device && $this->showing_mobile_theme ) {
377
+
378
  global $woocommerce;
379
 
380
  if ( is_singular() && ( !is_object( $woocommerce ) || !( is_cart() || is_checkout() ) ) ) {
381
  $should_regenerate = true;
 
382
  $shortcode_data = get_post_meta( get_the_ID(), 'wptouch_sc_data', true );
383
  if ( $shortcode_data ) {
384
  if ( $shortcode_data->has_desktop_shortcode ) {
402
  }
403
 
404
  if ( $should_regenerate ) {
405
+ $scripts_object = wp_scripts();
406
+ update_post_meta( get_the_ID(), 'wptouch_sc_scripts', $scripts_object->queue );
407
+
408
+ $styles_object = wp_styles();
409
+ update_post_meta( get_the_ID(), 'wptouch_sc_styles', $styles_object->queue );
410
+
411
  $content = '<div class="wptouch-sc-content" data-post-id="' . get_the_ID() . '"></div><div style="display: none;" class="wptouch-orig-content">' . $content . '</div>';
412
  } else {
413
  $content = wptexturize( $content );
414
+
415
+ // Enqueue missing scripts
416
+ foreach ( $shortcode_data->scripts as $script ) {
417
+ wp_enqueue_script( $script->handle, $script->src, $script->deps, $script->ver );
418
+ if ( is_array( $script->extra ) && isset( $script->extra[ 'data' ] ) ) {
419
+ wp_scripts()->add_data( $script->handle, 'data', $script->extra[ 'data' ] );
420
+ }
421
+ }
422
+
423
+ // Enqueue missing styles
424
+ foreach ( $shortcode_data->styles as $style ) {
425
+ wp_enqueue_style( $style->handle, $style->src, $style->deps, $style->ver, $style->args );
426
+ }
427
  }
428
  }
429
 
433
  }
434
  }
435
 
436
+ function desktop_shortcode_get_assets( $post_id, $type ) {
437
+ // Compares assets loaded on original page load to those loaded during AJAX content retrieval and prepares the balance for enqueuing in later page views (from our cache)
438
+ if ( $type == 'scripts' ) {
439
+ $source_object = wp_scripts();
440
+ } elseif ( $type == 'styles' ) {
441
+ $source_object = wp_styles();
442
+ }
443
+
444
+ $starting_assets = get_post_meta( $post_id, 'wptouch_sc_' . $type, true );
445
+ $queued_assets = $source_object->queue;
446
+ $registered_assets = $source_object->registered;
447
+ $missing_assets = array_diff( $queued_assets, $starting_assets );
448
+
449
+ $return_array = array();
450
+
451
+ foreach ( $missing_assets as $asset ) {
452
+ $return_array[] = $registered_assets[ $asset ];
453
+ }
454
+
455
+ // cleanup postmeta
456
+ delete_post_meta( $post_id, 'wptouch_sc_' . $type );
457
+
458
+ return $return_array;
459
+ }
460
+
461
  function handle_desktop_shortcode_save_post( $post_id ) {
462
  delete_post_meta( $post_id, 'wptouch_sc_data' );
463
  }
483
  remove_action( 'the_content', 'wptouch_addon_the_content_mobile_content', 1 );
484
  $content = apply_filters( 'the_content', $post_content );
485
 
486
+ $shortcode_data->scripts = $this->desktop_shortcode_get_assets( $this->post[ 'post_id' ], 'scripts' );
487
+ $shortcode_data->styles = $this->desktop_shortcode_get_assets( $this->post[ 'post_id' ], 'styles' );
488
+
489
  $shortcode_data->valid_until = time() + 3600*24;
490
  $shortcode_data->shortcode_content = $content;
491
 
675
 
676
  function load_addon_modules() {
677
  $settings = $this->get_settings();
678
+ $execute_hooks = false;
679
+
680
+ if ( is_multisite() ) {
681
+ $multisite_info = get_site_option( 'wptouch_multisite_active', false, false );
682
+ if ( $multisite_info ) {
683
+ $addon_file_name = WP_CONTENT_DIR . '/' . $multisite_info->location . '/' . $multisite_info->addon_name . '/' . $multisite_info->addon_name . '.php';
684
+ // Load the add-on file
685
+ if ( file_exists( $addon_file_name ) ) {
686
+ require_once( $addon_file_name );
687
+
688
+ $execute_hooks = true;
689
+ }
690
+ }
691
+ }
692
 
693
  if ( count( $settings->active_addons ) ) {
694
  foreach( $settings->active_addons as $addon_name => $addon_info ) {
697
  // Load the add-on file
698
  if ( file_exists( $addon_file_name ) ) {
699
  require_once( $addon_file_name );
700
+
701
+ $execute_hooks = true;
702
  }
703
  }
704
+ }
705
 
706
+ if ( $execute_hooks ) {
707
  do_action( 'wptouch_addon_init' );
708
 
709
  if ( is_admin() ) {
1218
 
1219
  function handle_activation() {
1220
  // activation hook
1221
+
1222
+ // Clear shortcode data
1223
+ delete_post_meta_by_key( 'wptouch_sc_data' );
1224
+
1225
  $site_root = get_home_path();
1226
  if ( file_exists( $site_root . 'robots.txt' ) ) {
1227
 
2444
  }
2445
  }
2446
 
2447
+ function get_raw_settings( $domain ) {
2448
+ $settings = array();
2449
+
2450
+ $setting_name = $this->get_wp_setting_name_for_domain( $domain );
2451
+
2452
+ if ( $this->is_domain_site_wide( $domain ) ) {
2453
+ WPTOUCH_DEBUG( WPTOUCH_INFO, 'Loading site wide option on DOMAIN ' . $domain );
2454
+ $settings = get_site_option( $setting_name, false, false );
2455
+ } else {
2456
+ $settings = get_option( $setting_name, false );
2457
+ WPTOUCH_DEBUG( WPTOUCH_INFO, 'Loading setting ' . $setting_name . ' from DATABASE' );
2458
+
2459
+ }
2460
+
2461
+ if ( is_object( $settings ) ) {
2462
+ $settings->domain = $domain;
2463
+ }
2464
+
2465
+ return $settings;
2466
+ }
2467
+
2468
+ function update_raw_settings( $domain, $settings ) {
2469
+ $setting_name = $this->get_wp_setting_name_for_domain( $domain );
2470
+
2471
+ if ( $this->is_domain_site_wide( $domain ) ) {
2472
+ WPTOUCH_DEBUG( WPTOUCH_VERBOSE, 'Saving site wide option for domain ' . $domain );
2473
+ update_site_option( $setting_name, $settings );
2474
+ } else {
2475
+ WPTOUCH_DEBUG( WPTOUCH_VERBOSE, 'Saving non-site wide option for domain ' . $domain );
2476
+ update_option( $setting_name, $settings );
2477
+ }
2478
+ }
2479
+
2480
+ function seletively_unset( $name, &$object ) {
2481
+ if ( isset( $object->$name ) ) {
2482
+ unset( $object->$name );
2483
+ }
2484
+ }
2485
+
2486
  function get_setting_defaults( $domain ) {
2487
  $setting_defaults = new WPtouchSettings;
2488
 
2492
  $setting_defaults = new WPtouchDefaultSettingsBNCID30;
2493
  } else if ( $domain == 'compat' ) {
2494
  $setting_defaults = new WPtouchDefaultSettingsCompat;
2495
+ } else if ( $domain == 'multisite' ) {
2496
+ $setting_defaults = new WPtouchDefaultSettingsMultisite;
2497
  } else {
2498
  $setting_defaults = apply_filters( 'wptouch_setting_defaults', $setting_defaults, $domain );
2499
  $setting_defaults = apply_filters( 'wptouch_setting_defaults_' . wptouch_strip_dashes( $domain ), $setting_defaults );
2500
  }
2501
 
2502
+ if ( is_multisite() && $domain != 'multisite' && !is_network_admin() ) {
2503
+ $multisite_settings = $this->get_raw_settings( 'multisite' );
2504
+
2505
+ if ( $multisite_settings && $multisite_settings->multisite_use_master_settings ) {
2506
+ $master_blog_id = $multisite_settings->multisite_master_site;
2507
+
2508
+ $current_blog_id = get_current_blog_id();
2509
+
2510
+ if ( $current_blog_id != $master_blog_id ) {
2511
+ switch_to_blog( $master_blog_id );
2512
+
2513
+ // load settings
2514
+ $settings = $this->get_raw_settings( $domain );
2515
+
2516
+ if ( $domain == 'wptouch_pro' ) {
2517
+ $this->seletively_unset( 'site_title', $settings );
2518
+ $this->seletively_unset( 'homepage_redirect_wp_target', $settings );
2519
+ $this->seletively_unset( 'homepage_redirect_custom_target', $settings );
2520
+ $this->seletively_unset( 'custom_menu_name', $settings );
2521
+ $this->seletively_unset( 'appended_menu_name', $settings );
2522
+ $this->seletively_unset( 'prepended_menu_name', $settings );
2523
+ }
2524
+
2525
+ $settings_defaults = $settings;
2526
+
2527
+ // merge settings
2528
+ switch_to_blog( $current_blog_id );
2529
+ }
2530
+ }
2531
+ }
2532
+
2533
  $settings_defaults = apply_filters( 'wptouch_settings_override_defaults', $setting_defaults, $domain );
2534
 
2535
  return $setting_defaults;
2536
  }
2537
 
2538
  function get_active_setting_domains() {
2539
+ $active_domains = array( 'wptouch_pro', 'bncid' , 'compat', 'addons', 'multisite' );
2540
 
2541
  return apply_filters( 'wptouch_registered_setting_domains', $active_domains );
2542
  }
2548
  function is_domain_site_wide( $domain ) {
2549
  $site_wide = false;
2550
  if ( is_multisite() ) {
2551
+ $site_wide_domains = array( 'bncid', 'multisite' );
2552
 
2553
  $domains = apply_filters( 'wptouch_domain_site_wide', false, $site_wide_domains );
2554
  if ( in_array( $domain, $site_wide_domains ) ) {
2569
 
2570
  if ( isset( $this->settings_objects[ $domain ] ) ) {
2571
  // settings have been loaded before
 
2572
  $settings = $this->settings_objects[ $domain ];
2573
 
2574
  WPTOUCH_DEBUG( WPTOUCH_INFO, '.. Returning previously loaded settings ' . $domain );
2575
  } else {
2576
  // settings have not been loaded
2577
+ $settings = $this->get_raw_settings( $domain );
 
 
 
 
 
 
 
 
 
2578
  WPTOUCH_DEBUG( WPTOUCH_INFO, '.. Loading settings from database ' . $domain );
2579
 
2580
  if ( !$settings ) {
2581
  // Nothing stored in the database, return default settings
 
2582
  $settings = $this->get_setting_defaults( $domain );
2583
  } else {
2584
  // Check for stray serialization
2694
  }
2695
 
2696
  function is_supported_device() {
2697
+ $exclude_patterns = array(
2698
+ 'FBSN/iPhone OS' => '',
2699
+ 'Twitter for iPhone' => ''
2700
+ );
2701
+ $user_agent = apply_filters( 'wptouch_user_agent', strtr( $_SERVER['HTTP_USER_AGENT'], $exclude_patterns ) );
2702
 
2703
  $settings = $this->get_settings();
2704
 
3082
  return $parent_info->location;
3083
  } else {
3084
  return $settings->current_theme_location . DIRECTORY_SEPARATOR . $settings->current_theme_name;
3085
+ }
3086
  }
3087
 
3088
  function setup_theme_styles() {
3159
  }
3160
 
3161
  function verify_post_nonce() {
3162
+ if ( !isset( $this->post[ 'wptouch-admin-nonce' ] ) ) {
 
3163
  WPTOUCH_DEBUG( WPTOUCH_SECURITY, "Unable to verify WPtouch post nonce" );
3164
  die( 'Unable to verify WPtouch Pro post nonce' );
3165
+ } else {
3166
+ $nonce = $this->post['wptouch-admin-nonce'];
3167
+ if ( !wp_verify_nonce( $nonce, 'wptouch-post-nonce' ) ) {
3168
+ WPTOUCH_DEBUG( WPTOUCH_SECURITY, "Unable to verify WPtouch post nonce" );
3169
+ die( 'Unable to verify WPtouch Pro post nonce' );
3170
+ }
3171
  }
3172
 
3173
  return true;
core/config.php CHANGED
@@ -86,7 +86,6 @@ define( 'WPTOUCH_EXCERPT_LENGTH', 24 );
86
  define( 'WPTOUCH_PRO_README_FILE', 'http://www.wptouch.com/wptouch-pro-4/readme.txt' );
87
 
88
  define( 'WPTOUCH_ADMIN_UPDATES_AVAILABLE', __( 'Updates Available', 'wptouch-pro' ) );
89
- define( 'WPTOUCH_ADMIN_MULTISITE_SETUP', __( 'Multisite Setup', 'wptouch-pro' ) );
90
  define( 'WPTOUCH_ADMIN_SETUP_GENERAL', __( 'General', 'wptouch-pro' ) );
91
  define( 'WPTOUCH_ADMIN_SETUP_COMPAT', __( 'Compatibility', 'wptouch-pro' ) );
92
  define( 'WPTOUCH_ADMIN_SETUP_DEVICES', __( 'Devices', 'wptouch-pro' ) );
86
  define( 'WPTOUCH_PRO_README_FILE', 'http://www.wptouch.com/wptouch-pro-4/readme.txt' );
87
 
88
  define( 'WPTOUCH_ADMIN_UPDATES_AVAILABLE', __( 'Updates Available', 'wptouch-pro' ) );
 
89
  define( 'WPTOUCH_ADMIN_SETUP_GENERAL', __( 'General', 'wptouch-pro' ) );
90
  define( 'WPTOUCH_ADMIN_SETUP_COMPAT', __( 'Compatibility', 'wptouch-pro' ) );
91
  define( 'WPTOUCH_ADMIN_SETUP_DEVICES', __( 'Devices', 'wptouch-pro' ) );
core/globals.php CHANGED
@@ -64,7 +64,7 @@ function wptouch_strip_dashes( $str ) {
64
  }
65
 
66
  function wptouch_convert_to_class_name( $class_to_convert ) {
67
- return str_replace( array( ' ', '"', '.', '\'', '#' ), array( '-', '', '-', '', '' ), strtolower( $class_to_convert ) );
68
  }
69
 
70
  function wptouch_do_template( $template_name ) {
@@ -497,7 +497,7 @@ function wptouch_free_upgrade_plugin() {
497
 
498
  $plugin_name = 'wptouch/wptouch.php';
499
 
500
- // Check for WordPress 3.0 function
501
  if ( function_exists( 'is_super_admin' ) ) {
502
  $option = get_site_transient( 'update_plugins' );
503
  } else {
@@ -568,4 +568,26 @@ function wptouch_free_upgrade_plugin() {
568
  } else {
569
  return '0';
570
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
571
  }
64
  }
65
 
66
  function wptouch_convert_to_class_name( $class_to_convert ) {
67
+ return str_replace( array( ' ', '"', '.', '\'', '#', '(', ')' ), array( '-', '', '-', '', '', '-', '-' ), strtolower( $class_to_convert ) );
68
  }
69
 
70
  function wptouch_do_template( $template_name ) {
497
 
498
  $plugin_name = 'wptouch/wptouch.php';
499
 
500
+ // Check for WordPress 3.0 function
501
  if ( function_exists( 'is_super_admin' ) ) {
502
  $option = get_site_transient( 'update_plugins' );
503
  } else {
568
  } else {
569
  return '0';
570
  }
571
+ }
572
+
573
+ function wptouch_can_show_page( $page_name ) {
574
+ return apply_filters( 'wptouch_can_show_page', true, $page_name );
575
+ }
576
+
577
+ function wptouch_hex_to_rgb($hexStr, $returnAsString = false, $seperator = ',') {
578
+ $hexStr = preg_replace( "/[^0-9A-Fa-f]/", '', $hexStr ); // Gets a proper hex string
579
+ $rgbArray = array();
580
+ if ( strlen( $hexStr ) == 6 ) { //If a proper hex code, convert using bitwise operation. No overhead... faster
581
+ $colorVal = hexdec( $hexStr );
582
+ $rgbArray[ 'red' ] = 0xFF & ( $colorVal >> 0x10 );
583
+ $rgbArray[ 'green' ] = 0xFF & ( $colorVal >> 0x8 );
584
+ $rgbArray[ 'blue' ] = 0xFF & $colorVal;
585
+ } elseif ( strlen( $hexStr ) == 3 ) { //if shorthand notation, need some string manipulations
586
+ $rgbArray[ 'red' ] = hexdec( str_repeat( substr( $hexStr, 0, 1 ), 2 ) );
587
+ $rgbArray[ 'green' ] = hexdec( str_repeat( substr( $hexStr, 1, 1 ), 2 ) );
588
+ $rgbArray[ 'blue' ] = hexdec( str_repeat( substr( $hexStr, 2, 1 ), 2 ) );
589
+ } else {
590
+ return false; //Invalid hex color code
591
+ }
592
+ return $returnAsString ? implode( $seperator, $rgbArray ) : $rgbArray; // returns the rgb string or the associative array
593
  }
core/multisite.php CHANGED
@@ -7,7 +7,7 @@ if ( ! function_exists( 'is_plugin_active_for_network' ) ) {
7
  function wptouch_is_controlled_network() {
8
  $bncid_info = wptouch_get_settings( 'bncid' );
9
 
10
- return ( is_plugin_active_for_network( WPTOUCH_PLUGIN_SLUG ) && $bncid_info->multisite_control );
11
  }
12
 
13
  function wptouch_is_multisite_enabled() {
@@ -70,3 +70,372 @@ function wptouch_is_network_available( $type, $check_product = false ) {
70
 
71
  return false;
72
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
7
  function wptouch_is_controlled_network() {
8
  $bncid_info = wptouch_get_settings( 'bncid' );
9
 
10
+ return ( is_plugin_active_for_network( WPTOUCH_PLUGIN_SLUG ) && $bncid_info->multisite_control && !defined( 'WPTOUCH_IS_FREE' ) );
11
  }
12
 
13
  function wptouch_is_multisite_enabled() {
70
 
71
  return false;
72
  }
73
+
74
+ define( 'ADDON_MULTISITE_OPTIONS_PAGENAME', 'Multisite' );
75
+ define( 'ADDON_MULTISITE_DEPLOYMENT_PAGENAME', 'Deployment' );
76
+ define( 'WPTOUCH_MULTISITE_DOMAIN', 'multisite' );
77
+
78
+ if ( !defined( 'WPTOUCH_MULTISITE_LIMIT' ) ) {
79
+ define( 'WPTOUCH_MULTISITE_LIMIT', 1000 );
80
+ }
81
+
82
+ if ( is_multisite() ) {
83
+ add_filter( 'wptouch_admin_page_render_wptouch-multisite', 'wptouch_addon_multisite_render_settings' );
84
+ add_filter( 'wptouch_can_show_page', 'wptouch_multisite_can_show_page', 10, 2 );
85
+ }
86
+
87
+ function wptouch_multisite_page_classes( $page ) {
88
+ $value = wptouch_multisite_can_show_page_internal( $page, false );
89
+
90
+ if ( !$value ) {
91
+ echo 'should-hide';
92
+ }
93
+ }
94
+
95
+ function wptouch_multisite_can_show_page_internal( $page_name, $default ) {
96
+ $value = $default;
97
+
98
+ $settings = wptouch_get_settings( 'multisite' );
99
+
100
+ switch( $page_name ) {
101
+ case 'general':
102
+ $value = $settings->multisite_show_general_settings;
103
+ break;
104
+ case 'site-compat':
105
+ $value = $settings->multisite_show_site_compat;
106
+ break;
107
+ case 'devices':
108
+ $value = $settings->multisite_show_devices;
109
+ break;
110
+ case 'menu':
111
+ $value = $settings->multisite_show_menus;
112
+ break;
113
+ case 'themes':
114
+ $value = $settings->multisite_show_themes;
115
+ break;
116
+ case 'extensions':
117
+ $value = $settings->multisite_show_extensions;
118
+ break;
119
+ case 'colors':
120
+ $value = $settings->multisite_show_colors;
121
+ break;
122
+ case 'social_sharing':
123
+ $value = $settings->multisite_show_social_sharing;
124
+ break;
125
+ case 'social_media':
126
+ $value = $settings->multisite_show_social_media;
127
+ break;
128
+ }
129
+
130
+ return $value;
131
+ }
132
+
133
+ function wptouch_multisite_can_show_page( $current_value, $page_name ) {
134
+ $value = $current_value;
135
+
136
+ if ( is_network_admin() ) {
137
+ return true;
138
+ }
139
+
140
+ $value = wptouch_multisite_can_show_page_internal( $page_name, $value );
141
+
142
+ return $value || current_user_can( 'manage_network' );
143
+ }
144
+
145
+ function wptouch_multisite_get_site_array() {
146
+ $sites = array();
147
+
148
+ if ( false === ( $sites = get_transient( 'wptouch_multisite_site_info' ) ) ) {
149
+ $wp_sites = wp_get_sites( array( 'limit' => WPTOUCH_MULTISITE_LIMIT ) );
150
+ foreach( $wp_sites as $site ) {
151
+ $site_details = get_blog_details( $site[ 'blog_id' ] );
152
+ $sites[ $site[ 'blog_id' ] ] = $site_details->blogname;
153
+ }
154
+
155
+ set_transient( 'wptouch_multisite_site_info', $sites, 300 );
156
+ }
157
+
158
+ return $sites;
159
+ }
160
+
161
+ function wptouch_has_multisite_support_licensed() {
162
+ if ( defined( 'WPTOUCH_IS_FREE' ) ) {
163
+ return false;
164
+ } else {
165
+ $bncid_settings = wptouch_get_settings( 'bncid' );
166
+
167
+ return ( in_array( 'multisite-support', $bncid_settings->license_support_packages ) );
168
+ }
169
+ }
170
+
171
+ function wptouch_addon_multisite_render_settings( $page_options ) {
172
+ wptouch_add_sub_page(
173
+ ADDON_MULTISITE_OPTIONS_PAGENAME,
174
+ 'wptouch-addon-multisite',
175
+ $page_options
176
+ );
177
+
178
+ wptouch_add_page_section(
179
+ ADDON_MULTISITE_OPTIONS_PAGENAME,
180
+ __( 'General Options', 'wptouch-pro' ),
181
+ 'mutisite-setup',
182
+ array(
183
+ wptouch_add_setting(
184
+ 'list',
185
+ 'force_network_locale',
186
+ __( 'Admin Language', 'wptouch-pro' ),
187
+ false,
188
+ WPTOUCH_SETTING_BASIC,
189
+ '3.0',
190
+ wptouch_admin_get_languages(),
191
+ 'wptouch_pro'
192
+ ),
193
+ wptouch_add_setting(
194
+ 'checkbox',
195
+ 'multisite_control',
196
+ __( 'Control themes and extension downloads and updates', 'wptouch-pro' ),
197
+ __( 'If enabled, sub-sites can only activate/deactivate themes and extensions that have been downloaded in the network admin.', 'wptouch-pro' ),
198
+ WPTOUCH_SETTING_BASIC,
199
+ '4.0',
200
+ false,
201
+ 'bncid'
202
+ )
203
+ ),
204
+ $page_options
205
+ );
206
+
207
+ if ( wptouch_has_multisite_support_licensed() ) {
208
+ wptouch_add_sub_page(
209
+ ADDON_MULTISITE_DEPLOYMENT_PAGENAME,
210
+ 'wptouch-addon-deployment',
211
+ $page_options
212
+ );
213
+
214
+ wptouch_add_page_section(
215
+ ADDON_MULTISITE_OPTIONS_PAGENAME,
216
+ __( 'Network Defaults', 'wptouch-pro' ),
217
+ 'multisite-options',
218
+ array(
219
+ wptouch_add_pro_setting(
220
+ 'checkbox',
221
+ 'multisite_use_master_settings',
222
+ __( 'Use my settings for new sites', 'wptouch-pro' ),
223
+ '',
224
+ WPTOUCH_SETTING_BASIC,
225
+ '1.0.0'
226
+ ),
227
+ wptouch_add_pro_setting(
228
+ 'list',
229
+ 'multisite_master_site',
230
+ __( 'Source site', 'wptouch-pro' ),
231
+ '',
232
+ WPTOUCH_SETTING_BASIC,
233
+ '1.0.0',
234
+ wptouch_multisite_get_site_array()
235
+ ),
236
+ ),
237
+ $page_options,
238
+ WPTOUCH_MULTISITE_DOMAIN,
239
+ false,
240
+ __( 'Configure WPtouch to use a site for defaults on new network sites instead of its defaults', 'wptouch-pro' )
241
+ );
242
+
243
+ wptouch_add_page_section(
244
+ ADDON_MULTISITE_OPTIONS_PAGENAME,
245
+ __( 'Subsite Customizable Settings', 'wptouch-pro' ),
246
+ 'multisite-options',
247
+ array(
248
+ wptouch_add_pro_setting(
249
+ 'checkbox',
250
+ 'multisite_show_general_settings',
251
+ __( 'General Settings', 'wptouch-pro' ),
252
+ '',
253
+ WPTOUCH_SETTING_BASIC,
254
+ '1.0.0'
255
+ ),
256
+ wptouch_add_pro_setting(
257
+ 'checkbox',
258
+ 'multisite_show_site_compat',
259
+ __( 'Site Compatibility', 'wptouch-pro' ),
260
+ '',
261
+ WPTOUCH_SETTING_BASIC,
262
+ '1.0.0'
263
+ ),
264
+ wptouch_add_pro_setting(
265
+ 'checkbox',
266
+ 'multisite_show_devices',
267
+ __( 'Devices', 'wptouch-pro' ),
268
+ '',
269
+ WPTOUCH_SETTING_BASIC,
270
+ '1.0.0'
271
+ ),
272
+ wptouch_add_pro_setting(
273
+ 'checkbox',
274
+ 'multisite_show_menus',
275
+ __( 'Menu Settings', 'wptouch-pro' ),
276
+ '',
277
+ WPTOUCH_SETTING_BASIC,
278
+ '1.0.0'
279
+ ),
280
+ wptouch_add_pro_setting(
281
+ 'checkbox',
282
+ 'multisite_show_themes',
283
+ __( 'Themes', 'wptouch-pro' ),
284
+ '',
285
+ WPTOUCH_SETTING_BASIC,
286
+ '1.0.0'
287
+ ),
288
+ wptouch_add_pro_setting(
289
+ 'checkbox',
290
+ 'multisite_show_extensions',
291
+ __( 'Extensions', 'wptouch-pro' ),
292
+ '',
293
+ WPTOUCH_SETTING_BASIC,
294
+ '1.0.0'
295
+ ),
296
+ wptouch_add_pro_setting(
297
+ 'checkbox',
298
+ 'multisite_show_colors',
299
+ __( 'Colors', 'wptouch-pro' ),
300
+ '',
301
+ WPTOUCH_SETTING_BASIC,
302
+ '1.0.0'
303
+ ),
304
+ wptouch_add_pro_setting(
305
+ 'checkbox',
306
+ 'multisite_show_social_media',
307
+ __( 'Social Media Links', 'wptouch-pro' ),
308
+ '',
309
+ WPTOUCH_SETTING_BASIC,
310
+ '1.0.0'
311
+ ),
312
+ wptouch_add_pro_setting(
313
+ 'checkbox',
314
+ 'multisite_show_social_sharing',
315
+ __( 'Social Sharing', 'wptouch-pro' ),
316
+ '',
317
+ WPTOUCH_SETTING_BASIC,
318
+ '1.0.0'
319
+ ),
320
+ ),
321
+ $page_options,
322
+ WPTOUCH_MULTISITE_DOMAIN,
323
+ false,
324
+ __( 'Select which settings sections are available to users in network subsites (network admins always see settings).', 'wptouch-pro' )
325
+ );
326
+
327
+ wptouch_add_page_section(
328
+ ADDON_MULTISITE_DEPLOYMENT_PAGENAME,
329
+ __( 'Source Site', 'wptouch-pro' ),
330
+ 'multisite-deployment-source',
331
+ array(
332
+ wptouch_add_pro_setting(
333
+ 'list',
334
+ 'multisite_deployment_source',
335
+ __( 'Source site', 'wptouch-pro' ),
336
+ '',
337
+ WPTOUCH_SETTING_BASIC,
338
+ '1.0.0',
339
+ wptouch_multisite_get_site_array()
340
+ ),
341
+ wptouch_add_pro_setting(
342
+ 'checkbox',
343
+ 'multisite_deploy_general_settings',
344
+ __( 'General Settings', 'wptouch-pro' ),
345
+ '',
346
+ WPTOUCH_SETTING_BASIC,
347
+ '1.0.0'
348
+ ),
349
+ wptouch_add_pro_setting(
350
+ 'checkbox',
351
+ 'multisite_deploy_site_compat',
352
+ __( 'Site Compatibility', 'wptouch-pro' ),
353
+ '',
354
+ WPTOUCH_SETTING_BASIC,
355
+ '1.0.0'
356
+ ),
357
+ wptouch_add_pro_setting(
358
+ 'checkbox',
359
+ 'multisite_deploy_devices',
360
+ __( 'Devices', 'wptouch-pro' ),
361
+ '',
362
+ WPTOUCH_SETTING_BASIC,
363
+ '1.0.0'
364
+ ),
365
+ wptouch_add_pro_setting(
366
+ 'checkbox',
367
+ 'multisite_deploy_menus',
368
+ __( 'Menu Settings', 'wptouch-pro' ),
369
+ '',
370
+ WPTOUCH_SETTING_BASIC,
371
+ '1.0.0'
372
+ ),
373
+ wptouch_add_pro_setting(
374
+ 'checkbox',
375
+ 'multisite_deploy_themes',
376
+ __( 'Themes', 'wptouch-pro' ),
377
+ '',
378
+ WPTOUCH_SETTING_BASIC,
379
+ '1.0.0'
380
+ ),
381
+ wptouch_add_pro_setting(
382
+ 'checkbox',
383
+ 'multisite_deploy_extensions',
384
+ __( 'Extensions', 'wptouch-pro' ),
385
+ '',
386
+ WPTOUCH_SETTING_BASIC,
387
+ '1.0.0'
388
+ ),
389
+ wptouch_add_pro_setting(
390
+ 'checkbox',
391
+ 'multisite_deploy_colors',
392
+ __( 'Colors', 'wptouch-pro' ),
393
+ '',
394
+ WPTOUCH_SETTING_BASIC,
395
+ '1.0.0'
396
+ ),
397
+ wptouch_add_pro_setting(
398
+ 'checkbox',
399
+ 'multisite_deploy_social_media',
400
+ __( 'Social Media Links', 'wptouch-pro' ),
401
+ '',
402
+ WPTOUCH_SETTING_BASIC,
403
+ '1.0.0'
404
+ ),
405
+ wptouch_add_pro_setting(
406
+ 'checkbox',
407
+ 'multisite_deploy_social_sharing',
408
+ __( 'Social Sharing', 'wptouch-pro' ),
409
+ '',
410
+ WPTOUCH_SETTING_BASIC,
411
+ '1.0.0'
412
+ ),
413
+ ),
414
+ $page_options,
415
+ WPTOUCH_MULTISITE_DOMAIN
416
+ );
417
+
418
+ wptouch_add_page_section(
419
+ ADDON_MULTISITE_DEPLOYMENT_PAGENAME,
420
+ __( 'Destination Sites', 'wptouch-pro' ),
421
+ 'multisite-deployment-sites',
422
+ array(
423
+ wptouch_add_pro_Setting(
424
+ 'sites',
425
+ 'multisite_sites',
426
+ '',
427
+ '',
428
+ WPTOUCH_SETTING_BASIC,
429
+ '1.0.0'
430
+ )
431
+ ),
432
+ $page_options,
433
+ WPTOUCH_MULTISITE_DOMAIN
434
+ );
435
+ }
436
+
437
+ return $page_options;
438
+ }
439
+
440
+
441
+
core/theme.php CHANGED
@@ -105,26 +105,28 @@ function wptouch_make_css_friendly( $name ) {
105
  function wptouch_canonical_link() {
106
  global $post;
107
 
108
- $settings = foundation_get_settings();
109
- $wordpress_posts_page = get_option( 'page_for_posts' );
110
- $wptouch_posts_page = $settings->latest_posts_page;
111
- $on_wptouch_posts_page = false;
112
-
113
- if ( $wptouch_posts_page != 'none' ) {
114
- $on_wptouch_posts_page = get_permalink( $post->ID ) == get_permalink( $wptouch_posts_page );
115
- }
 
116
 
117
- if ( is_home() && !$on_wptouch_posts_page ) {
118
- if ( $wordpress_posts_page != 0 ) {
119
- $permalink = get_permalink( $wordpress_posts_page );
 
 
 
120
  } else {
121
- $permalink = site_url() . '/';
122
  }
123
- } else {
124
- $permalink = get_permalink( $post->ID );
125
- }
126
 
127
- echo '<link rel="canonical" href="' . $permalink . '" />';
 
128
  }
129
 
130
  function wptouch_the_title() {
105
  function wptouch_canonical_link() {
106
  global $post;
107
 
108
+ if ( is_object( $post ) ) {
109
+ $settings = foundation_get_settings();
110
+ $wordpress_posts_page = get_option( 'page_for_posts' );
111
+ $wptouch_posts_page = $settings->latest_posts_page;
112
+ $on_wptouch_posts_page = false;
113
+
114
+ if ( $wptouch_posts_page != 'none' ) {
115
+ $on_wptouch_posts_page = get_permalink( $post->ID ) == get_permalink( $wptouch_posts_page );
116
+ }
117
 
118
+ if ( is_home() && !$on_wptouch_posts_page ) {
119
+ if ( $wordpress_posts_page != 0 ) {
120
+ $permalink = get_permalink( $wordpress_posts_page );
121
+ } else {
122
+ $permalink = site_url() . '/';
123
+ }
124
  } else {
125
+ $permalink = get_permalink( $post->ID );
126
  }
 
 
 
127
 
128
+ echo '<link rel="canonical" href="' . $permalink . '" />';
129
+ }
130
  }
131
 
132
  function wptouch_the_title() {
lang/wptouch.pot CHANGED
@@ -2,9 +2,9 @@
2
  # This file is distributed under the same license as the WPtouch Mobile Plugin package.
3
  msgid ""
4
  msgstr ""
5
- "Project-Id-Version: WPtouch Mobile Plugin 4.0.4\n"
6
  "Report-Msgid-Bugs-To: http://wordpress.org/tag/wptouch\n"
7
- "POT-Creation-Date: 2016-02-29 21:45:02+00:00\n"
8
  "MIME-Version: 1.0\n"
9
  "Content-Type: text/plain; charset=UTF-8\n"
10
  "Content-Transfer-Encoding: 8bit\n"
@@ -12,15 +12,15 @@ msgstr ""
12
  "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
13
  "Language-Team: LANGUAGE <LL@li.org>\n"
14
 
15
- #: admin/customizer/wptouch-customizer.php:557
16
  msgid "Device + Orientation"
17
  msgstr ""
18
 
19
- #: admin/customizer/wptouch-customizer.php:582
20
  msgid "Switch to Mobile Theme"
21
  msgstr ""
22
 
23
- #: admin/customizer/wptouch-customizer.php:583
24
  msgid "Switch to Desktop Theme"
25
  msgstr ""
26
 
@@ -168,9 +168,9 @@ msgid "Product License Key"
168
  msgstr ""
169
 
170
  #: admin/pages/custom/wptouch-admin-license.php:80
171
- #: admin/settings/html/extension-browser-item-detail.php:5
172
  #: admin/settings/html/gopro.php:11
173
  #: admin/settings/html/theme-browser-item-detail.php:5
 
174
  msgid "Activate"
175
  msgstr ""
176
 
@@ -182,8 +182,10 @@ msgstr ""
182
  msgid "Site License"
183
  msgstr ""
184
 
185
- #: admin/pages/custom/wptouch-admin-license.php:92 core/menu-walkers.php:415
186
- msgid "Remove"
 
 
187
  msgstr ""
188
 
189
  #: admin/pages/custom/wptouch-admin-license.php:95
@@ -335,7 +337,7 @@ msgid "Thank you for purchasing a %s licence!"
335
  msgstr ""
336
 
337
  #: admin/pages/custom/wptouch-admin-wizard.php:100
338
- msgid "Multisite Network Activation"
339
  msgstr ""
340
 
341
  #: admin/pages/custom/wptouch-admin-wizard.php:101
@@ -370,10 +372,9 @@ msgstr ""
370
 
371
  #: admin/pages/custom/wptouch-admin-wizard.php:128
372
  #: admin/pages/custom/wptouch-admin-wizard.php:179
373
- #: admin/settings/html/extension-browser-item-detail.php:47
374
  #: admin/settings/html/theme-browser-item-detail.php:52
375
- #: admin/settings/html/updates-available.php:20
376
- #: admin/settings/html/updates-available.php:56 core/class-wptouch-pro.php:853
377
  msgid "Download"
378
  msgstr ""
379
 
@@ -383,7 +384,7 @@ msgstr ""
383
  #: admin/settings/html/installed_icon_sets_ajax.php:13
384
  #: admin/settings/html/installed_icon_sets_ajax.php:26
385
  #: admin/settings/html/theme-browser-item.php:12
386
- #: core/class-wptouch-pro.php:852
387
  msgid "Installed"
388
  msgstr ""
389
 
@@ -462,7 +463,7 @@ msgstr ""
462
 
463
  #: admin/pages/custom/wptouch-admin-wizard.php:254
464
  #: admin/pages/custom/wptouch-admin-wizard.php:273
465
- #: admin/pages/wptouch-admin-general-settings.php:175
466
  #: admin/settings/include/custom-latest-posts.php:11
467
  msgid "WordPress Reading Settings"
468
  msgstr ""
@@ -552,292 +553,279 @@ msgstr ""
552
  msgid "Configure Settings"
553
  msgstr ""
554
 
555
- #: admin/pages/wptouch-admin-general-settings.php:30 core/admin-render.php:75
556
- #: core/config.php:89
557
- msgid "Multisite Setup"
558
- msgstr ""
559
-
560
- #: admin/pages/wptouch-admin-general-settings.php:36
561
- msgid "Admin Language"
562
- msgstr ""
563
-
564
- #: admin/pages/wptouch-admin-general-settings.php:46
565
- msgid "Control themes and extension downloads and updates"
566
- msgstr ""
567
-
568
- #: admin/pages/wptouch-admin-general-settings.php:47
569
- msgid ""
570
- "If enabled, sub-sites can only activate/deactivate themes and extensions "
571
- "that have been downloaded in the network admin."
572
- msgstr ""
573
-
574
- #: admin/pages/wptouch-admin-general-settings.php:70 core/admin-render.php:59
575
  #: core/config.php:88
576
  msgid "Updates Available"
577
  msgstr ""
578
 
579
- #: admin/pages/wptouch-admin-general-settings.php:96
580
  msgid "Mobile Site Title"
581
  msgstr ""
582
 
583
- #: admin/pages/wptouch-admin-general-settings.php:102
584
  msgid "WPtouch Pro site title"
585
  msgstr ""
586
 
587
- #: admin/pages/wptouch-admin-general-settings.php:115
588
  msgid "If disabled WPtouch Pro will be off for visitors but can be configured."
589
  msgstr ""
590
 
591
- #: admin/pages/wptouch-admin-general-settings.php:117
592
  msgid ""
593
  "If disabled WPtouch Pro will be off for visitors but can be configured in "
594
  "the Customizer."
595
  msgstr ""
596
 
597
- #: admin/pages/wptouch-admin-general-settings.php:122
598
  msgid "Display"
599
  msgstr ""
600
 
601
- #: admin/pages/wptouch-admin-general-settings.php:128
602
  msgid "Display WPtouch Pro for mobile visitors"
603
  msgstr ""
604
 
605
- #: admin/pages/wptouch-admin-general-settings.php:136
606
  msgid "URL filtering"
607
  msgstr ""
608
 
609
- #: admin/pages/wptouch-admin-general-settings.php:141
610
  msgid "Show WPtouch Pro for all URLs"
611
  msgstr ""
612
 
613
- #: admin/pages/wptouch-admin-general-settings.php:142
614
  msgid "Exclude WPtouch Pro on these URLs"
615
  msgstr ""
616
 
617
- #: admin/pages/wptouch-admin-general-settings.php:143
618
  msgid "Only show WPtouch Pro on these URLs"
619
  msgstr ""
620
 
621
- #: admin/pages/wptouch-admin-general-settings.php:149
622
  msgid "Apply filter to these URLs/Pages"
623
  msgstr ""
624
 
625
- #: admin/pages/wptouch-admin-general-settings.php:157
626
  msgid "Require exact match"
627
  msgstr ""
628
 
629
- #: admin/pages/wptouch-admin-general-settings.php:170
630
  msgid "Mobile front page"
631
  msgstr ""
632
 
633
- #: admin/pages/wptouch-admin-general-settings.php:171
634
  msgid "You can set a different front page for WPtouch Pro visitors."
635
  msgstr ""
636
 
637
- #: admin/pages/wptouch-admin-general-settings.php:176
638
  msgid "Redirect to a page"
639
  msgstr ""
640
 
641
- #: admin/pages/wptouch-admin-general-settings.php:177
642
  msgctxt "Refers to a custom landing page"
643
  msgid "Redirect to a custom URL"
644
  msgstr ""
645
 
646
- #: admin/pages/wptouch-admin-general-settings.php:183
647
  msgid "Custom Slug or URL"
648
  msgstr ""
649
 
650
- #: admin/pages/wptouch-admin-general-settings.php:184
651
  msgid "Enter a Slug (i.e. \"/home\") or a full URL path"
652
  msgstr ""
653
 
654
- #: admin/pages/wptouch-admin-general-settings.php:202
655
  msgid "Landing Pages"
656
  msgstr ""
657
 
658
- #: admin/pages/wptouch-admin-general-settings.php:211
659
  msgid "Desktop / Mobile Switching"
660
  msgstr ""
661
 
662
- #: admin/pages/wptouch-admin-general-settings.php:217
663
  msgctxt "switches between desktop and mobile themes"
664
  msgid "Theme switch toggle"
665
  msgstr ""
666
 
667
- #: admin/pages/wptouch-admin-general-settings.php:226
668
  msgid ""
669
  "Shows a toggle in both the desktop mobile theme footers allowing users to "
670
  "switch between them."
671
  msgstr ""
672
 
673
- #: admin/pages/wptouch-admin-general-settings.php:231
674
  msgid "Page Zoom"
675
  msgstr ""
676
 
677
- #: admin/pages/wptouch-admin-general-settings.php:237
678
  msgid "Allow mobile browser zooming"
679
  msgstr ""
680
 
681
- #: admin/pages/wptouch-admin-general-settings.php:238
682
  msgid "By default WPtouch Pro disables browser zooming."
683
  msgstr ""
684
 
685
- #: admin/pages/wptouch-admin-general-settings.php:249
686
  msgid "Smart App Banner"
687
  msgstr ""
688
 
689
- #: admin/pages/wptouch-admin-general-settings.php:264
690
  msgid "Find your ID from the %siTunes Link Maker%s."
691
  msgstr ""
692
 
693
- #: admin/pages/wptouch-admin-general-settings.php:269
694
  msgid "Analytics"
695
  msgstr ""
696
 
697
- #: admin/pages/wptouch-admin-general-settings.php:275
698
  msgid "Analytics Code"
699
  msgstr ""
700
 
701
- #: admin/pages/wptouch-admin-general-settings.php:280
702
- #: admin/pages/wptouch-admin-general-settings.php:669
703
  msgid "None"
704
  msgstr ""
705
 
706
- #: admin/pages/wptouch-admin-general-settings.php:282
707
  msgid "Custom"
708
  msgstr ""
709
 
710
- #: admin/pages/wptouch-admin-general-settings.php:289
711
  msgid "Site ID"
712
  msgstr ""
713
 
714
- #: admin/pages/wptouch-admin-general-settings.php:310
715
  msgid "WPtouch Pro Love"
716
  msgstr ""
717
 
718
- #: admin/pages/wptouch-admin-general-settings.php:316
719
  msgid "Show powered by WPtouch Pro link in theme footer"
720
  msgstr ""
721
 
722
- #: admin/pages/wptouch-admin-general-settings.php:328
723
  msgid "Language"
724
  msgstr ""
725
 
726
- #: admin/pages/wptouch-admin-general-settings.php:334
727
  msgid "Theme Language"
728
  msgstr ""
729
 
730
- #: admin/pages/wptouch-admin-general-settings.php:343
731
  msgid "Also applies to admin"
732
  msgstr ""
733
 
734
- #: admin/pages/wptouch-admin-general-settings.php:362
735
  msgctxt ""
736
  "shortcodes are pieces of code [like_this] that users can drop into textareas "
737
  "that will convert to longer pieces of code"
738
  msgid "Shortcodes"
739
  msgstr ""
740
 
741
- #: admin/pages/wptouch-admin-general-settings.php:368
742
  msgid "Process desktop theme shortcodes"
743
  msgstr ""
744
 
745
- #: admin/pages/wptouch-admin-general-settings.php:376
746
  msgid "Filter out shortcodes"
747
  msgstr ""
748
 
749
- #: admin/pages/wptouch-admin-general-settings.php:377
750
  msgid "Filters out shortcodes from displaying when WPtouch Pro is active."
751
  msgstr ""
752
 
753
- #: admin/pages/wptouch-admin-general-settings.php:390
754
  msgid "Active Plugins"
755
  msgstr ""
756
 
757
- #: admin/pages/wptouch-admin-general-settings.php:401
758
  msgid ""
759
  "Attempts to disable plugins for mobile visitors. Some plugins don‘t support "
760
  "this feature due to the way they load in WordPress."
761
  msgstr ""
762
 
763
- #: admin/pages/wptouch-admin-general-settings.php:412
764
  msgid "Mobile Devices & Browsers"
765
  msgstr ""
766
 
767
- #: admin/pages/wptouch-admin-general-settings.php:472
768
  msgid "Tablets"
769
  msgstr ""
770
 
771
- #: admin/pages/wptouch-admin-general-settings.php:530
772
  msgid "Tablet Devices & Browsers"
773
  msgstr ""
774
 
775
- #: admin/pages/wptouch-admin-general-settings.php:545
776
  msgid ""
777
  "If your theme supports tablets, devices and browsers WPtouch Pro can be "
778
  "enabled for will be listed below."
779
  msgstr ""
780
 
781
- #: admin/pages/wptouch-admin-general-settings.php:551
782
  msgid "Additional User Agents"
783
  msgstr ""
784
 
785
- #: admin/pages/wptouch-admin-general-settings.php:557
786
  msgid "User agents to add"
787
  msgstr ""
788
 
789
- #: admin/pages/wptouch-admin-general-settings.php:558
790
  msgid "You can enter partial i.e. \"nokia\" or full agent strings"
791
  msgstr ""
792
 
793
- #: admin/pages/wptouch-admin-general-settings.php:575
794
  msgid "Menu Setup"
795
  msgstr ""
796
 
797
- #: admin/pages/wptouch-admin-general-settings.php:593
798
  msgid "Menu Options"
799
  msgstr ""
800
 
801
- #: admin/pages/wptouch-admin-general-settings.php:599
802
  msgid "Enable parent items as links"
803
  msgstr ""
804
 
805
- #: admin/pages/wptouch-admin-general-settings.php:600
806
  msgid "If disabled, parent menu items will only toggle child items."
807
  msgstr ""
808
 
809
- #: admin/pages/wptouch-admin-general-settings.php:607
810
  msgid "Use menu icons"
811
  msgstr ""
812
 
813
- #: admin/pages/wptouch-admin-general-settings.php:608
814
  msgid "Adds the ability to associate icons with menu items"
815
  msgstr ""
816
 
817
- #: admin/pages/wptouch-admin-general-settings.php:619
818
  msgid "Menu Icon Sets"
819
  msgstr ""
820
 
821
- #: admin/pages/wptouch-admin-general-settings.php:632
822
  #: admin/settings/html/installed_icon_sets_ajax.php:4
823
- #: core/class-wptouch-pro.php:2034 core/class-wptouch-pro.php:2035
824
  #: core/config.php:54
825
  msgid "Custom Icons"
826
  msgstr ""
827
 
828
- #: admin/pages/wptouch-admin-general-settings.php:663
829
  msgid "WordPress Pages"
830
  msgstr ""
831
 
832
- #: admin/pages/wptouch-admin-general-settings.php:681 core/admin-render.php:88
833
- #: core/config.php:94
834
  msgid "Customize Theme"
835
  msgstr ""
836
 
837
- #: admin/pages/wptouch-admin-general-settings.php:701 core/config.php:95
838
  msgid "Go Pro"
839
  msgstr ""
840
 
 
 
 
 
 
 
841
  #: admin/settings/html/button.php:6 admin/settings/html/checkbox.php:4
842
  #: admin/settings/html/checklist.php:6 admin/settings/html/color.php:8
843
  #: admin/settings/html/list.php:8 admin/settings/html/multiline-comma.php:9
@@ -877,34 +865,33 @@ msgstr ""
877
  msgid "Server Configuration"
878
  msgstr ""
879
 
880
- #: admin/settings/html/extension-browser-item-detail.php:3
881
- #: admin/settings/html/installed_icon_sets_ajax.php:25
882
- #: admin/settings/html/theme-browser-item-detail.php:3
883
- #: core/class-wptouch-pro.php:850
884
- msgid "Install"
885
- msgstr ""
886
-
887
- #: admin/settings/html/extension-browser-item-detail.php:11
888
  msgid "Back to extensions"
889
  msgstr ""
890
 
891
- #: admin/settings/html/extension-browser-item-detail.php:37
 
892
  #: admin/settings/html/theme-browser-item-detail.php:42
893
  msgid "Add to License"
894
  msgstr ""
895
 
896
- #: admin/settings/html/extension-browser-item-detail.php:52
897
- msgid "Deactivate"
898
  msgstr ""
899
 
900
- #: admin/settings/html/extension-browser-item-detail.php:61
901
- #: admin/settings/html/theme-browser-item-detail.php:79
 
 
 
 
 
902
  #: core/menu-walkers.php:365
903
  msgid "Description"
904
  msgstr ""
905
 
906
- #: admin/settings/html/extension-browser-item-detail.php:66
907
- #: admin/settings/html/theme-browser-item-detail.php:86
908
  msgid "Changelog"
909
  msgstr ""
910
 
@@ -922,7 +909,7 @@ msgstr ""
922
  msgid "No extensions available"
923
  msgstr ""
924
 
925
- #: admin/settings/html/image-upload.php:7 core/class-wptouch-pro.php:845
926
  msgid "Upload Complete!"
927
  msgstr ""
928
 
@@ -941,10 +928,16 @@ msgid ""
941
  msgstr ""
942
 
943
  #: admin/settings/html/installed_icon_sets_ajax.php:25
944
- #: core/class-wptouch-pro.php:851
945
  msgid "Installing"
946
  msgstr ""
947
 
 
 
 
 
 
 
948
  #: admin/settings/html/installed_icon_sets_ajax.php:27
949
  msgid "Unable to Install"
950
  msgstr ""
@@ -988,7 +981,7 @@ msgstr ""
988
  msgid "Customize"
989
  msgstr ""
990
 
991
- #: admin/settings/html/theme-browser-item-detail.php:64
992
  msgid "Screenshots"
993
  msgstr ""
994
 
@@ -1056,19 +1049,55 @@ msgstr ""
1056
  msgid "Update All"
1057
  msgstr ""
1058
 
1059
- #: admin/settings/html/updates-available.php:12 core/admin-render.php:81
1060
- #: core/admin-render.php:83 core/config.php:96
1061
- msgid "Themes"
1062
  msgstr ""
1063
 
1064
- #: admin/settings/html/updates-available.php:29
1065
- #: admin/settings/html/updates-available.php:52
 
1066
  msgid "Upgrade to %s"
1067
  msgstr ""
1068
 
1069
- #: admin/settings/html/updates-available.php:40 core/admin-render.php:92
1070
- #: core/admin-render.php:94 core/config.php:97
1071
- msgid "Extensions"
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1072
  msgstr ""
1073
 
1074
  #: core/addon-theme-installer.php:172
@@ -1109,18 +1138,26 @@ msgid ""
1109
  "settings later."
1110
  msgstr ""
1111
 
1112
- #: core/admin-menu.php:46
 
 
 
 
1113
  msgid "Setup Wizard"
1114
  msgstr ""
1115
 
1116
- #: core/admin-menu.php:47 core/class-wptouch-pro.php:1516
1117
  msgid "Settings"
1118
  msgstr ""
1119
 
1120
- #: core/admin-menu.php:48
1121
  msgid "License %s Support"
1122
  msgstr ""
1123
 
 
 
 
 
1124
  #: core/admin-page-templates.php:17
1125
  msgid "Mobile Page Template"
1126
  msgstr ""
@@ -1151,168 +1188,194 @@ msgstr ""
1151
  msgid "Preview Theme"
1152
  msgstr ""
1153
 
1154
- #: core/admin-render.php:54
1155
  msgid "Setup"
1156
  msgstr ""
1157
 
1158
- #: core/admin-render.php:64 core/admin-render.php:70 core/config.php:90
 
 
 
 
 
 
 
 
1159
  msgid "General"
1160
  msgstr ""
1161
 
1162
- #: core/admin-render.php:65 core/admin-render.php:72 core/config.php:92
 
1163
  msgid "Devices"
1164
  msgstr ""
1165
 
1166
- #: core/admin-render.php:66 core/admin-render.php:73 core/config.php:93
 
1167
  msgid "Menu Settings"
1168
  msgstr ""
1169
 
1170
- #: core/admin-render.php:67 core/admin-render.php:86
1171
  #: themes/foundation/root-functions.php:9
1172
  msgid "Theme Settings"
1173
  msgstr ""
1174
 
1175
- #: core/admin-render.php:68
1176
  msgid "WPtouch Pro"
1177
  msgstr ""
1178
 
1179
- #: core/admin-render.php:71
1180
  msgid "Site Compatibility"
1181
  msgstr ""
1182
 
1183
- #: core/admin-render.php:149
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1184
  msgid "Reset Settings"
1185
  msgstr ""
1186
 
1187
- #: core/class-wptouch-pro.php:550
1188
  msgid ""
1189
  "Automatic theme migration from wp-content/uploads/wptouch-data directory "
1190
  "failed. Please manually move these folders to wp-content/wptouch-data: %s"
1191
  msgstr ""
1192
 
1193
- #: core/class-wptouch-pro.php:569
1194
  msgid ""
1195
  "%sWPtouch: %s was recently disabled, but is still affecting your website and "
1196
  "caching pages.%s"
1197
  msgstr ""
1198
 
1199
- #: core/class-wptouch-pro.php:570
1200
  msgid ""
1201
  "%sPlease reactivate the plugin, disable page caching, then deactivate the "
1202
  "plugin again to correct this issue.%s"
1203
  msgstr ""
1204
 
1205
- #: core/class-wptouch-pro.php:571 core/class-wptouch-pro.php:580
1206
  msgid ""
1207
  "%sFixing this issue prevents cached desktop pages being served to mobile "
1208
  "devices and vice-versa.%s"
1209
  msgstr ""
1210
 
1211
- #: core/class-wptouch-pro.php:572 core/class-wptouch-pro.php:581
1212
  msgid ""
1213
  "%sOnce fixed, this message will be dismissed automatically. Until fixed, %"
1214
  "sWPtouch will not be shown%s to mobile visitors, and cannot be previewed.%s"
1215
  msgstr ""
1216
 
1217
- #: core/class-wptouch-pro.php:579
1218
  msgid "%sWPtouch: %s needs to be configured to work correctly with WPtouch.%s"
1219
  msgstr ""
1220
 
1221
- #: core/class-wptouch-pro.php:582
1222
  msgid ""
1223
  "%sTo fix the issue, follow our %sstep-by-step setup guide%s on support."
1224
  "wptouch.com%s"
1225
  msgstr ""
1226
 
1227
- #: core/class-wptouch-pro.php:594
1228
  msgid "WPtouch Repair Required"
1229
  msgstr ""
1230
 
1231
- #: core/class-wptouch-pro.php:601
1232
  msgid "Your mobile theme was either broken or missing."
1233
  msgstr ""
1234
 
1235
- #: core/class-wptouch-pro.php:602
1236
  msgid "We downloaded a fresh copy for you."
1237
  msgstr ""
1238
 
1239
- #: core/class-wptouch-pro.php:603 core/class-wptouch-pro.php:613
1240
  msgid "OK"
1241
  msgstr ""
1242
 
1243
- #: core/class-wptouch-pro.php:606
1244
  msgid ""
1245
  "We were unable to install your WPtouch Pro theme from the Cloud. %s Please "
1246
  "visit %sthis article%s for more information."
1247
  msgstr ""
1248
 
1249
- #: core/class-wptouch-pro.php:609
1250
  msgid "WPtouch Server Issue"
1251
  msgstr ""
1252
 
1253
- #: core/class-wptouch-pro.php:611
1254
  msgid ""
1255
  "Your server setup is preventing WPtouch Pro from installing from the Cloud. %"
1256
  "s Please visit %sthis article%s for more information on how to fix it."
1257
  msgstr ""
1258
 
1259
- #: core/class-wptouch-pro.php:840
1260
  msgid ""
1261
  "This will reset all WPtouch Pro settings.\n"
1262
  "Are you sure?"
1263
  msgstr ""
1264
 
1265
- #: core/class-wptouch-pro.php:841
1266
  msgid ""
1267
  "This will reset all WPtouch Pro settings and delete the wptouch-data "
1268
  "folder.\n"
1269
  "Are you sure?"
1270
  msgstr ""
1271
 
1272
- #: core/class-wptouch-pro.php:842
1273
  msgid ""
1274
  "This will reset all WPtouch Pro settings, delete the wptouch-data folder, "
1275
  "and deactivate the plugin. Are you sure?"
1276
  msgstr ""
1277
 
1278
- #: core/class-wptouch-pro.php:843
1279
  msgid "The item failed to download for this reason: %reason%"
1280
  msgstr ""
1281
 
1282
- #: core/class-wptouch-pro.php:844
1283
  msgid "You are about to reset your license information. Proceed?"
1284
  msgstr ""
1285
 
1286
- #: core/class-wptouch-pro.php:846
1287
  msgid "Upload Failed: Not a valid image."
1288
  msgstr ""
1289
 
1290
- #: core/class-wptouch-pro.php:847
1291
  msgid ""
1292
  "WPtouch is saving settings. Please do not refresh the page while saving."
1293
  msgstr ""
1294
 
1295
- #: core/class-wptouch-pro.php:848
1296
  msgid "Install Themes"
1297
  msgstr ""
1298
 
1299
- #: core/class-wptouch-pro.php:849
1300
  msgid "Install Extensions"
1301
  msgstr ""
1302
 
1303
- #: core/class-wptouch-pro.php:1553
1304
  msgid "%s Changelog"
1305
  msgstr ""
1306
 
1307
- #: core/class-wptouch-pro.php:2896
1308
  msgid "Directory Problem"
1309
  msgstr ""
1310
 
1311
- #: core/class-wptouch-pro.php:2897
1312
  msgid "One or more required directories could not be created"
1313
  msgstr ""
1314
 
1315
- #: core/config.php:91
1316
  msgid "Compatibility"
1317
  msgstr ""
1318
 
@@ -1420,6 +1483,10 @@ msgstr ""
1420
  msgid "Original: %s"
1421
  msgstr ""
1422
 
 
 
 
 
1423
  #: core/menu-walkers.php:416 themes/bauhaus/default/comments.php:48
1424
  #: themes/foundation/default/comments.php:48
1425
  msgid "Cancel"
@@ -1429,6 +1496,74 @@ msgstr ""
1429
  msgid "Feed for all posts filed under %s"
1430
  msgstr ""
1431
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1432
  #: include/html/desktop-switch.php:2
1433
  msgid "Desktop Version"
1434
  msgstr ""
@@ -1531,7 +1666,7 @@ msgstr ""
1531
 
1532
  #: themes/bauhaus/default/comments.php:67
1533
  #: themes/foundation/default/comments.php:67
1534
- #: themes/foundation/modules/social-links/social-links.php:94
1535
  msgid "E-Mail"
1536
  msgstr ""
1537
 
@@ -1667,107 +1802,107 @@ msgstr ""
1667
  msgid "desktop"
1668
  msgstr ""
1669
 
1670
- #: themes/bauhaus/root-functions.php:117
1671
  msgid "Header Menu"
1672
  msgstr ""
1673
 
1674
- #: themes/bauhaus/root-functions.php:119
1675
  msgid "Choose a menu"
1676
  msgstr ""
1677
 
1678
- #: themes/bauhaus/root-functions.php:120
1679
  msgid "Main menu selection"
1680
  msgstr ""
1681
 
1682
- #: themes/bauhaus/root-functions.php:127
1683
  msgid "Theme background"
1684
  msgstr ""
1685
 
1686
- #: themes/bauhaus/root-functions.php:128
1687
  msgid "Header & Menu"
1688
  msgstr ""
1689
 
1690
- #: themes/bauhaus/root-functions.php:129
1691
  msgid "Links"
1692
  msgstr ""
1693
 
1694
- #: themes/bauhaus/root-functions.php:130
1695
  msgid "Post/Page Headers"
1696
  msgstr ""
1697
 
1698
- #: themes/bauhaus/root-functions.php:223
1699
  msgid "Menu animation style"
1700
  msgstr ""
1701
 
1702
- #: themes/bauhaus/root-functions.php:228
1703
  msgid "Off-canvas"
1704
  msgstr ""
1705
 
1706
- #: themes/bauhaus/root-functions.php:229
1707
  msgid "Drop-down"
1708
  msgstr ""
1709
 
1710
- #: themes/bauhaus/root-functions.php:237
1711
  msgid "Show search in header"
1712
  msgstr ""
1713
 
1714
- #: themes/bauhaus/root-functions.php:254
1715
  msgid "Post thumbnails"
1716
  msgstr ""
1717
 
1718
- #: themes/bauhaus/root-functions.php:259
1719
  msgid "No thumbnails"
1720
  msgstr ""
1721
 
1722
- #: themes/bauhaus/root-functions.php:260
1723
  msgid "Blog listing only"
1724
  msgstr ""
1725
 
1726
- #: themes/bauhaus/root-functions.php:261
1727
  msgid "Blog listing, single posts"
1728
  msgstr ""
1729
 
1730
- #: themes/bauhaus/root-functions.php:262
1731
  msgid "Blog listing, single posts & pages"
1732
  msgstr ""
1733
 
1734
- #: themes/bauhaus/root-functions.php:263
1735
  msgid "All (blog, single, pages, search & archive)"
1736
  msgstr ""
1737
 
1738
- #: themes/bauhaus/root-functions.php:271
1739
  msgid "Thumbnail Type"
1740
  msgstr ""
1741
 
1742
- #: themes/bauhaus/root-functions.php:276
1743
  msgid "Post featured images"
1744
  msgstr ""
1745
 
1746
- #: themes/bauhaus/root-functions.php:277
1747
  msgid "Post custom field"
1748
  msgstr ""
1749
 
1750
- #: themes/bauhaus/root-functions.php:285
1751
  msgid "Thumbnail custom field name"
1752
  msgstr ""
1753
 
1754
- #: themes/bauhaus/root-functions.php:296
1755
  msgid "Show post categories and tags"
1756
  msgstr ""
1757
 
1758
- #: themes/bauhaus/root-functions.php:307
1759
  msgid "Show post date"
1760
  msgstr ""
1761
 
1762
- #: themes/bauhaus/root-functions.php:318
1763
  msgid "Show post author"
1764
  msgstr ""
1765
 
1766
- #: themes/bauhaus/root-functions.php:329
1767
  msgid "Show comment bubbles on posts"
1768
  msgstr ""
1769
 
1770
- #: themes/bauhaus/root-functions.php:340
1771
  msgid "Use infinite scrolling for blog"
1772
  msgstr ""
1773
 
@@ -1821,121 +1956,124 @@ msgid ""
1821
  "site."
1822
  msgstr ""
1823
 
1824
- #: themes/foundation/modules/featured/featured.php:314
1825
  msgid "Featured slider style"
1826
  msgstr ""
1827
 
1828
- #: themes/foundation/modules/featured/featured.php:319
1829
  msgid "Enhanced"
1830
  msgstr ""
1831
 
1832
- #: themes/foundation/modules/featured/featured.php:320
1833
- #: themes/foundation/modules/featured/featured.php:391
1834
- msgid "Normal"
1835
  msgstr ""
1836
 
1837
- #: themes/foundation/modules/featured/featured.php:332
1838
  msgid "Number of posts in slider"
1839
  msgstr ""
1840
 
1841
- #: themes/foundation/modules/featured/featured.php:345
1842
  msgid "Show # of comments"
1843
  msgstr ""
1844
 
1845
- #: themes/foundation/modules/featured/featured.php:353
1846
  msgid "Slide automatically"
1847
  msgstr ""
1848
 
1849
- #: themes/foundation/modules/featured/featured.php:361
1850
  msgid "Slides repeat"
1851
  msgstr ""
1852
 
1853
- #: themes/foundation/modules/featured/featured.php:369
1854
  msgid "Make images grayscale"
1855
  msgstr ""
1856
 
1857
- #: themes/foundation/modules/featured/featured.php:377
1858
  msgid "Slider posts also show in listings"
1859
  msgstr ""
1860
 
1861
- #: themes/foundation/modules/featured/featured.php:385
1862
  msgid "Slide transition speed"
1863
  msgstr ""
1864
 
1865
- #: themes/foundation/modules/featured/featured.php:390
1866
  msgid "Slow"
1867
  msgstr ""
1868
 
1869
- #: themes/foundation/modules/featured/featured.php:392
 
 
 
 
1870
  msgid "Fast"
1871
  msgstr ""
1872
 
1873
- #: themes/foundation/modules/featured/featured.php:403
1874
  msgid "Show latest posts"
1875
  msgstr ""
1876
 
1877
- #: themes/foundation/modules/featured/featured.php:404
1878
  msgid "Show posts from a specific tag"
1879
  msgstr ""
1880
 
1881
- #: themes/foundation/modules/featured/featured.php:405
1882
  msgid "Show posts from a specific category"
1883
  msgstr ""
1884
 
1885
- #: themes/foundation/modules/featured/featured.php:406
1886
  msgid "Show posts from a specific post type"
1887
  msgstr ""
1888
 
1889
- #: themes/foundation/modules/featured/featured.php:407
1890
  msgid "Show only specific posts or pages"
1891
  msgstr ""
1892
 
1893
- #: themes/foundation/modules/featured/featured.php:413
1894
  msgid "Only this tag"
1895
  msgstr ""
1896
 
1897
- #: themes/foundation/modules/featured/featured.php:414
1898
- #: themes/foundation/modules/featured/featured.php:423
1899
  msgid "Enter the tag/category slug name"
1900
  msgstr ""
1901
 
1902
- #: themes/foundation/modules/featured/featured.php:422
1903
  msgid "Only this category"
1904
  msgstr ""
1905
 
1906
- #: themes/foundation/modules/featured/featured.php:431
1907
  msgid "Comma-separated list of post/page IDs"
1908
  msgstr ""
1909
 
1910
- #: themes/foundation/modules/featured/featured.php:442
1911
  msgid "Only this post type"
1912
  msgstr ""
1913
 
1914
- #: themes/foundation/modules/featured/featured.php:452
1915
  msgid "Featured Slider"
1916
  msgstr ""
1917
 
1918
- #: themes/foundation/modules/featured/featured.php:459
1919
  msgid "Enable featured slider"
1920
  msgstr ""
1921
 
1922
- #: themes/foundation/modules/featured/featured.php:460
1923
  msgid "Requires at least 2 entries to contain featured images"
1924
  msgstr ""
1925
 
1926
- #: themes/foundation/modules/google-fonts/google-fonts.php:20
1927
  msgid "Browser Default Fonts"
1928
  msgstr ""
1929
 
1930
- #: themes/foundation/modules/google-fonts/google-fonts.php:28
1931
  msgid "Typography"
1932
  msgstr ""
1933
 
1934
- #: themes/foundation/modules/google-fonts/google-fonts.php:34
1935
  msgid "Font Pairing"
1936
  msgstr ""
1937
 
1938
- #: themes/foundation/modules/google-fonts/google-fonts.php:35
1939
  msgid ""
1940
  "Choose a Google font pairing designed for this theme, or default browser "
1941
  "fonts."
@@ -1961,30 +2099,14 @@ msgstr ""
1961
  msgid "Lost password?"
1962
  msgstr ""
1963
 
1964
- #: themes/foundation/modules/login/login.php:22
1965
- msgid "Account Username"
1966
- msgstr ""
1967
-
1968
- #: themes/foundation/modules/login/login.php:23
1969
- msgid "Account Password"
1970
  msgstr ""
1971
 
1972
- #: themes/foundation/modules/login/login.php:32
1973
- msgid "Login Form"
1974
- msgstr ""
1975
-
1976
- #: themes/foundation/modules/login/login.php:38
1977
- msgid "Allow Login"
1978
- msgstr ""
1979
-
1980
- #: themes/foundation/modules/login/login.php:39
1981
  msgid "Will add login/out links"
1982
  msgstr ""
1983
 
1984
- #: themes/foundation/modules/login/login.php:46
1985
- msgid "Include \"Sign-up\" and \"Lost Password?\" links"
1986
- msgstr ""
1987
-
1988
  #: themes/foundation/modules/media/media.php:34
1989
  msgid "Video Handling"
1990
  msgstr ""
@@ -2000,103 +2122,95 @@ msgid ""
2000
  "them with the correct aspect ratio."
2001
  msgstr ""
2002
 
2003
- #: themes/foundation/modules/sharing/sharing.php:94
2004
- msgid "Social Sharing"
2005
- msgstr ""
2006
-
2007
- #: themes/foundation/modules/sharing/sharing.php:100
2008
  msgid "Will show Facebook, Twitter, Pinterest and Email buttons."
2009
  msgstr ""
2010
 
2011
- #: themes/foundation/modules/sharing/sharing.php:108
2012
  msgid "Show sharing links on posts"
2013
  msgstr ""
2014
 
2015
- #: themes/foundation/modules/sharing/sharing.php:116
2016
  msgid "Also show on pages"
2017
  msgstr ""
2018
 
2019
- #: themes/foundation/modules/sharing/sharing.php:124
2020
  msgid "Sharing links location"
2021
  msgstr ""
2022
 
2023
- #: themes/foundation/modules/sharing/sharing.php:129
2024
  msgid "Above post content"
2025
  msgstr ""
2026
 
2027
- #: themes/foundation/modules/sharing/sharing.php:130
2028
  msgid "Below post content"
2029
  msgstr ""
2030
 
2031
- #: themes/foundation/modules/sharing/sharing.php:136
2032
  msgid "Color scheme"
2033
  msgstr ""
2034
 
2035
- #: themes/foundation/modules/sharing/sharing.php:141
2036
  msgid "Theme colors"
2037
  msgstr ""
2038
 
2039
- #: themes/foundation/modules/sharing/sharing.php:142
2040
  msgid "Social network colors"
2041
  msgstr ""
2042
 
2043
- #: themes/foundation/modules/social-links/social-links.php:8
2044
- msgid "Social Media Links"
2045
- msgstr ""
2046
-
2047
- #: themes/foundation/modules/social-links/social-links.php:15
2048
  msgid "Full URL to your Facebook page"
2049
  msgstr ""
2050
 
2051
- #: themes/foundation/modules/social-links/social-links.php:23
2052
  msgid "Full URL to your Twitter profile"
2053
  msgstr ""
2054
 
2055
- #: themes/foundation/modules/social-links/social-links.php:31
2056
  msgid "Full URL to your Google+ profile"
2057
  msgstr ""
2058
 
2059
- #: themes/foundation/modules/social-links/social-links.php:39
2060
  msgid "Full URL to your Instagram profile"
2061
  msgstr ""
2062
 
2063
- #: themes/foundation/modules/social-links/social-links.php:46
2064
  msgid "Tumblr"
2065
  msgstr ""
2066
 
2067
- #: themes/foundation/modules/social-links/social-links.php:47
2068
  msgid "Full URL to your Tumblr profile"
2069
  msgstr ""
2070
 
2071
- #: themes/foundation/modules/social-links/social-links.php:55
2072
  msgid "Full URL to your Pinterest page"
2073
  msgstr ""
2074
 
2075
- #: themes/foundation/modules/social-links/social-links.php:63
2076
  msgid "Full URL to your Vimeo page"
2077
  msgstr ""
2078
 
2079
- #: themes/foundation/modules/social-links/social-links.php:71
2080
  msgid "Full URL to your %s profile"
2081
  msgstr ""
2082
 
2083
- #: themes/foundation/modules/social-links/social-links.php:78
2084
  msgid "LinkedIn"
2085
  msgstr ""
2086
 
2087
- #: themes/foundation/modules/social-links/social-links.php:79
2088
  msgid "Full URL to your LinkedIn profile"
2089
  msgstr ""
2090
 
2091
- #: themes/foundation/modules/social-links/social-links.php:87
2092
  msgid "Full URL to your Yelp profile"
2093
  msgstr ""
2094
 
2095
- #: themes/foundation/modules/social-links/social-links.php:95
2096
  msgid "E-Mail address"
2097
  msgstr ""
2098
 
2099
- #: themes/foundation/modules/social-links/social-links.php:103
2100
  msgid "Full URL to your RSS feed"
2101
  msgstr ""
2102
 
@@ -2105,7 +2219,7 @@ msgid "iPad"
2105
  msgstr ""
2106
 
2107
  #: themes/foundation/modules/tablets/tablets.php:64
2108
- #: themes/foundation/root-functions.php:466
2109
  msgid "%d by %d pixels (PNG)"
2110
  msgstr ""
2111
 
@@ -2129,123 +2243,123 @@ msgstr ""
2129
  msgid "Language: "
2130
  msgstr ""
2131
 
2132
- #: themes/foundation/root-functions.php:390
2133
  msgid "Theme Colors"
2134
  msgstr ""
2135
 
2136
- #: themes/foundation/root-functions.php:406
2137
  msgid "Number of posts in post listings"
2138
  msgstr ""
2139
 
2140
- #: themes/foundation/root-functions.php:407
2141
  msgid ""
2142
  "Overrides the WordPress Reading settings for \"Blog pages show at most\""
2143
  msgstr ""
2144
 
2145
- #: themes/foundation/root-functions.php:419
2146
  msgid "Excluded categories"
2147
  msgstr ""
2148
 
2149
- #: themes/foundation/root-functions.php:420
2150
  msgid "Comma separated by category name"
2151
  msgstr ""
2152
 
2153
- #: themes/foundation/root-functions.php:427
2154
  msgid "Excluded tags"
2155
  msgstr ""
2156
 
2157
- #: themes/foundation/root-functions.php:428
2158
  msgid "Comma separated by tag name"
2159
  msgstr ""
2160
 
2161
- #: themes/foundation/root-functions.php:439
2162
  msgid "Blog"
2163
  msgstr ""
2164
 
2165
- #: themes/foundation/root-functions.php:449
2166
- #: themes/foundation/root-functions.php:1216
2167
  msgid "Pages"
2168
  msgstr ""
2169
 
2170
- #: themes/foundation/root-functions.php:460
2171
  msgid "Site Icon"
2172
  msgstr ""
2173
 
2174
- #: themes/foundation/root-functions.php:484
2175
  msgid "Site Logo"
2176
  msgstr ""
2177
 
2178
- #: themes/foundation/root-functions.php:496
2179
  msgid "Header"
2180
  msgstr ""
2181
 
2182
- #: themes/foundation/root-functions.php:508
2183
  msgid "Footer"
2184
  msgstr ""
2185
 
2186
- #: themes/foundation/root-functions.php:514
2187
  msgid "Custom footer content (HTML is allowed)"
2188
  msgstr ""
2189
 
2190
- #: themes/foundation/root-functions.php:529
2191
  msgid "Custom CSS"
2192
  msgstr ""
2193
 
2194
- #: themes/foundation/root-functions.php:535
2195
  msgid "Custom CSS Declarations"
2196
  msgstr ""
2197
 
2198
- #: themes/foundation/root-functions.php:881
2199
  msgid "search results for '%s'"
2200
  msgstr ""
2201
 
2202
- #: themes/foundation/root-functions.php:883
2203
  msgid "%sCategories &rsaquo;%s %s"
2204
  msgstr ""
2205
 
2206
- #: themes/foundation/root-functions.php:885
2207
  msgid "Tags &rsaquo; %s"
2208
  msgstr ""
2209
 
 
 
2210
  #: themes/foundation/root-functions.php:887
2211
- #: themes/foundation/root-functions.php:889
2212
- #: themes/foundation/root-functions.php:891
2213
  msgid "Archives &rsaquo; %s"
2214
  msgstr ""
2215
 
2216
- #: themes/foundation/root-functions.php:906
2217
  msgid "Load more from this category"
2218
  msgstr ""
2219
 
2220
- #: themes/foundation/root-functions.php:908
2221
  msgid "Load more tagged like this"
2222
  msgstr ""
2223
 
2224
- #: themes/foundation/root-functions.php:910
2225
  msgid "Load more from this day"
2226
  msgstr ""
2227
 
2228
- #: themes/foundation/root-functions.php:912
2229
  msgid "Load more from this month"
2230
  msgstr ""
2231
 
2232
- #: themes/foundation/root-functions.php:914
2233
  msgid "Load more from this year"
2234
  msgstr ""
2235
 
2236
- #: themes/foundation/root-functions.php:916
2237
  msgid "Load more in this section"
2238
  msgstr ""
2239
 
2240
- #: themes/foundation/root-functions.php:918
2241
  msgid "Load more entries"
2242
  msgstr ""
2243
 
2244
- #: themes/foundation/root-functions.php:1165
2245
  msgid "Post"
2246
  msgstr ""
2247
 
2248
- #: themes/foundation/root-functions.php:1167
2249
  msgid "Page"
2250
  msgstr ""
2251
 
2
  # This file is distributed under the same license as the WPtouch Mobile Plugin package.
3
  msgid ""
4
  msgstr ""
5
+ "Project-Id-Version: WPtouch Mobile Plugin 4.1\n"
6
  "Report-Msgid-Bugs-To: http://wordpress.org/tag/wptouch\n"
7
+ "POT-Creation-Date: 2016-03-29 19:19:14+00:00\n"
8
  "MIME-Version: 1.0\n"
9
  "Content-Type: text/plain; charset=UTF-8\n"
10
  "Content-Transfer-Encoding: 8bit\n"
12
  "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
13
  "Language-Team: LANGUAGE <LL@li.org>\n"
14
 
15
+ #: admin/customizer/wptouch-customizer.php:559
16
  msgid "Device + Orientation"
17
  msgstr ""
18
 
19
+ #: admin/customizer/wptouch-customizer.php:584
20
  msgid "Switch to Mobile Theme"
21
  msgstr ""
22
 
23
+ #: admin/customizer/wptouch-customizer.php:585
24
  msgid "Switch to Desktop Theme"
25
  msgstr ""
26
 
168
  msgstr ""
169
 
170
  #: admin/pages/custom/wptouch-admin-license.php:80
 
171
  #: admin/settings/html/gopro.php:11
172
  #: admin/settings/html/theme-browser-item-detail.php:5
173
+ #: core/admin-extensions.php:367
174
  msgid "Activate"
175
  msgstr ""
176
 
182
  msgid "Site License"
183
  msgstr ""
184
 
185
+ #: admin/pages/custom/wptouch-admin-license.php:92
186
+ #: admin/settings/html/extension-browser-item-detail.php:46
187
+ #: admin/settings/html/extension-browser-item-detail.php:75
188
+ msgid "Deactivate"
189
  msgstr ""
190
 
191
  #: admin/pages/custom/wptouch-admin-license.php:95
337
  msgstr ""
338
 
339
  #: admin/pages/custom/wptouch-admin-wizard.php:100
340
+ msgid "Multisite Network"
341
  msgstr ""
342
 
343
  #: admin/pages/custom/wptouch-admin-wizard.php:101
372
 
373
  #: admin/pages/custom/wptouch-admin-wizard.php:128
374
  #: admin/pages/custom/wptouch-admin-wizard.php:179
 
375
  #: admin/settings/html/theme-browser-item-detail.php:52
376
+ #: admin/settings/html/updates-available.php:35
377
+ #: admin/settings/html/updates-available.php:71 core/class-wptouch-pro.php:918
378
  msgid "Download"
379
  msgstr ""
380
 
384
  #: admin/settings/html/installed_icon_sets_ajax.php:13
385
  #: admin/settings/html/installed_icon_sets_ajax.php:26
386
  #: admin/settings/html/theme-browser-item.php:12
387
+ #: core/class-wptouch-pro.php:917
388
  msgid "Installed"
389
  msgstr ""
390
 
463
 
464
  #: admin/pages/custom/wptouch-admin-wizard.php:254
465
  #: admin/pages/custom/wptouch-admin-wizard.php:273
466
+ #: admin/pages/wptouch-admin-general-settings.php:134
467
  #: admin/settings/include/custom-latest-posts.php:11
468
  msgid "WordPress Reading Settings"
469
  msgstr ""
553
  msgid "Configure Settings"
554
  msgstr ""
555
 
556
+ #: admin/pages/wptouch-admin-general-settings.php:29 core/admin-render.php:71
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
557
  #: core/config.php:88
558
  msgid "Updates Available"
559
  msgstr ""
560
 
561
+ #: admin/pages/wptouch-admin-general-settings.php:55
562
  msgid "Mobile Site Title"
563
  msgstr ""
564
 
565
+ #: admin/pages/wptouch-admin-general-settings.php:61
566
  msgid "WPtouch Pro site title"
567
  msgstr ""
568
 
569
+ #: admin/pages/wptouch-admin-general-settings.php:74
570
  msgid "If disabled WPtouch Pro will be off for visitors but can be configured."
571
  msgstr ""
572
 
573
+ #: admin/pages/wptouch-admin-general-settings.php:76
574
  msgid ""
575
  "If disabled WPtouch Pro will be off for visitors but can be configured in "
576
  "the Customizer."
577
  msgstr ""
578
 
579
+ #: admin/pages/wptouch-admin-general-settings.php:81
580
  msgid "Display"
581
  msgstr ""
582
 
583
+ #: admin/pages/wptouch-admin-general-settings.php:87
584
  msgid "Display WPtouch Pro for mobile visitors"
585
  msgstr ""
586
 
587
+ #: admin/pages/wptouch-admin-general-settings.php:95
588
  msgid "URL filtering"
589
  msgstr ""
590
 
591
+ #: admin/pages/wptouch-admin-general-settings.php:100
592
  msgid "Show WPtouch Pro for all URLs"
593
  msgstr ""
594
 
595
+ #: admin/pages/wptouch-admin-general-settings.php:101
596
  msgid "Exclude WPtouch Pro on these URLs"
597
  msgstr ""
598
 
599
+ #: admin/pages/wptouch-admin-general-settings.php:102
600
  msgid "Only show WPtouch Pro on these URLs"
601
  msgstr ""
602
 
603
+ #: admin/pages/wptouch-admin-general-settings.php:108
604
  msgid "Apply filter to these URLs/Pages"
605
  msgstr ""
606
 
607
+ #: admin/pages/wptouch-admin-general-settings.php:116
608
  msgid "Require exact match"
609
  msgstr ""
610
 
611
+ #: admin/pages/wptouch-admin-general-settings.php:129
612
  msgid "Mobile front page"
613
  msgstr ""
614
 
615
+ #: admin/pages/wptouch-admin-general-settings.php:130
616
  msgid "You can set a different front page for WPtouch Pro visitors."
617
  msgstr ""
618
 
619
+ #: admin/pages/wptouch-admin-general-settings.php:135
620
  msgid "Redirect to a page"
621
  msgstr ""
622
 
623
+ #: admin/pages/wptouch-admin-general-settings.php:136
624
  msgctxt "Refers to a custom landing page"
625
  msgid "Redirect to a custom URL"
626
  msgstr ""
627
 
628
+ #: admin/pages/wptouch-admin-general-settings.php:142
629
  msgid "Custom Slug or URL"
630
  msgstr ""
631
 
632
+ #: admin/pages/wptouch-admin-general-settings.php:143
633
  msgid "Enter a Slug (i.e. \"/home\") or a full URL path"
634
  msgstr ""
635
 
636
+ #: admin/pages/wptouch-admin-general-settings.php:161
637
  msgid "Landing Pages"
638
  msgstr ""
639
 
640
+ #: admin/pages/wptouch-admin-general-settings.php:170
641
  msgid "Desktop / Mobile Switching"
642
  msgstr ""
643
 
644
+ #: admin/pages/wptouch-admin-general-settings.php:176
645
  msgctxt "switches between desktop and mobile themes"
646
  msgid "Theme switch toggle"
647
  msgstr ""
648
 
649
+ #: admin/pages/wptouch-admin-general-settings.php:185
650
  msgid ""
651
  "Shows a toggle in both the desktop mobile theme footers allowing users to "
652
  "switch between them."
653
  msgstr ""
654
 
655
+ #: admin/pages/wptouch-admin-general-settings.php:190
656
  msgid "Page Zoom"
657
  msgstr ""
658
 
659
+ #: admin/pages/wptouch-admin-general-settings.php:196
660
  msgid "Allow mobile browser zooming"
661
  msgstr ""
662
 
663
+ #: admin/pages/wptouch-admin-general-settings.php:197
664
  msgid "By default WPtouch Pro disables browser zooming."
665
  msgstr ""
666
 
667
+ #: admin/pages/wptouch-admin-general-settings.php:208
668
  msgid "Smart App Banner"
669
  msgstr ""
670
 
671
+ #: admin/pages/wptouch-admin-general-settings.php:223
672
  msgid "Find your ID from the %siTunes Link Maker%s."
673
  msgstr ""
674
 
675
+ #: admin/pages/wptouch-admin-general-settings.php:228
676
  msgid "Analytics"
677
  msgstr ""
678
 
679
+ #: admin/pages/wptouch-admin-general-settings.php:234
680
  msgid "Analytics Code"
681
  msgstr ""
682
 
683
+ #: admin/pages/wptouch-admin-general-settings.php:239
684
+ #: admin/pages/wptouch-admin-general-settings.php:628
685
  msgid "None"
686
  msgstr ""
687
 
688
+ #: admin/pages/wptouch-admin-general-settings.php:241
689
  msgid "Custom"
690
  msgstr ""
691
 
692
+ #: admin/pages/wptouch-admin-general-settings.php:248
693
  msgid "Site ID"
694
  msgstr ""
695
 
696
+ #: admin/pages/wptouch-admin-general-settings.php:269
697
  msgid "WPtouch Pro Love"
698
  msgstr ""
699
 
700
+ #: admin/pages/wptouch-admin-general-settings.php:275
701
  msgid "Show powered by WPtouch Pro link in theme footer"
702
  msgstr ""
703
 
704
+ #: admin/pages/wptouch-admin-general-settings.php:287
705
  msgid "Language"
706
  msgstr ""
707
 
708
+ #: admin/pages/wptouch-admin-general-settings.php:293
709
  msgid "Theme Language"
710
  msgstr ""
711
 
712
+ #: admin/pages/wptouch-admin-general-settings.php:302
713
  msgid "Also applies to admin"
714
  msgstr ""
715
 
716
+ #: admin/pages/wptouch-admin-general-settings.php:321
717
  msgctxt ""
718
  "shortcodes are pieces of code [like_this] that users can drop into textareas "
719
  "that will convert to longer pieces of code"
720
  msgid "Shortcodes"
721
  msgstr ""
722
 
723
+ #: admin/pages/wptouch-admin-general-settings.php:327
724
  msgid "Process desktop theme shortcodes"
725
  msgstr ""
726
 
727
+ #: admin/pages/wptouch-admin-general-settings.php:335
728
  msgid "Filter out shortcodes"
729
  msgstr ""
730
 
731
+ #: admin/pages/wptouch-admin-general-settings.php:336
732
  msgid "Filters out shortcodes from displaying when WPtouch Pro is active."
733
  msgstr ""
734
 
735
+ #: admin/pages/wptouch-admin-general-settings.php:349
736
  msgid "Active Plugins"
737
  msgstr ""
738
 
739
+ #: admin/pages/wptouch-admin-general-settings.php:360
740
  msgid ""
741
  "Attempts to disable plugins for mobile visitors. Some plugins don‘t support "
742
  "this feature due to the way they load in WordPress."
743
  msgstr ""
744
 
745
+ #: admin/pages/wptouch-admin-general-settings.php:371
746
  msgid "Mobile Devices & Browsers"
747
  msgstr ""
748
 
749
+ #: admin/pages/wptouch-admin-general-settings.php:431
750
  msgid "Tablets"
751
  msgstr ""
752
 
753
+ #: admin/pages/wptouch-admin-general-settings.php:489
754
  msgid "Tablet Devices & Browsers"
755
  msgstr ""
756
 
757
+ #: admin/pages/wptouch-admin-general-settings.php:504
758
  msgid ""
759
  "If your theme supports tablets, devices and browsers WPtouch Pro can be "
760
  "enabled for will be listed below."
761
  msgstr ""
762
 
763
+ #: admin/pages/wptouch-admin-general-settings.php:510
764
  msgid "Additional User Agents"
765
  msgstr ""
766
 
767
+ #: admin/pages/wptouch-admin-general-settings.php:516
768
  msgid "User agents to add"
769
  msgstr ""
770
 
771
+ #: admin/pages/wptouch-admin-general-settings.php:517
772
  msgid "You can enter partial i.e. \"nokia\" or full agent strings"
773
  msgstr ""
774
 
775
+ #: admin/pages/wptouch-admin-general-settings.php:534
776
  msgid "Menu Setup"
777
  msgstr ""
778
 
779
+ #: admin/pages/wptouch-admin-general-settings.php:552
780
  msgid "Menu Options"
781
  msgstr ""
782
 
783
+ #: admin/pages/wptouch-admin-general-settings.php:558
784
  msgid "Enable parent items as links"
785
  msgstr ""
786
 
787
+ #: admin/pages/wptouch-admin-general-settings.php:559
788
  msgid "If disabled, parent menu items will only toggle child items."
789
  msgstr ""
790
 
791
+ #: admin/pages/wptouch-admin-general-settings.php:566
792
  msgid "Use menu icons"
793
  msgstr ""
794
 
795
+ #: admin/pages/wptouch-admin-general-settings.php:567
796
  msgid "Adds the ability to associate icons with menu items"
797
  msgstr ""
798
 
799
+ #: admin/pages/wptouch-admin-general-settings.php:578
800
  msgid "Menu Icon Sets"
801
  msgstr ""
802
 
803
+ #: admin/pages/wptouch-admin-general-settings.php:591
804
  #: admin/settings/html/installed_icon_sets_ajax.php:4
805
+ #: core/class-wptouch-pro.php:2103 core/class-wptouch-pro.php:2104
806
  #: core/config.php:54
807
  msgid "Custom Icons"
808
  msgstr ""
809
 
810
+ #: admin/pages/wptouch-admin-general-settings.php:622
811
  msgid "WordPress Pages"
812
  msgstr ""
813
 
814
+ #: admin/pages/wptouch-admin-general-settings.php:640
815
+ #: core/admin-render.php:109 core/config.php:93
816
  msgid "Customize Theme"
817
  msgstr ""
818
 
819
+ #: admin/pages/wptouch-admin-general-settings.php:660 core/config.php:94
820
  msgid "Go Pro"
821
  msgstr ""
822
 
823
+ #: admin/settings/html/auto_configure.php:4
824
+ msgid ""
825
+ "This extension doesn’t currently require configuration. All of its settings "
826
+ "are inherited from your WPtouch Pro configuration automatically."
827
+ msgstr ""
828
+
829
  #: admin/settings/html/button.php:6 admin/settings/html/checkbox.php:4
830
  #: admin/settings/html/checklist.php:6 admin/settings/html/color.php:8
831
  #: admin/settings/html/list.php:8 admin/settings/html/multiline-comma.php:9
865
  msgid "Server Configuration"
866
  msgstr ""
867
 
868
+ #: admin/settings/html/extension-browser-item-detail.php:5
 
 
 
 
 
 
 
869
  msgid "Back to extensions"
870
  msgstr ""
871
 
872
+ #: admin/settings/html/extension-browser-item-detail.php:29
873
+ #: admin/settings/html/extension-browser-item-detail.php:54
874
  #: admin/settings/html/theme-browser-item-detail.php:42
875
  msgid "Add to License"
876
  msgstr ""
877
 
878
+ #: admin/settings/html/extension-browser-item-detail.php:60
879
+ msgid "Must be activated from Network Admin"
880
  msgstr ""
881
 
882
+ #: admin/settings/html/extension-browser-item-detail.php:82
883
+ #: admin/settings/html/theme-browser-item-detail.php:58
884
+ msgid "Learn More"
885
+ msgstr ""
886
+
887
+ #: admin/settings/html/extension-browser-item-detail.php:118
888
+ #: admin/settings/html/theme-browser-item-detail.php:81
889
  #: core/menu-walkers.php:365
890
  msgid "Description"
891
  msgstr ""
892
 
893
+ #: admin/settings/html/extension-browser-item-detail.php:123
894
+ #: admin/settings/html/theme-browser-item-detail.php:88
895
  msgid "Changelog"
896
  msgstr ""
897
 
909
  msgid "No extensions available"
910
  msgstr ""
911
 
912
+ #: admin/settings/html/image-upload.php:7 core/class-wptouch-pro.php:910
913
  msgid "Upload Complete!"
914
  msgstr ""
915
 
928
  msgstr ""
929
 
930
  #: admin/settings/html/installed_icon_sets_ajax.php:25
931
+ #: core/class-wptouch-pro.php:916
932
  msgid "Installing"
933
  msgstr ""
934
 
935
+ #: admin/settings/html/installed_icon_sets_ajax.php:25
936
+ #: admin/settings/html/theme-browser-item-detail.php:3
937
+ #: core/admin-extensions.php:363 core/class-wptouch-pro.php:915
938
+ msgid "Install"
939
+ msgstr ""
940
+
941
  #: admin/settings/html/installed_icon_sets_ajax.php:27
942
  msgid "Unable to Install"
943
  msgstr ""
981
  msgid "Customize"
982
  msgstr ""
983
 
984
+ #: admin/settings/html/theme-browser-item-detail.php:66
985
  msgid "Screenshots"
986
  msgstr ""
987
 
1049
  msgid "Update All"
1050
  msgstr ""
1051
 
1052
+ #: admin/settings/html/updates-available.php:12
1053
+ msgid "Core Plugin Updates"
 
1054
  msgstr ""
1055
 
1056
+ #: admin/settings/html/updates-available.php:17
1057
+ #: admin/settings/html/updates-available.php:44
1058
+ #: admin/settings/html/updates-available.php:67
1059
  msgid "Upgrade to %s"
1060
  msgstr ""
1061
 
1062
+ #: admin/settings/html/updates-available.php:27
1063
+ msgid "Theme Updates"
1064
+ msgstr ""
1065
+
1066
+ #: admin/settings/html/updates-available.php:55
1067
+ msgid "Extension Updates"
1068
+ msgstr ""
1069
+
1070
+ #: admin/settings/include/sites.php:17
1071
+ msgid "Select All"
1072
+ msgstr ""
1073
+
1074
+ #: admin/settings/include/sites.php:18
1075
+ msgid "Select None"
1076
+ msgstr ""
1077
+
1078
+ #: admin/settings/include/sites.php:19
1079
+ msgid "Deploy to Sites"
1080
+ msgstr ""
1081
+
1082
+ #: admin/settings/include/sites.php:28 core/admin-render.php:57
1083
+ msgid "Deployment"
1084
+ msgstr ""
1085
+
1086
+ #: admin/settings/include/sites.php:29
1087
+ msgid ""
1088
+ "WARNING: Deploying to sub sites will overwrite sub site WPtouch Pro settings."
1089
+ msgstr ""
1090
+
1091
+ #: admin/settings/include/sites.php:29
1092
+ msgid "Your selected options are being deployed to sub sites"
1093
+ msgstr ""
1094
+
1095
+ #: admin/settings/include/sites.php:29
1096
+ msgid "Deploy Complete"
1097
+ msgstr ""
1098
+
1099
+ #: admin/settings/include/sites.php:30
1100
+ msgid "Deploy Now"
1101
  msgstr ""
1102
 
1103
  #: core/addon-theme-installer.php:172
1138
  "settings later."
1139
  msgstr ""
1140
 
1141
+ #: core/admin-extensions.php:365
1142
+ msgid "Site Activate"
1143
+ msgstr ""
1144
+
1145
+ #: core/admin-menu.php:47
1146
  msgid "Setup Wizard"
1147
  msgstr ""
1148
 
1149
+ #: core/admin-menu.php:48 core/class-wptouch-pro.php:1585
1150
  msgid "Settings"
1151
  msgstr ""
1152
 
1153
+ #: core/admin-menu.php:49
1154
  msgid "License %s Support"
1155
  msgstr ""
1156
 
1157
+ #: core/admin-menu.php:68
1158
+ msgid "Multisite Setup"
1159
+ msgstr ""
1160
+
1161
  #: core/admin-page-templates.php:17
1162
  msgid "Mobile Page Template"
1163
  msgstr ""
1188
  msgid "Preview Theme"
1189
  msgstr ""
1190
 
1191
+ #: core/admin-render.php:50 core/admin-render.php:66
1192
  msgid "Setup"
1193
  msgstr ""
1194
 
1195
+ #: core/admin-render.php:52 core/multisite.php:180
1196
+ msgid "General Options"
1197
+ msgstr ""
1198
+
1199
+ #: core/admin-render.php:55
1200
+ msgid "Tools"
1201
+ msgstr ""
1202
+
1203
+ #: core/admin-render.php:76 core/admin-render.php:83 core/config.php:89
1204
  msgid "General"
1205
  msgstr ""
1206
 
1207
+ #: core/admin-render.php:77 core/admin-render.php:91 core/config.php:91
1208
+ #: core/multisite.php:267 core/multisite.php:360
1209
  msgid "Devices"
1210
  msgstr ""
1211
 
1212
+ #: core/admin-render.php:78 core/admin-render.php:95 core/config.php:92
1213
+ #: core/multisite.php:275 core/multisite.php:368
1214
  msgid "Menu Settings"
1215
  msgstr ""
1216
 
1217
+ #: core/admin-render.php:79 core/admin-render.php:107
1218
  #: themes/foundation/root-functions.php:9
1219
  msgid "Theme Settings"
1220
  msgstr ""
1221
 
1222
+ #: core/admin-render.php:80
1223
  msgid "WPtouch Pro"
1224
  msgstr ""
1225
 
1226
+ #: core/admin-render.php:87 core/multisite.php:259 core/multisite.php:352
1227
  msgid "Site Compatibility"
1228
  msgstr ""
1229
 
1230
+ #: core/admin-render.php:102 core/admin-render.php:104
1231
+ #: core/admin-render.php:140 core/config.php:95 core/multisite.php:283
1232
+ #: core/multisite.php:376
1233
+ msgid "Themes"
1234
+ msgstr ""
1235
+
1236
+ #: core/admin-render.php:115 core/admin-render.php:117
1237
+ #: core/admin-render.php:141 core/config.php:96 core/multisite.php:291
1238
+ #: core/multisite.php:384
1239
+ msgid "Extensions"
1240
+ msgstr ""
1241
+
1242
+ #: core/admin-render.php:138
1243
+ msgid "Available for WPtouch Pro"
1244
+ msgstr ""
1245
+
1246
+ #: core/admin-render.php:188
1247
  msgid "Reset Settings"
1248
  msgstr ""
1249
 
1250
+ #: core/class-wptouch-pro.php:597
1251
  msgid ""
1252
  "Automatic theme migration from wp-content/uploads/wptouch-data directory "
1253
  "failed. Please manually move these folders to wp-content/wptouch-data: %s"
1254
  msgstr ""
1255
 
1256
+ #: core/class-wptouch-pro.php:616
1257
  msgid ""
1258
  "%sWPtouch: %s was recently disabled, but is still affecting your website and "
1259
  "caching pages.%s"
1260
  msgstr ""
1261
 
1262
+ #: core/class-wptouch-pro.php:617
1263
  msgid ""
1264
  "%sPlease reactivate the plugin, disable page caching, then deactivate the "
1265
  "plugin again to correct this issue.%s"
1266
  msgstr ""
1267
 
1268
+ #: core/class-wptouch-pro.php:618 core/class-wptouch-pro.php:627
1269
  msgid ""
1270
  "%sFixing this issue prevents cached desktop pages being served to mobile "
1271
  "devices and vice-versa.%s"
1272
  msgstr ""
1273
 
1274
+ #: core/class-wptouch-pro.php:619 core/class-wptouch-pro.php:628
1275
  msgid ""
1276
  "%sOnce fixed, this message will be dismissed automatically. Until fixed, %"
1277
  "sWPtouch will not be shown%s to mobile visitors, and cannot be previewed.%s"
1278
  msgstr ""
1279
 
1280
+ #: core/class-wptouch-pro.php:626
1281
  msgid "%sWPtouch: %s needs to be configured to work correctly with WPtouch.%s"
1282
  msgstr ""
1283
 
1284
+ #: core/class-wptouch-pro.php:629
1285
  msgid ""
1286
  "%sTo fix the issue, follow our %sstep-by-step setup guide%s on support."
1287
  "wptouch.com%s"
1288
  msgstr ""
1289
 
1290
+ #: core/class-wptouch-pro.php:641
1291
  msgid "WPtouch Repair Required"
1292
  msgstr ""
1293
 
1294
+ #: core/class-wptouch-pro.php:648
1295
  msgid "Your mobile theme was either broken or missing."
1296
  msgstr ""
1297
 
1298
+ #: core/class-wptouch-pro.php:649
1299
  msgid "We downloaded a fresh copy for you."
1300
  msgstr ""
1301
 
1302
+ #: core/class-wptouch-pro.php:650 core/class-wptouch-pro.php:660
1303
  msgid "OK"
1304
  msgstr ""
1305
 
1306
+ #: core/class-wptouch-pro.php:653
1307
  msgid ""
1308
  "We were unable to install your WPtouch Pro theme from the Cloud. %s Please "
1309
  "visit %sthis article%s for more information."
1310
  msgstr ""
1311
 
1312
+ #: core/class-wptouch-pro.php:656
1313
  msgid "WPtouch Server Issue"
1314
  msgstr ""
1315
 
1316
+ #: core/class-wptouch-pro.php:658
1317
  msgid ""
1318
  "Your server setup is preventing WPtouch Pro from installing from the Cloud. %"
1319
  "s Please visit %sthis article%s for more information on how to fix it."
1320
  msgstr ""
1321
 
1322
+ #: core/class-wptouch-pro.php:905
1323
  msgid ""
1324
  "This will reset all WPtouch Pro settings.\n"
1325
  "Are you sure?"
1326
  msgstr ""
1327
 
1328
+ #: core/class-wptouch-pro.php:906
1329
  msgid ""
1330
  "This will reset all WPtouch Pro settings and delete the wptouch-data "
1331
  "folder.\n"
1332
  "Are you sure?"
1333
  msgstr ""
1334
 
1335
+ #: core/class-wptouch-pro.php:907
1336
  msgid ""
1337
  "This will reset all WPtouch Pro settings, delete the wptouch-data folder, "
1338
  "and deactivate the plugin. Are you sure?"
1339
  msgstr ""
1340
 
1341
+ #: core/class-wptouch-pro.php:908
1342
  msgid "The item failed to download for this reason: %reason%"
1343
  msgstr ""
1344
 
1345
+ #: core/class-wptouch-pro.php:909
1346
  msgid "You are about to reset your license information. Proceed?"
1347
  msgstr ""
1348
 
1349
+ #: core/class-wptouch-pro.php:911
1350
  msgid "Upload Failed: Not a valid image."
1351
  msgstr ""
1352
 
1353
+ #: core/class-wptouch-pro.php:912
1354
  msgid ""
1355
  "WPtouch is saving settings. Please do not refresh the page while saving."
1356
  msgstr ""
1357
 
1358
+ #: core/class-wptouch-pro.php:913
1359
  msgid "Install Themes"
1360
  msgstr ""
1361
 
1362
+ #: core/class-wptouch-pro.php:914
1363
  msgid "Install Extensions"
1364
  msgstr ""
1365
 
1366
+ #: core/class-wptouch-pro.php:1622
1367
  msgid "%s Changelog"
1368
  msgstr ""
1369
 
1370
+ #: core/class-wptouch-pro.php:3030
1371
  msgid "Directory Problem"
1372
  msgstr ""
1373
 
1374
+ #: core/class-wptouch-pro.php:3031
1375
  msgid "One or more required directories could not be created"
1376
  msgstr ""
1377
 
1378
+ #: core/config.php:90
1379
  msgid "Compatibility"
1380
  msgstr ""
1381
 
1483
  msgid "Original: %s"
1484
  msgstr ""
1485
 
1486
+ #: core/menu-walkers.php:415
1487
+ msgid "Remove"
1488
+ msgstr ""
1489
+
1490
  #: core/menu-walkers.php:416 themes/bauhaus/default/comments.php:48
1491
  #: themes/foundation/default/comments.php:48
1492
  msgid "Cancel"
1496
  msgid "Feed for all posts filed under %s"
1497
  msgstr ""
1498
 
1499
+ #: core/multisite.php:186
1500
+ msgid "Admin Language"
1501
+ msgstr ""
1502
+
1503
+ #: core/multisite.php:196
1504
+ msgid "Control themes and extension downloads and updates"
1505
+ msgstr ""
1506
+
1507
+ #: core/multisite.php:197
1508
+ msgid ""
1509
+ "If enabled, sub-sites can only activate/deactivate themes and extensions "
1510
+ "that have been downloaded in the network admin."
1511
+ msgstr ""
1512
+
1513
+ #: core/multisite.php:216
1514
+ msgid "Network Defaults"
1515
+ msgstr ""
1516
+
1517
+ #: core/multisite.php:222
1518
+ msgid "Use my settings for new sites"
1519
+ msgstr ""
1520
+
1521
+ #: core/multisite.php:230 core/multisite.php:335
1522
+ msgid "Source site"
1523
+ msgstr ""
1524
+
1525
+ #: core/multisite.php:240
1526
+ msgid ""
1527
+ "Configure WPtouch to use a site for defaults on new network sites instead of "
1528
+ "its defaults"
1529
+ msgstr ""
1530
+
1531
+ #: core/multisite.php:245
1532
+ msgid "Subsite Customizable Settings"
1533
+ msgstr ""
1534
+
1535
+ #: core/multisite.php:251 core/multisite.php:344
1536
+ msgid "General Settings"
1537
+ msgstr ""
1538
+
1539
+ #: core/multisite.php:299 core/multisite.php:392
1540
+ msgid "Colors"
1541
+ msgstr ""
1542
+
1543
+ #: core/multisite.php:307 core/multisite.php:400
1544
+ #: themes/foundation/modules/social-links/social-links.php:9
1545
+ msgid "Social Media Links"
1546
+ msgstr ""
1547
+
1548
+ #: core/multisite.php:315 core/multisite.php:408
1549
+ #: themes/foundation/modules/sharing/sharing.php:95
1550
+ msgid "Social Sharing"
1551
+ msgstr ""
1552
+
1553
+ #: core/multisite.php:324
1554
+ msgid ""
1555
+ "Select which settings sections are available to users in network subsites "
1556
+ "(network admins always see settings)."
1557
+ msgstr ""
1558
+
1559
+ #: core/multisite.php:329
1560
+ msgid "Source Site"
1561
+ msgstr ""
1562
+
1563
+ #: core/multisite.php:420
1564
+ msgid "Destination Sites"
1565
+ msgstr ""
1566
+
1567
  #: include/html/desktop-switch.php:2
1568
  msgid "Desktop Version"
1569
  msgstr ""
1666
 
1667
  #: themes/bauhaus/default/comments.php:67
1668
  #: themes/foundation/default/comments.php:67
1669
+ #: themes/foundation/modules/social-links/social-links.php:95
1670
  msgid "E-Mail"
1671
  msgstr ""
1672
 
1802
  msgid "desktop"
1803
  msgstr ""
1804
 
1805
+ #: themes/bauhaus/root-functions.php:118
1806
  msgid "Header Menu"
1807
  msgstr ""
1808
 
1809
+ #: themes/bauhaus/root-functions.php:120
1810
  msgid "Choose a menu"
1811
  msgstr ""
1812
 
1813
+ #: themes/bauhaus/root-functions.php:121
1814
  msgid "Main menu selection"
1815
  msgstr ""
1816
 
1817
+ #: themes/bauhaus/root-functions.php:128
1818
  msgid "Theme background"
1819
  msgstr ""
1820
 
1821
+ #: themes/bauhaus/root-functions.php:129
1822
  msgid "Header & Menu"
1823
  msgstr ""
1824
 
1825
+ #: themes/bauhaus/root-functions.php:130
1826
  msgid "Links"
1827
  msgstr ""
1828
 
1829
+ #: themes/bauhaus/root-functions.php:131
1830
  msgid "Post/Page Headers"
1831
  msgstr ""
1832
 
1833
+ #: themes/bauhaus/root-functions.php:224
1834
  msgid "Menu animation style"
1835
  msgstr ""
1836
 
1837
+ #: themes/bauhaus/root-functions.php:229
1838
  msgid "Off-canvas"
1839
  msgstr ""
1840
 
1841
+ #: themes/bauhaus/root-functions.php:230
1842
  msgid "Drop-down"
1843
  msgstr ""
1844
 
1845
+ #: themes/bauhaus/root-functions.php:238
1846
  msgid "Show search in header"
1847
  msgstr ""
1848
 
1849
+ #: themes/bauhaus/root-functions.php:255
1850
  msgid "Post thumbnails"
1851
  msgstr ""
1852
 
1853
+ #: themes/bauhaus/root-functions.php:260
1854
  msgid "No thumbnails"
1855
  msgstr ""
1856
 
1857
+ #: themes/bauhaus/root-functions.php:261
1858
  msgid "Blog listing only"
1859
  msgstr ""
1860
 
1861
+ #: themes/bauhaus/root-functions.php:262
1862
  msgid "Blog listing, single posts"
1863
  msgstr ""
1864
 
1865
+ #: themes/bauhaus/root-functions.php:263
1866
  msgid "Blog listing, single posts & pages"
1867
  msgstr ""
1868
 
1869
+ #: themes/bauhaus/root-functions.php:264
1870
  msgid "All (blog, single, pages, search & archive)"
1871
  msgstr ""
1872
 
1873
+ #: themes/bauhaus/root-functions.php:272
1874
  msgid "Thumbnail Type"
1875
  msgstr ""
1876
 
1877
+ #: themes/bauhaus/root-functions.php:277
1878
  msgid "Post featured images"
1879
  msgstr ""
1880
 
1881
+ #: themes/bauhaus/root-functions.php:278
1882
  msgid "Post custom field"
1883
  msgstr ""
1884
 
1885
+ #: themes/bauhaus/root-functions.php:286
1886
  msgid "Thumbnail custom field name"
1887
  msgstr ""
1888
 
1889
+ #: themes/bauhaus/root-functions.php:297
1890
  msgid "Show post categories and tags"
1891
  msgstr ""
1892
 
1893
+ #: themes/bauhaus/root-functions.php:308
1894
  msgid "Show post date"
1895
  msgstr ""
1896
 
1897
+ #: themes/bauhaus/root-functions.php:319
1898
  msgid "Show post author"
1899
  msgstr ""
1900
 
1901
+ #: themes/bauhaus/root-functions.php:330
1902
  msgid "Show comment bubbles on posts"
1903
  msgstr ""
1904
 
1905
+ #: themes/bauhaus/root-functions.php:341
1906
  msgid "Use infinite scrolling for blog"
1907
  msgstr ""
1908
 
1956
  "site."
1957
  msgstr ""
1958
 
1959
+ #: themes/foundation/modules/featured/featured.php:309
1960
  msgid "Featured slider style"
1961
  msgstr ""
1962
 
1963
+ #: themes/foundation/modules/featured/featured.php:314
1964
  msgid "Enhanced"
1965
  msgstr ""
1966
 
1967
+ #: themes/foundation/modules/featured/featured.php:315
1968
+ msgid "Streamlined"
 
1969
  msgstr ""
1970
 
1971
+ #: themes/foundation/modules/featured/featured.php:327
1972
  msgid "Number of posts in slider"
1973
  msgstr ""
1974
 
1975
+ #: themes/foundation/modules/featured/featured.php:340
1976
  msgid "Show # of comments"
1977
  msgstr ""
1978
 
1979
+ #: themes/foundation/modules/featured/featured.php:348
1980
  msgid "Slide automatically"
1981
  msgstr ""
1982
 
1983
+ #: themes/foundation/modules/featured/featured.php:356
1984
  msgid "Slides repeat"
1985
  msgstr ""
1986
 
1987
+ #: themes/foundation/modules/featured/featured.php:364
1988
  msgid "Make images grayscale"
1989
  msgstr ""
1990
 
1991
+ #: themes/foundation/modules/featured/featured.php:372
1992
  msgid "Slider posts also show in listings"
1993
  msgstr ""
1994
 
1995
+ #: themes/foundation/modules/featured/featured.php:380
1996
  msgid "Slide transition speed"
1997
  msgstr ""
1998
 
1999
+ #: themes/foundation/modules/featured/featured.php:385
2000
  msgid "Slow"
2001
  msgstr ""
2002
 
2003
+ #: themes/foundation/modules/featured/featured.php:386
2004
+ msgid "Normal"
2005
+ msgstr ""
2006
+
2007
+ #: themes/foundation/modules/featured/featured.php:387
2008
  msgid "Fast"
2009
  msgstr ""
2010
 
2011
+ #: themes/foundation/modules/featured/featured.php:398
2012
  msgid "Show latest posts"
2013
  msgstr ""
2014
 
2015
+ #: themes/foundation/modules/featured/featured.php:399
2016
  msgid "Show posts from a specific tag"
2017
  msgstr ""
2018
 
2019
+ #: themes/foundation/modules/featured/featured.php:400
2020
  msgid "Show posts from a specific category"
2021
  msgstr ""
2022
 
2023
+ #: themes/foundation/modules/featured/featured.php:401
2024
  msgid "Show posts from a specific post type"
2025
  msgstr ""
2026
 
2027
+ #: themes/foundation/modules/featured/featured.php:402
2028
  msgid "Show only specific posts or pages"
2029
  msgstr ""
2030
 
2031
+ #: themes/foundation/modules/featured/featured.php:408
2032
  msgid "Only this tag"
2033
  msgstr ""
2034
 
2035
+ #: themes/foundation/modules/featured/featured.php:409
2036
+ #: themes/foundation/modules/featured/featured.php:418
2037
  msgid "Enter the tag/category slug name"
2038
  msgstr ""
2039
 
2040
+ #: themes/foundation/modules/featured/featured.php:417
2041
  msgid "Only this category"
2042
  msgstr ""
2043
 
2044
+ #: themes/foundation/modules/featured/featured.php:426
2045
  msgid "Comma-separated list of post/page IDs"
2046
  msgstr ""
2047
 
2048
+ #: themes/foundation/modules/featured/featured.php:437
2049
  msgid "Only this post type"
2050
  msgstr ""
2051
 
2052
+ #: themes/foundation/modules/featured/featured.php:447
2053
  msgid "Featured Slider"
2054
  msgstr ""
2055
 
2056
+ #: themes/foundation/modules/featured/featured.php:454
2057
  msgid "Enable featured slider"
2058
  msgstr ""
2059
 
2060
+ #: themes/foundation/modules/featured/featured.php:455
2061
  msgid "Requires at least 2 entries to contain featured images"
2062
  msgstr ""
2063
 
2064
+ #: themes/foundation/modules/google-fonts/google-fonts.php:21
2065
  msgid "Browser Default Fonts"
2066
  msgstr ""
2067
 
2068
+ #: themes/foundation/modules/google-fonts/google-fonts.php:29
2069
  msgid "Typography"
2070
  msgstr ""
2071
 
2072
+ #: themes/foundation/modules/google-fonts/google-fonts.php:35
2073
  msgid "Font Pairing"
2074
  msgstr ""
2075
 
2076
+ #: themes/foundation/modules/google-fonts/google-fonts.php:36
2077
  msgid ""
2078
  "Choose a Google font pairing designed for this theme, or default browser "
2079
  "fonts."
2099
  msgid "Lost password?"
2100
  msgstr ""
2101
 
2102
+ #: themes/foundation/modules/login/login.php:10
2103
+ msgid "Show login in menu"
 
 
 
 
2104
  msgstr ""
2105
 
2106
+ #: themes/foundation/modules/login/login.php:11
 
 
 
 
 
 
 
 
2107
  msgid "Will add login/out links"
2108
  msgstr ""
2109
 
 
 
 
 
2110
  #: themes/foundation/modules/media/media.php:34
2111
  msgid "Video Handling"
2112
  msgstr ""
2122
  "them with the correct aspect ratio."
2123
  msgstr ""
2124
 
2125
+ #: themes/foundation/modules/sharing/sharing.php:101
 
 
 
 
2126
  msgid "Will show Facebook, Twitter, Pinterest and Email buttons."
2127
  msgstr ""
2128
 
2129
+ #: themes/foundation/modules/sharing/sharing.php:109
2130
  msgid "Show sharing links on posts"
2131
  msgstr ""
2132
 
2133
+ #: themes/foundation/modules/sharing/sharing.php:117
2134
  msgid "Also show on pages"
2135
  msgstr ""
2136
 
2137
+ #: themes/foundation/modules/sharing/sharing.php:125
2138
  msgid "Sharing links location"
2139
  msgstr ""
2140
 
2141
+ #: themes/foundation/modules/sharing/sharing.php:130
2142
  msgid "Above post content"
2143
  msgstr ""
2144
 
2145
+ #: themes/foundation/modules/sharing/sharing.php:131
2146
  msgid "Below post content"
2147
  msgstr ""
2148
 
2149
+ #: themes/foundation/modules/sharing/sharing.php:137
2150
  msgid "Color scheme"
2151
  msgstr ""
2152
 
2153
+ #: themes/foundation/modules/sharing/sharing.php:142
2154
  msgid "Theme colors"
2155
  msgstr ""
2156
 
2157
+ #: themes/foundation/modules/sharing/sharing.php:143
2158
  msgid "Social network colors"
2159
  msgstr ""
2160
 
2161
+ #: themes/foundation/modules/social-links/social-links.php:16
 
 
 
 
2162
  msgid "Full URL to your Facebook page"
2163
  msgstr ""
2164
 
2165
+ #: themes/foundation/modules/social-links/social-links.php:24
2166
  msgid "Full URL to your Twitter profile"
2167
  msgstr ""
2168
 
2169
+ #: themes/foundation/modules/social-links/social-links.php:32
2170
  msgid "Full URL to your Google+ profile"
2171
  msgstr ""
2172
 
2173
+ #: themes/foundation/modules/social-links/social-links.php:40
2174
  msgid "Full URL to your Instagram profile"
2175
  msgstr ""
2176
 
2177
+ #: themes/foundation/modules/social-links/social-links.php:47
2178
  msgid "Tumblr"
2179
  msgstr ""
2180
 
2181
+ #: themes/foundation/modules/social-links/social-links.php:48
2182
  msgid "Full URL to your Tumblr profile"
2183
  msgstr ""
2184
 
2185
+ #: themes/foundation/modules/social-links/social-links.php:56
2186
  msgid "Full URL to your Pinterest page"
2187
  msgstr ""
2188
 
2189
+ #: themes/foundation/modules/social-links/social-links.php:64
2190
  msgid "Full URL to your Vimeo page"
2191
  msgstr ""
2192
 
2193
+ #: themes/foundation/modules/social-links/social-links.php:72
2194
  msgid "Full URL to your %s profile"
2195
  msgstr ""
2196
 
2197
+ #: themes/foundation/modules/social-links/social-links.php:79
2198
  msgid "LinkedIn"
2199
  msgstr ""
2200
 
2201
+ #: themes/foundation/modules/social-links/social-links.php:80
2202
  msgid "Full URL to your LinkedIn profile"
2203
  msgstr ""
2204
 
2205
+ #: themes/foundation/modules/social-links/social-links.php:88
2206
  msgid "Full URL to your Yelp profile"
2207
  msgstr ""
2208
 
2209
+ #: themes/foundation/modules/social-links/social-links.php:96
2210
  msgid "E-Mail address"
2211
  msgstr ""
2212
 
2213
+ #: themes/foundation/modules/social-links/social-links.php:104
2214
  msgid "Full URL to your RSS feed"
2215
  msgstr ""
2216
 
2219
  msgstr ""
2220
 
2221
  #: themes/foundation/modules/tablets/tablets.php:64
2222
+ #: themes/foundation/root-functions.php:462
2223
  msgid "%d by %d pixels (PNG)"
2224
  msgstr ""
2225
 
2243
  msgid "Language: "
2244
  msgstr ""
2245
 
2246
+ #: themes/foundation/root-functions.php:386
2247
  msgid "Theme Colors"
2248
  msgstr ""
2249
 
2250
+ #: themes/foundation/root-functions.php:402
2251
  msgid "Number of posts in post listings"
2252
  msgstr ""
2253
 
2254
+ #: themes/foundation/root-functions.php:403
2255
  msgid ""
2256
  "Overrides the WordPress Reading settings for \"Blog pages show at most\""
2257
  msgstr ""
2258
 
2259
+ #: themes/foundation/root-functions.php:415
2260
  msgid "Excluded categories"
2261
  msgstr ""
2262
 
2263
+ #: themes/foundation/root-functions.php:416
2264
  msgid "Comma separated by category name"
2265
  msgstr ""
2266
 
2267
+ #: themes/foundation/root-functions.php:423
2268
  msgid "Excluded tags"
2269
  msgstr ""
2270
 
2271
+ #: themes/foundation/root-functions.php:424
2272
  msgid "Comma separated by tag name"
2273
  msgstr ""
2274
 
2275
+ #: themes/foundation/root-functions.php:435
2276
  msgid "Blog"
2277
  msgstr ""
2278
 
2279
+ #: themes/foundation/root-functions.php:445
2280
+ #: themes/foundation/root-functions.php:1212
2281
  msgid "Pages"
2282
  msgstr ""
2283
 
2284
+ #: themes/foundation/root-functions.php:456
2285
  msgid "Site Icon"
2286
  msgstr ""
2287
 
2288
+ #: themes/foundation/root-functions.php:480
2289
  msgid "Site Logo"
2290
  msgstr ""
2291
 
2292
+ #: themes/foundation/root-functions.php:492
2293
  msgid "Header"
2294
  msgstr ""
2295
 
2296
+ #: themes/foundation/root-functions.php:504
2297
  msgid "Footer"
2298
  msgstr ""
2299
 
2300
+ #: themes/foundation/root-functions.php:510
2301
  msgid "Custom footer content (HTML is allowed)"
2302
  msgstr ""
2303
 
2304
+ #: themes/foundation/root-functions.php:525
2305
  msgid "Custom CSS"
2306
  msgstr ""
2307
 
2308
+ #: themes/foundation/root-functions.php:531
2309
  msgid "Custom CSS Declarations"
2310
  msgstr ""
2311
 
2312
+ #: themes/foundation/root-functions.php:877
2313
  msgid "search results for '%s'"
2314
  msgstr ""
2315
 
2316
+ #: themes/foundation/root-functions.php:879
2317
  msgid "%sCategories &rsaquo;%s %s"
2318
  msgstr ""
2319
 
2320
+ #: themes/foundation/root-functions.php:881
2321
  msgid "Tags &rsaquo; %s"
2322
  msgstr ""
2323
 
2324
+ #: themes/foundation/root-functions.php:883
2325
+ #: themes/foundation/root-functions.php:885
2326
  #: themes/foundation/root-functions.php:887
 
 
2327
  msgid "Archives &rsaquo; %s"
2328
  msgstr ""
2329
 
2330
+ #: themes/foundation/root-functions.php:902
2331
  msgid "Load more from this category"
2332
  msgstr ""
2333
 
2334
+ #: themes/foundation/root-functions.php:904
2335
  msgid "Load more tagged like this"
2336
  msgstr ""
2337
 
2338
+ #: themes/foundation/root-functions.php:906
2339
  msgid "Load more from this day"
2340
  msgstr ""
2341
 
2342
+ #: themes/foundation/root-functions.php:908
2343
  msgid "Load more from this month"
2344
  msgstr ""
2345
 
2346
+ #: themes/foundation/root-functions.php:910
2347
  msgid "Load more from this year"
2348
  msgstr ""
2349
 
2350
+ #: themes/foundation/root-functions.php:912
2351
  msgid "Load more in this section"
2352
  msgstr ""
2353
 
2354
+ #: themes/foundation/root-functions.php:914
2355
  msgid "Load more entries"
2356
  msgstr ""
2357
 
2358
+ #: themes/foundation/root-functions.php:1161
2359
  msgid "Post"
2360
  msgstr ""
2361
 
2362
+ #: themes/foundation/root-functions.php:1163
2363
  msgid "Page"
2364
  msgstr ""
2365
 
readme.txt CHANGED
@@ -2,8 +2,8 @@
2
  Contributors: bravenewcode, duanestorey, dalemugford, mkuplens
3
  Tags: wptouch, iphone, ipod, bravenewcode, mobile, mobile-friendly, android, blackberry, smartphone, responsive, design, mobile plugin, ios, mobile theme
4
  Requires at least: 4.0
5
- Stable tag: 4.0.4
6
- Tested up to: 4.4.2
7
  License: GPLv2
8
 
9
  Make your WordPress website mobile-friendly with just a few clicks.
@@ -33,12 +33,23 @@ For more information visit [WPtouch.com](http://www.wptouch.com/?utm_campaign=wp
33
 
34
  == Changelog ==
35
 
 
 
 
 
 
 
 
36
  = Version 4.0.4 (February 29, 2016) =
37
 
38
  * New: Featured slider settings to control display of # of comments
39
  * New: Featured slider option for more minimal slider appearance
 
40
  * Changed: Minor styling enhancements and fixes
 
 
41
  * Fixed: Minor styling issues
 
42
  * Updated: Opera users agents to better specify supported opera versions and platforms
43
 
44
  = Version 4.0.3 (January 19, 2016) =
2
  Contributors: bravenewcode, duanestorey, dalemugford, mkuplens
3
  Tags: wptouch, iphone, ipod, bravenewcode, mobile, mobile-friendly, android, blackberry, smartphone, responsive, design, mobile plugin, ios, mobile theme
4
  Requires at least: 4.0
5
+ Stable tag: 4.1
6
+ Tested up to: 4.5
7
  License: GPLv2
8
 
9
  Make your WordPress website mobile-friendly with just a few clicks.
33
 
34
  == Changelog ==
35
 
36
+ = Version 4.1 (March 24, 2016) =
37
+
38
+ * New: New filters to support AMP extension in WPtouch Pro
39
+ * Changed: Streamlined wizard experience
40
+ * Fixed: Case where featured posts would always be repeated in listing if featured slider was set to show only 1 post
41
+ * Fixed: Error when page was not found
42
+
43
  = Version 4.0.4 (February 29, 2016) =
44
 
45
  * New: Featured slider settings to control display of # of comments
46
  * New: Featured slider option for more minimal slider appearance
47
+ * Changed: Added styling for some rarer html elements, and updated others (ol, code, pre etc.)
48
  * Changed: Minor styling enhancements and fixes
49
+ * Fixed: Load more posts on custom posts page did not load posts in certain configurations
50
+ * Fixed: Retain WPML language parameter when redirecting to mobile landing page
51
  * Fixed: Minor styling issues
52
+ * Fixed: Toggle fields not saving on some server configurations
53
  * Updated: Opera users agents to better specify supported opera versions and platforms
54
 
55
  = Version 4.0.3 (January 19, 2016) =
themes/bauhaus/default/header-bottom.php CHANGED
@@ -2,7 +2,7 @@
2
  <div id="menu" class="wptouch-menu show-hide-menu">
3
  <?php if ( wptouch_has_menu( 'primary_menu' ) ) { wptouch_show_menu( 'primary_menu' ); } ?>
4
 
5
- <?php if ( get_option( 'comment_registration' ) ) { ?>
6
  <ul class="menu-tree login-link">
7
  <li>
8
  <?php if ( !is_user_logged_in() ) { ?>
2
  <div id="menu" class="wptouch-menu show-hide-menu">
3
  <?php if ( wptouch_has_menu( 'primary_menu' ) ) { wptouch_show_menu( 'primary_menu' ); } ?>
4
 
5
+ <?php if ( wptouch_fdn_show_login() ) { ?>
6
  <ul class="menu-tree login-link">
7
  <li>
8
  <?php if ( !is_user_logged_in() ) { ?>
themes/bauhaus/default/style.css CHANGED
@@ -1,5 +1,3 @@
1
- /* @override http://wptp3.local.com/wp-content/wptouch-data/themes/bauhaus/default/style.css?ver=8592ce708d0f07d31806215760a95116 */
2
-
3
  /* Bauhaus CSS */
4
 
5
  /*
 
 
1
  /* Bauhaus CSS */
2
 
3
  /*
themes/bauhaus/readme.txt CHANGED
@@ -25,6 +25,7 @@ Bauhaus is one of our more flexible themes, and is designed to easily take on th
25
 
26
  = Version 1.6.4 =
27
 
 
28
  * Added: Featured slider settings to control display of # of comments
29
  * Added: Featured slider option for more minimal slider appearance
30
  * Changed: Minor styling enhancements and fixes
25
 
26
  = Version 1.6.4 =
27
 
28
+ * Added: Support for the new AMP extension
29
  * Added: Featured slider settings to control display of # of comments
30
  * Added: Featured slider option for more minimal slider appearance
31
  * Changed: Minor styling enhancements and fixes
themes/bauhaus/root-functions.php CHANGED
@@ -95,6 +95,7 @@ function bauhaus_theme_init() {
95
  'sharing',
96
  'social-links',
97
  'featured',
 
98
  // Modules w/o settings
99
  'menu',
100
  'spinjs',
@@ -403,4 +404,34 @@ function bauhaus_if_off_canvas_enabled(){
403
  if ( $settings->bauhaus_menu_style == 'off-canvas' ) {
404
  foundation_add_theme_support( 'pushit' );
405
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
406
  }
95
  'sharing',
96
  'social-links',
97
  'featured',
98
+ 'login',
99
  // Modules w/o settings
100
  'menu',
101
  'spinjs',
404
  if ( $settings->bauhaus_menu_style == 'off-canvas' ) {
405
  foundation_add_theme_support( 'pushit' );
406
  }
407
+ }
408
+
409
+ add_filter( 'wptouch_amp_header_color', 'bauhaus_amp_header_color' );
410
+ function bauhaus_amp_header_color( $color ) {
411
+ $settings = bauhaus_get_settings();
412
+ return $settings->bauhaus_header_color;
413
+ }
414
+
415
+ add_filter( 'wptouch_amp_link_color', 'bauhaus_amp_link_color' );
416
+ function bauhaus_amp_link_color( $color ) {
417
+ $settings = bauhaus_get_settings();
418
+ return $settings->bauhaus_link_color;
419
+ }
420
+
421
+ add_filter( 'wptouch_amp_show_author', 'bauhaus_amp_show_author' );
422
+ function bauhaus_amp_show_author() {
423
+ $settings = bauhaus_get_settings();
424
+ return $settings->bauhaus_show_author;
425
+ }
426
+
427
+ add_filter( 'wptouch_amp_show_date', 'bauhaus_amp_show_date' );
428
+ function bauhaus_amp_show_date() {
429
+ $settings = bauhaus_get_settings();
430
+ return $settings->bauhaus_show_date;
431
+ }
432
+
433
+ add_filter( 'wptouch_amp_show_taxonomy', 'bauhaus_amp_show_taxonomy' );
434
+ function bauhaus_amp_show_taxonomy() {
435
+ $settings = bauhaus_get_settings();
436
+ return $settings->bauhaus_show_taxonomy;
437
  }
themes/foundation/modules/custom-latest-posts/custom-latest-posts.php CHANGED
@@ -19,7 +19,7 @@ function wptouch_custom_latest_post_filter( $query_vars ) {
19
  }
20
  }
21
 
22
- if ( isset( $dummy_query->queried_object_id ) && apply_filters( 'foundation_is_custom_latest_posts_page', ( $settings->latest_posts_page == $dummy_query->queried_object_id ) ) ) {
23
  if ( isset( $query_vars[ 'paged' ] ) ) {
24
  $paged = $query_vars[ 'paged' ];
25
  } elseif ( isset( $query_vars[ 'page' ] ) ) {
@@ -68,7 +68,7 @@ function wptouch_fdn_is_custom_latest_posts_page() {
68
  wptouch_the_post();
69
  rewind_posts();
70
 
71
- return apply_filters( 'foundation_is_custom_latest_posts_page', ( $settings->latest_posts_page == $post->ID ) );
72
  }
73
  }
74
 
19
  }
20
  }
21
 
22
+ if ( isset( $dummy_query->queried_object_id ) && apply_filters( 'foundation_is_custom_latest_posts_page', ( $settings->latest_posts_page == $dummy_query->queried_object_id ), $settings->latest_posts_page, $dummy_query->queried_object_id ) ) {
23
  if ( isset( $query_vars[ 'paged' ] ) ) {
24
  $paged = $query_vars[ 'paged' ];
25
  } elseif ( isset( $query_vars[ 'page' ] ) ) {
68
  wptouch_the_post();
69
  rewind_posts();
70
 
71
+ return apply_filters( 'foundation_is_custom_latest_posts_page', ( $settings->latest_posts_page == $post->ID ), $settings->latest_posts_page, $post->ID );
72
  }
73
  }
74
 
themes/foundation/modules/featured/featured.php CHANGED
@@ -4,8 +4,6 @@ add_action( 'wp_loaded', 'foundation_featured_setup' );
4
  add_action( 'foundation_module_init_mobile', 'foundation_featured_init' );
5
  add_action( 'wptouch_admin_page_render_wptouch-admin-theme-settings', 'foundation_featured_settings' );
6
 
7
- define( 'FOUNDATION_FEATURED_MIN_NUM', 2 );
8
-
9
  global $foundation_featured_args;
10
  global $foundation_featured_posts;
11
 
@@ -44,9 +42,9 @@ function foundation_featured_setup() {
44
  $args = foundation_featured_get_args();
45
 
46
  $slides = foundation_featured_get_slides();
47
- $slide_count = 0;
48
  if ( $slides->post_count > 0 ) {
49
- while ( $slides->have_posts() && $slide_count < $args[ 'num' ] ) {
50
  $slides->the_post();
51
  $image = foundation_featured_has_image();
52
  if ( apply_filters( 'wptouch_has_post_thumbnail', $image ) ) {
@@ -85,10 +83,6 @@ function foundation_featured_modify_query( $query ) {
85
 
86
  global $foundation_featured_posts;
87
 
88
- if ( count( $foundation_featured_posts ) < FOUNDATION_FEATURED_MIN_NUM ) {
89
- return $query;
90
- }
91
-
92
  $post_array = array();
93
 
94
  foreach( $foundation_featured_posts as $post_id ) {
@@ -113,7 +107,7 @@ function foundation_featured_get_args() {
113
  'show_dots' => true, // might not be needed
114
  'before' => '',
115
  'after' => '',
116
- 'max_search' => 20,
117
  'ignore_sticky_posts' => 1
118
  );
119
  // Parse defaults into arguments
@@ -133,10 +127,10 @@ function foundation_featured_get_slides() {
133
  $new_posts = false;
134
  switch( $settings->featured_type ) {
135
  case 'tag':
136
- $new_posts = new WP_Query( array( 'ignore_sticky_posts' => 1, 'posts_per_page' => $args[ 'max_search' ], 'tag' => $settings->featured_tag ) );
137
  break;
138
  case 'category':
139
- $new_posts = new WP_Query( array( 'ignore_sticky_posts' => 1, 'posts_per_page' => $args[ 'max_search' ], 'category_name' => $settings->featured_category ) );
140
  break;
141
  case 'posts':
142
  if ( function_exists( 'wptouch_custom_posts_add_to_search' ) ) {
@@ -146,11 +140,11 @@ function foundation_featured_get_slides() {
146
  }
147
  $post_ids = explode( ',', str_replace( ' ', '', $settings->featured_post_ids ) );
148
  if ( is_array( $post_ids ) && count( $post_ids ) ) {
149
- $new_posts = new WP_Query( array( 'post__in' => $post_ids, 'posts_per_page' => $args[ 'max_search' ], 'post_type' => $post_types, 'orderby' => 'post__in' ) );
150
  }
151
  break;
152
  case 'post_type':
153
- $new_posts = new WP_Query( 'post_type=' . $settings->featured_post_type . '&posts_per_page=' . $args[ 'max_search' ] );
154
  break;
155
  case 'latest':
156
  default:
@@ -158,7 +152,7 @@ function foundation_featured_get_slides() {
158
  }
159
 
160
  if ( !$new_posts ) {
161
- $new_posts = new WP_Query( 'posts_per_page=' . $args[ 'max_search' ] );
162
  }
163
 
164
  return $new_posts;
@@ -251,6 +245,7 @@ function foundation_featured_get_slider_classes() {
251
 
252
  function foundation_featured_slider( $manual = false, $manual_html = false ) {
253
  global $foundation_featured_posts;
 
254
  $args = foundation_featured_get_args();
255
 
256
  if ( featured_should_show_slider() ) {
@@ -262,7 +257,7 @@ function foundation_featured_slider( $manual = false, $manual_html = false ) {
262
  $post_types = array( 'post', 'page' );
263
  }
264
 
265
- $slides = new WP_Query( array( 'ignore_sticky_posts' => 1, 'post__in' => $foundation_featured_posts, 'post_type' => $post_types ) );
266
 
267
  if ( $slides->post_count > 0 ) {
268
  echo $args['before'];
@@ -308,7 +303,7 @@ function foundation_featured_settings( $page_options ) {
308
 
309
  if ( $wptouch_pro->get_current_theme() == 'bauhaus' ) {
310
  $featured_enhanced_setting = array(
311
- wptouch_add_pro_setting(
312
  'list',
313
  'featured_style',
314
  __( 'Featured slider style', 'wptouch-pro' ),
@@ -317,7 +312,7 @@ function foundation_featured_settings( $page_options ) {
317
  '2.0',
318
  array(
319
  'enhanced' => __( 'Enhanced', 'wptouch-pro' ),
320
- 'normal' => __( 'Normal', 'wptouch-pro' )
321
  )
322
  )
323
  );
@@ -339,7 +334,7 @@ function foundation_featured_settings( $page_options ) {
339
  'step' => 1
340
  )
341
  ),
342
- wptouch_add_pro_setting(
343
  'checkbox',
344
  'featured_comments',
345
  __( 'Show # of comments', 'wptouch-pro' ),
4
  add_action( 'foundation_module_init_mobile', 'foundation_featured_init' );
5
  add_action( 'wptouch_admin_page_render_wptouch-admin-theme-settings', 'foundation_featured_settings' );
6
 
 
 
7
  global $foundation_featured_args;
8
  global $foundation_featured_posts;
9
 
42
  $args = foundation_featured_get_args();
43
 
44
  $slides = foundation_featured_get_slides();
45
+ $slide_count = 0;
46
  if ( $slides->post_count > 0 ) {
47
+ while ( $slides->have_posts() ) {//} && $slide_count < $args[ 'num' ] ) {
48
  $slides->the_post();
49
  $image = foundation_featured_has_image();
50
  if ( apply_filters( 'wptouch_has_post_thumbnail', $image ) ) {
83
 
84
  global $foundation_featured_posts;
85
 
 
 
 
 
86
  $post_array = array();
87
 
88
  foreach( $foundation_featured_posts as $post_id ) {
107
  'show_dots' => true, // might not be needed
108
  'before' => '',
109
  'after' => '',
110
+ 'max_search' => $max_posts * 1.5,
111
  'ignore_sticky_posts' => 1
112
  );
113
  // Parse defaults into arguments
127
  $new_posts = false;
128
  switch( $settings->featured_type ) {
129
  case 'tag':
130
+ $new_posts = new WP_Query( array( 'ignore_sticky_posts' => 1, 'posts_per_page' => $args[ 'max_search' ], 'tag' => $settings->featured_tag, 'meta_query' => array( array('key' => '_thumbnail_id') ) ) );
131
  break;
132
  case 'category':
133
+ $new_posts = new WP_Query( array( 'ignore_sticky_posts' => 1, 'posts_per_page' => $args[ 'max_search' ], 'category_name' => $settings->featured_category, 'meta_query' => array( array('key' => '_thumbnail_id') ) ) );
134
  break;
135
  case 'posts':
136
  if ( function_exists( 'wptouch_custom_posts_add_to_search' ) ) {
140
  }
141
  $post_ids = explode( ',', str_replace( ' ', '', $settings->featured_post_ids ) );
142
  if ( is_array( $post_ids ) && count( $post_ids ) ) {
143
+ $new_posts = new WP_Query( array( 'post__in' => $post_ids, 'posts_per_page' => $args[ 'max_search' ], 'post_type' => $post_types, 'orderby' => 'post__in' , 'meta_query' => array( array('key' => '_thumbnail_id') ) ) );
144
  }
145
  break;
146
  case 'post_type':
147
+ $new_posts = new WP_Query( array( 'post_type' => $settings->featured_post_type, 'posts_per_page' => $args[ 'max_search' ], 'meta_query' => array( array('key' => '_thumbnail_id') ) ) );
148
  break;
149
  case 'latest':
150
  default:
152
  }
153
 
154
  if ( !$new_posts ) {
155
+ $new_posts = new WP_Query( array( 'posts_per_page' => $args[ 'max_search' ], 'meta_query' => array( array( 'key' => '_thumbnail_id' ) ) ) );
156
  }
157
 
158
  return $new_posts;
245
 
246
  function foundation_featured_slider( $manual = false, $manual_html = false ) {
247
  global $foundation_featured_posts;
248
+ $settings = foundation_get_settings();
249
  $args = foundation_featured_get_args();
250
 
251
  if ( featured_should_show_slider() ) {
257
  $post_types = array( 'post', 'page' );
258
  }
259
 
260
+ $slides = new WP_Query( array( 'ignore_sticky_posts' => 1, 'post__in' => $foundation_featured_posts, 'post_type' => $post_types, 'posts_per_page' => $settings->featured_max_number_of_posts ) );
261
 
262
  if ( $slides->post_count > 0 ) {
263
  echo $args['before'];
303
 
304
  if ( $wptouch_pro->get_current_theme() == 'bauhaus' ) {
305
  $featured_enhanced_setting = array(
306
+ wptouch_add_setting(
307
  'list',
308
  'featured_style',
309
  __( 'Featured slider style', 'wptouch-pro' ),
312
  '2.0',
313
  array(
314
  'enhanced' => __( 'Enhanced', 'wptouch-pro' ),
315
+ 'streamlined' => __( 'Streamlined', 'wptouch-pro' )
316
  )
317
  )
318
  );
334
  'step' => 1
335
  )
336
  ),
337
+ wptouch_add_setting(
338
  'checkbox',
339
  'featured_comments',
340
  __( 'Show # of comments', 'wptouch-pro' ),
themes/foundation/modules/google-fonts/google-fonts.php CHANGED
@@ -3,6 +3,7 @@ add_action( 'init', 'foundation_google_fonts_enable' );
3
  add_action( 'foundation_module_init_mobile', 'foundation_google_fonts_enable', 5 );
4
  add_action( 'foundation_module_init_mobile', 'foundation_google_fonts_init' );
5
  add_action( 'wptouch_admin_page_render_wptouch-admin-theme-settings', 'foundation_admin_panel' );
 
6
 
7
  global $google_fonts_enabled;
8
 
@@ -85,6 +86,7 @@ function foundation_google_fonts_init() {
85
  }
86
 
87
  $selected_font_info = foundation_google_fonts_get_selected_info();
 
88
  if ( $selected_font_info ) {
89
  $family_string = '';
90
  $inline_style_data = '';
@@ -97,14 +99,9 @@ function foundation_google_fonts_init() {
97
  $selected_font_info = array_slice( $selected_font_info, 0, 2 );
98
  }
99
 
100
- foreach( $selected_font_info as $font_info ) {
101
- $font_string = htmlentities( $font_info->name );
102
- if ( isset( $font_info->variants ) && is_array( $font_info->variants ) ) {
103
- $font_string .= ':' . implode( ',', $font_info->variants );
104
- }
105
-
106
- $new_families[] = $font_string;
107
 
 
108
  $inline_style_data .= "." . $font_info->selector . "-font" . "{\n";
109
  $inline_style_data .= "\t font-family: '" . $font_info->name . "', " . $font_info->fallback . ";\n";
110
  $inline_style_data .= "}\n";
@@ -130,6 +127,22 @@ function foundation_google_fonts_init() {
130
  }
131
  }
132
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
133
  global $wptouch_google_fonts;
134
  $wptouch_google_fonts = array();
135
 
3
  add_action( 'foundation_module_init_mobile', 'foundation_google_fonts_enable', 5 );
4
  add_action( 'foundation_module_init_mobile', 'foundation_google_fonts_init' );
5
  add_action( 'wptouch_admin_page_render_wptouch-admin-theme-settings', 'foundation_admin_panel' );
6
+ add_filter( 'wptouch_amp_get_fonts', 'foundation_build_google_fonts' );
7
 
8
  global $google_fonts_enabled;
9
 
86
  }
87
 
88
  $selected_font_info = foundation_google_fonts_get_selected_info();
89
+
90
  if ( $selected_font_info ) {
91
  $family_string = '';
92
  $inline_style_data = '';
99
  $selected_font_info = array_slice( $selected_font_info, 0, 2 );
100
  }
101
 
102
+ $new_families = foundation_build_google_fonts();
 
 
 
 
 
 
103
 
104
+ foreach( $selected_font_info as $font_info ) {
105
  $inline_style_data .= "." . $font_info->selector . "-font" . "{\n";
106
  $inline_style_data .= "\t font-family: '" . $font_info->name . "', " . $font_info->fallback . ";\n";
107
  $inline_style_data .= "}\n";
127
  }
128
  }
129
 
130
+ function foundation_build_google_fonts( $fonts = array() ) {
131
+ $selected_font_info = foundation_google_fonts_get_selected_info();
132
+ if ( is_array( $selected_font_info ) ) {
133
+ foreach( $selected_font_info as $font_info ) {
134
+ $font_string = htmlentities( $font_info->name );
135
+ if ( isset( $font_info->variants ) && is_array( $font_info->variants ) ) {
136
+ $font_string .= ':' . implode( ',', $font_info->variants );
137
+ }
138
+
139
+ $fonts[ $font_info->selector ] = $font_string;
140
+ }
141
+ }
142
+
143
+ return $fonts;
144
+ }
145
+
146
  global $wptouch_google_fonts;
147
  $wptouch_google_fonts = array();
148
 
themes/foundation/modules/login/login.php CHANGED
@@ -1,72 +1,24 @@
1
  <?php
2
 
3
  // Actions
4
- add_action( 'wptouch_admin_page_render_wptouch-admin-theme-settings', 'foundation_login_settings' );
5
- add_action( 'foundation_module_init_mobile', 'foundation_login_init' );
6
- add_action( 'wptouch_post_footer', 'foundation_add_login_form' );
7
 
8
-
9
- function foundation_login_init() {
10
- // Load JS
11
- if ( wptouch_fdn_show_login() ) {
12
- wp_enqueue_script(
13
- 'foundation_login_jquery',
14
- foundation_get_base_module_url() . '/login/wptouch-login.js',
15
- array( 'jquery' ),
16
- md5( FOUNDATION_VERSION ),
17
- true
18
- );
19
- }
20
-
21
- $fdn_login_strings = array(
22
- 'username_text' => __( 'Account Username', 'wptouch-pro' ),
23
- 'password_text' => __( 'Account Password', 'wptouch-pro' )
24
- );
25
-
26
- wp_localize_script( 'foundation_login_jquery', 'wptouchFdnLogin', $fdn_login_strings );
27
- }
28
-
29
- function foundation_login_settings( $page_options ) {
30
- wptouch_add_page_section(
31
- FOUNDATION_PAGE_GENERAL,
32
- __( 'Login Form', 'wptouch-pro' ),
33
- 'login-options',
34
- array(
35
- wptouch_add_setting(
36
  'checkbox',
37
  'show_login_box',
38
- __( 'Allow Login', 'wptouch-pro' ),
39
  __( 'Will add login/out links', 'wptouch-pro' ),
40
  WPTOUCH_SETTING_BASIC,
41
  '2.0'
42
- ),
43
- wptouch_add_setting(
44
- 'checkbox',
45
- 'show_login_links',
46
- __( 'Include "Sign-up" and "Lost Password?" links', 'wptouch-pro' ),
47
- '',
48
- WPTOUCH_SETTING_BASIC,
49
- '2.0'
50
- )
51
 
52
- ),
53
- $page_options,
54
- FOUNDATION_SETTING_DOMAIN
55
- );
56
-
57
- return $page_options;
58
- }
59
-
60
- function foundation_add_login_form(){
61
- if ( wptouch_fdn_show_login() ) {
62
- $content = wptouch_capture_include_file( dirname( __FILE__ ) . '/login-html.php' );
63
- echo $content;
64
- }
65
  }
66
 
67
  // Can be used in themes (public)
68
  function wptouch_fdn_show_login(){
69
- $settings = foundation_get_settings();
70
  if ( $settings->show_login_box ) {
71
  return true;
72
  } else {
1
  <?php
2
 
3
  // Actions
4
+ add_filter( 'wptouch_foundation_menu_options', 'foundation_login_settings' );
 
 
5
 
6
+ function foundation_login_settings( $menu_settings ) {
7
+ $menu_settings[] = wptouch_add_setting(
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
8
  'checkbox',
9
  'show_login_box',
10
+ __( 'Show login in menu', 'wptouch-pro' ),
11
  __( 'Will add login/out links', 'wptouch-pro' ),
12
  WPTOUCH_SETTING_BASIC,
13
  '2.0'
14
+ );
 
 
 
 
 
 
 
 
15
 
16
+ return $menu_settings;
 
 
 
 
 
 
 
 
 
 
 
 
17
  }
18
 
19
  // Can be used in themes (public)
20
  function wptouch_fdn_show_login(){
21
+ $settings = wptouch_get_settings();
22
  if ( $settings->show_login_box ) {
23
  return true;
24
  } else {
themes/foundation/modules/owlcarousel/assets/owl.carousel.css CHANGED
@@ -1,43 +1,34 @@
1
- /*
2
  * Owl Carousel - Animate Plugin
3
  */
4
  .owl-carousel .animated {
5
  -webkit-animation-duration: 1000ms;
6
  animation-duration: 1000ms;
7
  -webkit-animation-fill-mode: both;
8
- animation-fill-mode: both;
9
- }
10
  .owl-carousel .owl-animated-in {
11
- z-index: 0;
12
- }
13
  .owl-carousel .owl-animated-out {
14
- z-index: 1;
15
- }
16
  .owl-carousel .fadeOut {
17
  -webkit-animation-name: fadeOut;
18
- animation-name: fadeOut;
19
- }
20
 
21
  @-webkit-keyframes fadeOut {
22
  0% {
23
- opacity: 1;
24
- }
25
 
26
  100% {
27
- opacity: 0;
28
- }
29
- }
30
  @keyframes fadeOut {
31
  0% {
32
- opacity: 1;
33
- }
34
 
35
  100% {
36
- opacity: 0;
37
- }
38
- }
39
 
40
- /*
41
  * Owl Carousel - Auto Height Plugin
42
  */
43
  .owl-height {
@@ -45,10 +36,9 @@
45
  -moz-transition: height 500ms ease-in-out;
46
  -ms-transition: height 500ms ease-in-out;
47
  -o-transition: height 500ms ease-in-out;
48
- transition: height 500ms ease-in-out;
49
- }
50
 
51
- /*
52
  * Core Owl Carousel CSS File
53
  */
54
  .owl-carousel {
@@ -57,93 +47,73 @@
57
  -webkit-tap-highlight-color: transparent;
58
  /* position relative and z-index fix webkit rendering fonts issue */
59
  position: relative;
60
- z-index: 1;
61
- }
62
- .owl-carousel .owl-stage {
63
- position: relative;
64
- -ms-touch-action: pan-Y;
65
- }
66
- .owl-carousel .owl-stage:after {
67
- content: ".";
68
- display: block;
69
- clear: both;
70
- visibility: hidden;
71
- line-height: 0;
72
- height: 0;
73
- }
74
- .owl-carousel .owl-stage-outer {
75
- position: relative;
76
- overflow: hidden;
77
- /* fix for flashing background */
78
- -webkit-transform: translate3d(0px, 0px, 0px);
79
- }
80
- .owl-carousel .owl-controls .owl-nav .owl-prev,
81
- .owl-carousel .owl-controls .owl-nav .owl-next,
82
- .owl-carousel .owl-controls .owl-dot {
83
- cursor: pointer;
84
- cursor: hand;
85
- -webkit-user-select: none;
86
- -khtml-user-select: none;
87
- -moz-user-select: none;
88
- -ms-user-select: none;
89
- user-select: none;
90
- }
91
- .owl-carousel.owl-loaded {
92
- display: block;
93
- }
94
- .owl-carousel.owl-loading {
95
- opacity: 0;
96
- display: block;
97
- }
98
- .owl-carousel.owl-hidden {
99
- opacity: 0;
100
- }
101
- .owl-carousel .owl-refresh .owl-item {
102
- display: none;
103
- }
104
- .owl-carousel .owl-item {
105
- position: relative;
106
- min-height: 1px;
107
- float: left;
108
- -webkit-backface-visibility: hidden;
109
- -webkit-tap-highlight-color: transparent;
110
- -webkit-touch-callout: none;
111
- -webkit-user-select: none;
112
- -moz-user-select: none;
113
- -ms-user-select: none;
114
- user-select: none;
115
- }
116
- .owl-carousel .owl-item img {
117
- display: block;
118
- width: 100%;
119
- -webkit-transform-style: preserve-3d;
120
- }
121
- .owl-carousel.owl-text-select-on .owl-item {
122
- -webkit-user-select: auto;
123
- -moz-user-select: auto;
124
- -ms-user-select: auto;
125
- user-select: auto;
126
- }
127
- .owl-carousel .owl-grab {
128
- cursor: move;
129
- cursor: -webkit-grab;
130
- cursor: -o-grab;
131
- cursor: -ms-grab;
132
- cursor: grab;
133
- }
134
- .owl-carousel.owl-rtl {
135
- direction: rtl;
136
- }
137
- .owl-carousel.owl-rtl .owl-item {
138
- float: right;
139
- }
140
 
141
  /* No Js */
142
  .no-js .owl-carousel {
143
- display: block;
144
- }
145
 
146
- /*
147
  * Owl Carousel - Lazy Load Plugin
148
  */
149
  .owl-carousel .owl-item .owl-lazy {
@@ -152,20 +122,17 @@
152
  -moz-transition: opacity 400ms ease;
153
  -ms-transition: opacity 400ms ease;
154
  -o-transition: opacity 400ms ease;
155
- transition: opacity 400ms ease;
156
- }
157
  .owl-carousel .owl-item img {
158
- transform-style: preserve-3d;
159
- }
160
 
161
- /*
162
  * Owl Carousel - Video Plugin
163
  */
164
  .owl-carousel .owl-video-wrapper {
165
  position: relative;
166
  height: 100%;
167
- background: #000;
168
- }
169
  .owl-carousel .owl-video-play-icon {
170
  position: absolute;
171
  height: 80px;
@@ -182,19 +149,15 @@
182
  -moz-transition: scale 100ms ease;
183
  -ms-transition: scale 100ms ease;
184
  -o-transition: scale 100ms ease;
185
- transition: scale 100ms ease;
186
- }
187
  .owl-carousel .owl-video-play-icon:hover {
188
  -webkit-transition: scale(1.3, 1.3);
189
  -moz-transition: scale(1.3, 1.3);
190
  -ms-transition: scale(1.3, 1.3);
191
  -o-transition: scale(1.3, 1.3);
192
- transition: scale(1.3, 1.3);
193
- }
194
- .owl-carousel .owl-video-playing .owl-video-tn,
195
- .owl-carousel .owl-video-playing .owl-video-play-icon {
196
- display: none;
197
- }
198
  .owl-carousel .owl-video-tn {
199
  opacity: 0;
200
  height: 100%;
@@ -208,60 +171,9 @@
208
  -moz-transition: opacity 400ms ease;
209
  -ms-transition: opacity 400ms ease;
210
  -o-transition: opacity 400ms ease;
211
- transition: opacity 400ms ease;
212
- }
213
  .owl-carousel .owl-video-frame {
214
  position: relative;
215
  z-index: 1;
216
- }
217
-
218
- .owl-theme .owl-controls {
219
- margin-top: 10px;
220
- text-align: center;
221
- -webkit-tap-highlight-color: transparent
222
- }
223
- .owl-theme .owl-controls .owl-nav [class*=owl-] {
224
- color: #fff;
225
- font-size: 14px;
226
- margin: 5px;
227
- padding: 4px 7px;
228
- background: #d6d6d6;
229
- display: inline-block;
230
- cursor: pointer;
231
- -webkit-border-radius: 3px;
232
- -moz-border-radius: 3px;
233
- border-radius: 3px
234
- }
235
- .owl-theme .owl-controls .owl-nav [class*=owl-]: hover {
236
- background: #869791;
237
- color: #fff;
238
- text-decoration: none
239
- }
240
- .owl-theme .owl-controls .owl-nav .disabled {
241
- opacity: .5;
242
- cursor: default
243
- }
244
- .owl-theme .owl-dots .owl-dot {
245
- display: inline-block;
246
- zoom: 1;
247
- *display: inline
248
- }
249
- .owl-theme .owl-dots .owl-dot span {
250
- width: 10px;
251
- height: 10px;
252
- margin: 5px 7px;
253
- background: #d6d6d6;
254
- display: block;
255
- -webkit-backface-visibility: visible;
256
- -webkit-transition: opacity 200ms ease;
257
- -moz-transition: opacity 200ms ease;
258
- -ms-transition: opacity 200ms ease;
259
- -o-transition: opacity 200ms ease;
260
- transition: opacity 200ms ease;
261
- -webkit-border-radius: 30px;
262
- -moz-border-radius: 30px;
263
- border-radius: 30px
264
- }
265
- .owl-theme .owl-dots .owl-dot.active span,.owl-theme .owl-dots .owl-dot: hover span {
266
- background: #869791
267
- }
1
+ /*
2
  * Owl Carousel - Animate Plugin
3
  */
4
  .owl-carousel .animated {
5
  -webkit-animation-duration: 1000ms;
6
  animation-duration: 1000ms;
7
  -webkit-animation-fill-mode: both;
8
+ animation-fill-mode: both; }
 
9
  .owl-carousel .owl-animated-in {
10
+ z-index: 0; }
 
11
  .owl-carousel .owl-animated-out {
12
+ z-index: 1; }
 
13
  .owl-carousel .fadeOut {
14
  -webkit-animation-name: fadeOut;
15
+ animation-name: fadeOut; }
 
16
 
17
  @-webkit-keyframes fadeOut {
18
  0% {
19
+ opacity: 1; }
 
20
 
21
  100% {
22
+ opacity: 0; } }
23
+
 
24
  @keyframes fadeOut {
25
  0% {
26
+ opacity: 1; }
 
27
 
28
  100% {
29
+ opacity: 0; } }
 
 
30
 
31
+ /*
32
  * Owl Carousel - Auto Height Plugin
33
  */
34
  .owl-height {
36
  -moz-transition: height 500ms ease-in-out;
37
  -ms-transition: height 500ms ease-in-out;
38
  -o-transition: height 500ms ease-in-out;
39
+ transition: height 500ms ease-in-out; }
 
40
 
41
+ /*
42
  * Core Owl Carousel CSS File
43
  */
44
  .owl-carousel {
47
  -webkit-tap-highlight-color: transparent;
48
  /* position relative and z-index fix webkit rendering fonts issue */
49
  position: relative;
50
+ z-index: 1; }
51
+ .owl-carousel .owl-stage {
52
+ position: relative;
53
+ -ms-touch-action: pan-Y; }
54
+ .owl-carousel .owl-stage:after {
55
+ content: ".";
56
+ display: block;
57
+ clear: both;
58
+ visibility: hidden;
59
+ line-height: 0;
60
+ height: 0; }
61
+ .owl-carousel .owl-stage-outer {
62
+ position: relative;
63
+ overflow: hidden;
64
+ /* fix for flashing background */
65
+ -webkit-transform: translate3d(0px, 0px, 0px); }
66
+ .owl-carousel .owl-item {
67
+ position: relative;
68
+ min-height: 1px;
69
+ float: left;
70
+ -webkit-backface-visibility: hidden;
71
+ -webkit-tap-highlight-color: transparent;
72
+ -webkit-touch-callout: none; }
73
+ .owl-carousel .owl-item img {
74
+ display: block;
75
+ width: 100%;
76
+ -webkit-transform-style: preserve-3d; }
77
+ .owl-carousel .owl-nav.disabled, .owl-carousel .owl-dots.disabled {
78
+ display: none; }
79
+ .owl-carousel .owl-nav .owl-prev, .owl-carousel .owl-nav .owl-next, .owl-carousel .owl-dot {
80
+ cursor: pointer;
81
+ cursor: hand;
82
+ -webkit-user-select: none;
83
+ -khtml-user-select: none;
84
+ -moz-user-select: none;
85
+ -ms-user-select: none;
86
+ user-select: none; }
87
+ .owl-carousel.owl-loaded {
88
+ display: block; }
89
+ .owl-carousel.owl-loading {
90
+ opacity: 0;
91
+ display: block; }
92
+ .owl-carousel.owl-hidden {
93
+ opacity: 0; }
94
+ .owl-carousel.owl-refresh .owl-item {
95
+ display: none; }
96
+ .owl-carousel.owl-drag .owl-item {
97
+ -webkit-user-select: none;
98
+ -moz-user-select: none;
99
+ -ms-user-select: none;
100
+ user-select: none; }
101
+ .owl-carousel.owl-grab {
102
+ cursor: move;
103
+ cursor: -webkit-grab;
104
+ cursor: -o-grab;
105
+ cursor: -ms-grab;
106
+ cursor: grab; }
107
+ .owl-carousel.owl-rtl {
108
+ direction: rtl; }
109
+ .owl-carousel.owl-rtl .owl-item {
110
+ float: right; }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
111
 
112
  /* No Js */
113
  .no-js .owl-carousel {
114
+ display: block; }
 
115
 
116
+ /*
117
  * Owl Carousel - Lazy Load Plugin
118
  */
119
  .owl-carousel .owl-item .owl-lazy {
122
  -moz-transition: opacity 400ms ease;
123
  -ms-transition: opacity 400ms ease;
124
  -o-transition: opacity 400ms ease;
125
+ transition: opacity 400ms ease; }
 
126
  .owl-carousel .owl-item img {
127
+ transform-style: preserve-3d; }
 
128
 
129
+ /*
130
  * Owl Carousel - Video Plugin
131
  */
132
  .owl-carousel .owl-video-wrapper {
133
  position: relative;
134
  height: 100%;
135
+ background: #000; }
 
136
  .owl-carousel .owl-video-play-icon {
137
  position: absolute;
138
  height: 80px;
149
  -moz-transition: scale 100ms ease;
150
  -ms-transition: scale 100ms ease;
151
  -o-transition: scale 100ms ease;
152
+ transition: scale 100ms ease; }
 
153
  .owl-carousel .owl-video-play-icon:hover {
154
  -webkit-transition: scale(1.3, 1.3);
155
  -moz-transition: scale(1.3, 1.3);
156
  -ms-transition: scale(1.3, 1.3);
157
  -o-transition: scale(1.3, 1.3);
158
+ transition: scale(1.3, 1.3); }
159
+ .owl-carousel .owl-video-playing .owl-video-tn, .owl-carousel .owl-video-playing .owl-video-play-icon {
160
+ display: none; }
 
 
 
161
  .owl-carousel .owl-video-tn {
162
  opacity: 0;
163
  height: 100%;
171
  -moz-transition: opacity 400ms ease;
172
  -ms-transition: opacity 400ms ease;
173
  -o-transition: opacity 400ms ease;
174
+ transition: opacity 400ms ease; }
 
175
  .owl-carousel .owl-video-frame {
176
  position: relative;
177
  z-index: 1;
178
+ height: 100%;
179
+ width: 100%; }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
themes/foundation/modules/owlcarousel/assets/owl.carousel.min.css ADDED
@@ -0,0 +1 @@
 
1
+ .owl-carousel .animated{-webkit-animation-duration:1000ms;animation-duration:1000ms;-webkit-animation-fill-mode:both;animation-fill-mode:both}.owl-carousel .owl-animated-in{z-index:0}.owl-carousel .owl-animated-out{z-index:1}.owl-carousel .fadeOut{-webkit-animation-name:fadeOut;animation-name:fadeOut}@-webkit-keyframes fadeOut{0%{opacity:1}100%{opacity:0}}@keyframes fadeOut{0%{opacity:1}100%{opacity:0}}.owl-height{-webkit-transition:height 500ms ease-in-out;-moz-transition:height 500ms ease-in-out;-ms-transition:height 500ms ease-in-out;-o-transition:height 500ms ease-in-out;transition:height 500ms ease-in-out}.owl-carousel{display:none;width:100%;-webkit-tap-highlight-color:transparent;position:relative;z-index:1}.owl-carousel .owl-stage{position:relative;-ms-touch-action:pan-Y}.owl-carousel .owl-stage:after{content:".";display:block;clear:both;visibility:hidden;line-height:0;height:0}.owl-carousel .owl-stage-outer{position:relative;overflow:hidden;-webkit-transform:translate3d(0px,0,0)}.owl-carousel .owl-item{position:relative;min-height:1px;float:left;-webkit-backface-visibility:hidden;-webkit-tap-highlight-color:transparent;-webkit-touch-callout:none}.owl-carousel .owl-item img{display:block;width:100%;-webkit-transform-style:preserve-3d}.owl-carousel .owl-dots.disabled,.owl-carousel .owl-nav.disabled{display:none}.owl-carousel .owl-dot,.owl-carousel .owl-nav .owl-next,.owl-carousel .owl-nav .owl-prev{cursor:pointer;cursor:hand;-webkit-user-select:none;-khtml-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.owl-carousel.owl-loaded{display:block}.owl-carousel.owl-loading{opacity:0;display:block}.owl-carousel.owl-hidden{opacity:0}.owl-carousel.owl-refresh .owl-item{display:none}.owl-carousel.owl-drag .owl-item{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.owl-carousel.owl-grab{cursor:move;cursor:-webkit-grab;cursor:-o-grab;cursor:-ms-grab;cursor:grab}.owl-carousel.owl-rtl{direction:rtl}.owl-carousel.owl-rtl .owl-item{float:right}.no-js .owl-carousel{display:block}.owl-carousel .owl-item .owl-lazy{opacity:0;-webkit-transition:opacity 400ms ease;-moz-transition:opacity 400ms ease;-ms-transition:opacity 400ms ease;-o-transition:opacity 400ms ease;transition:opacity 400ms ease}.owl-carousel .owl-item img{transform-style:preserve-3d}.owl-carousel .owl-video-wrapper{position:relative;height:100%;background:#000}.owl-carousel .owl-video-play-icon{position:absolute;height:80px;width:80px;left:50%;top:50%;margin-left:-40px;margin-top:-40px;background:url(owl.video.play.png) no-repeat;cursor:pointer;z-index:1;-webkit-backface-visibility:hidden;-webkit-transition:scale 100ms ease;-moz-transition:scale 100ms ease;-ms-transition:scale 100ms ease;-o-transition:scale 100ms ease;transition:scale 100ms ease}.owl-carousel .owl-video-play-icon:hover{-webkit-transition:scale(1.3,1.3);-moz-transition:scale(1.3,1.3);-ms-transition:scale(1.3,1.3);-o-transition:scale(1.3,1.3);transition:scale(1.3,1.3)}.owl-carousel .owl-video-playing .owl-video-play-icon,.owl-carousel .owl-video-playing .owl-video-tn{display:none}.owl-carousel .owl-video-tn{opacity:0;height:100%;background-position:center center;background-repeat:no-repeat;-webkit-background-size:contain;-moz-background-size:contain;-o-background-size:contain;background-size:contain;-webkit-transition:opacity 400ms ease;-moz-transition:opacity 400ms ease;-ms-transition:opacity 400ms ease;-o-transition:opacity 400ms ease;transition:opacity 400ms ease}.owl-carousel .owl-video-frame{position:relative;z-index:1;height:100%;width:100%}
themes/foundation/modules/owlcarousel/assets/owl.theme.default.css ADDED
@@ -0,0 +1,51 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ /*
2
+ * Default theme - Owl Carousel CSS File
3
+ */
4
+ .owl-theme .owl-nav {
5
+ margin-top: 10px;
6
+ text-align: center;
7
+ -webkit-tap-highlight-color: transparent; }
8
+ .owl-theme .owl-nav [class*='owl-'] {
9
+ color: #FFF;
10
+ font-size: 14px;
11
+ margin: 5px;
12
+ padding: 4px 7px;
13
+ background: #D6D6D6;
14
+ display: inline-block;
15
+ cursor: pointer;
16
+ -webkit-border-radius: 3px;
17
+ -moz-border-radius: 3px;
18
+ border-radius: 3px; }
19
+ .owl-theme .owl-nav [class*='owl-']:hover {
20
+ background: #869791;
21
+ color: #FFF;
22
+ text-decoration: none; }
23
+ .owl-theme .owl-nav .disabled {
24
+ opacity: 0.5;
25
+ cursor: default; }
26
+ .owl-theme .owl-nav.disabled + .owl-dots {
27
+ margin-top: 10px; }
28
+ .owl-theme .owl-dots {
29
+ text-align: center;
30
+ -webkit-tap-highlight-color: transparent; }
31
+ .owl-theme .owl-dots .owl-dot {
32
+ display: inline-block;
33
+ zoom: 1;
34
+ *display: inline; }
35
+ .owl-theme .owl-dots .owl-dot span {
36
+ width: 10px;
37
+ height: 10px;
38
+ margin: 5px 7px;
39
+ background: #D6D6D6;
40
+ display: block;
41
+ -webkit-backface-visibility: visible;
42
+ -webkit-transition: opacity 200ms ease;
43
+ -moz-transition: opacity 200ms ease;
44
+ -ms-transition: opacity 200ms ease;
45
+ -o-transition: opacity 200ms ease;
46
+ transition: opacity 200ms ease;
47
+ -webkit-border-radius: 30px;
48
+ -moz-border-radius: 30px;
49
+ border-radius: 30px; }
50
+ .owl-theme .owl-dots .owl-dot.active span, .owl-theme .owl-dots .owl-dot:hover span {
51
+ background: #869791; }
themes/foundation/modules/owlcarousel/assets/owl.theme.default.min.css ADDED
@@ -0,0 +1 @@
 
1
+ .owl-theme .owl-nav{margin-top:10px;text-align:center;-webkit-tap-highlight-color:transparent}.owl-theme .owl-nav [class*=owl-]{color:#FFF;font-size:14px;margin:5px;padding:4px 7px;background:#D6D6D6;display:inline-block;cursor:pointer;-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px}.owl-theme .owl-nav [class*=owl-]:hover{background:#869791;color:#FFF;text-decoration:none}.owl-theme .owl-nav .disabled{opacity:.5;cursor:default}.owl-theme .owl-nav.disabled+.owl-dots{margin-top:10px}.owl-theme .owl-dots{text-align:center;-webkit-tap-highlight-color:transparent}.owl-theme .owl-dots .owl-dot{display:inline-block;zoom:1;*display:inline}.owl-theme .owl-dots .owl-dot span{width:10px;height:10px;margin:5px 7px;background:#D6D6D6;display:block;-webkit-backface-visibility:visible;-webkit-transition:opacity 200ms ease;-moz-transition:opacity 200ms ease;-ms-transition:opacity 200ms ease;-o-transition:opacity 200ms ease;transition:opacity 200ms ease;-webkit-border-radius:30px;-moz-border-radius:30px;border-radius:30px}.owl-theme .owl-dots .owl-dot.active span,.owl-theme .owl-dots .owl-dot:hover span{background:#869791}
themes/foundation/modules/owlcarousel/owl.carousel.js CHANGED
@@ -1,6 +1,6 @@
1
  /**
2
  * Owl carousel
3
- * @version 2.0.0
4
  * @author Bartosz Wojciechowski
5
  * @license The MIT License (MIT)
6
  * @todo Lazy Load Icon
@@ -11,55 +11,6 @@
11
  */
12
  ;(function($, window, document, undefined) {
13
 
14
- var drag, state, e;
15
-
16
- /**
17
- * Template for status information about drag and touch events.
18
- * @private
19
- */
20
- drag = {
21
- start: 0,
22
- startX: 0,
23
- startY: 0,
24
- current: 0,
25
- currentX: 0,
26
- currentY: 0,
27
- offsetX: 0,
28
- offsetY: 0,
29
- distance: null,
30
- startTime: 0,
31
- endTime: 0,
32
- updatedX: 0,
33
- targetEl: null
34
- };
35
-
36
- /**
37
- * Template for some status informations.
38
- * @private
39
- */
40
- state = {
41
- isTouch: false,
42
- isScrolling: false,
43
- isSwiping: false,
44
- direction: false,
45
- inMotion: false
46
- };
47
-
48
- /**
49
- * Event functions references.
50
- * @private
51
- */
52
- e = {
53
- _onDragStart: null,
54
- _onDragMove: null,
55
- _onDragEnd: null,
56
- _transitionEnd: null,
57
- _resizer: null,
58
- _responsiveCall: null,
59
- _goToLoop: null,
60
- _checkVisibile: null
61
- };
62
-
63
  /**
64
  * Creates a carousel.
65
  * @class The Owl Carousel.
@@ -88,21 +39,10 @@
88
  this.$element = $(element);
89
 
90
  /**
91
- * Caches informations about drag and touch events.
92
- */
93
- this.drag = $.extend({}, drag);
94
-
95
- /**
96
- * Caches some status informations.
97
- * @protected
98
- */
99
- this.state = $.extend({}, state);
100
-
101
- /**
102
  * @protected
103
- * @todo Must be documented
104
  */
105
- this.e = $.extend({}, e);
106
 
107
  /**
108
  * References to the running plugins of this carousel.
@@ -166,6 +106,11 @@
166
  */
167
  this._mergers = [];
168
 
 
 
 
 
 
169
  /**
170
  * Invalidated parts within the update process.
171
  * @protected
@@ -178,12 +123,46 @@
178
  */
179
  this._pipe = [];
180
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
181
  $.each(Owl.Plugins, $.proxy(function(key, plugin) {
182
- this._plugins[key[0].toLowerCase() + key.slice(1)]
183
  = new plugin(this);
184
  }, this));
185
 
186
- $.each(Owl.Pipe, $.proxy(function(priority, worker) {
187
  this._pipe.push({
188
  'filter': worker.filter,
189
  'run': $.proxy(worker.run, this)
@@ -202,6 +181,7 @@
202
  items: 3,
203
  loop: false,
204
  center: false,
 
205
 
206
  mouseDrag: true,
207
  touchDrag: true,
@@ -225,7 +205,6 @@
225
  responsive: {},
226
  responsiveRefreshRate: 200,
227
  responsiveBaseElement: window,
228
- responsiveClass: false,
229
 
230
  fallbackEasing: 'swing',
231
 
@@ -235,12 +214,16 @@
235
  itemElement: 'div',
236
  stageElement: 'div',
237
 
238
- // Classes and Names
239
- themeClass: 'owl-theme',
240
- baseClass: 'owl-carousel',
 
 
 
241
  itemClass: 'owl-item',
242
- centerClass: 'center',
243
- activeClass: 'active'
 
244
  };
245
 
246
  /**
@@ -255,6 +238,17 @@
255
  Outer: 'outer'
256
  };
257
 
 
 
 
 
 
 
 
 
 
 
 
258
  /**
259
  * Contains all registered plugins.
260
  * @public
@@ -262,9 +256,14 @@
262
  Owl.Plugins = {};
263
 
264
  /**
265
- * Update pipe.
266
  */
267
- Owl.Pipe = [ {
 
 
 
 
 
268
  filter: [ 'width', 'items', 'settings' ],
269
  run: function(cache) {
270
  cache.current = this._items && this._items[this.relative(this._current)];
@@ -272,81 +271,134 @@
272
  }, {
273
  filter: [ 'items', 'settings' ],
274
  run: function() {
275
- var cached = this._clones,
276
- clones = this.$stage.children('.cloned');
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
277
 
278
- if (clones.length !== cached.length || (!this.settings.loop && cached.length > 0)) {
279
- this.$stage.children('.cloned').remove();
280
- this._clones = [];
281
  }
 
 
282
  }
283
  }, {
284
  filter: [ 'items', 'settings' ],
285
  run: function() {
286
- var i, n,
287
- clones = this._clones,
288
  items = this._items,
289
- delta = this.settings.loop ? clones.length - Math.max(this.settings.items * 2, 4) : 0;
290
-
291
- for (i = 0, n = Math.abs(delta / 2); i < n; i++) {
292
- if (delta > 0) {
293
- this.$stage.children().eq(items.length + clones.length - 1).remove();
294
- clones.pop();
295
- this.$stage.children().eq(0).remove();
296
- clones.pop();
297
- } else {
298
- clones.push(clones.length / 2);
299
- this.$stage.append(items[clones[clones.length - 1]].clone().addClass('cloned'));
300
- clones.push(items.length - 1 - (clones.length - 1) / 2);
301
- this.$stage.prepend(items[clones[clones.length - 1]].clone().addClass('cloned'));
302
- }
303
  }
 
 
 
 
 
304
  }
305
  }, {
306
  filter: [ 'width', 'items', 'settings' ],
307
  run: function() {
308
- var rtl = (this.settings.rtl ? 1 : -1),
309
- width = (this.width() / this.settings.items).toFixed(3),
310
- coordinate = 0, merge, i, n;
311
-
312
- this._coordinates = [];
313
- for (i = 0, n = this._clones.length + this._items.length; i < n; i++) {
314
- merge = this._mergers[this.relative(i)];
315
- merge = (this.settings.mergeFit && Math.min(merge, this.settings.items)) || merge;
316
- coordinate += (this.settings.autoWidth ? this._items[this.relative(i)].width() + this.settings.margin : width * merge) * rtl;
317
-
318
- this._coordinates.push(coordinate);
319
  }
 
 
320
  }
321
  }, {
322
  filter: [ 'width', 'items', 'settings' ],
323
  run: function() {
324
-
325
-
326
-
327
- var i, n, width = (this.width() / this.settings.items).toFixed(3), css = {
328
- 'width': Math.abs(this._coordinates[this._coordinates.length - 1]) + this.settings.stagePadding * 1,
329
- };
330
- css[this.settings.rtl ? 'padding-left' : 'padding-right'] = this.settings.stagePadding;
331
 
332
  this.$stage.css(css);
333
-
334
- css = { 'width': this.settings.autoWidth ? 'auto' : width - this.settings.margin };
335
- css[this.settings.rtl ? 'margin-left' : 'margin-right'] = this.settings.margin;
336
-
337
- if (!this.settings.autoWidth && $.grep(this._mergers, function(v) { return v > 1 }).length > 0) {
338
- for (i = 0, n = this._coordinates.length; i < n; i++) {
339
- css.width = Math.abs(this._coordinates[i]) - Math.abs(this._coordinates[i - 1] || 0) - this.settings.margin;
340
- this.$stage.children().eq(i).css(css);
 
 
 
 
341
  }
342
- } else {
343
- this.$stage.children().css(css);
 
344
  }
345
  }
 
 
 
 
 
346
  }, {
347
  filter: [ 'width', 'items', 'settings' ],
348
  run: function(cache) {
349
- cache.current && this.reset(this.$stage.children().index(cache.current));
 
 
350
  }
351
  }, {
352
  filter: [ 'position' ],
@@ -357,7 +409,7 @@
357
  filter: [ 'width', 'position', 'items', 'settings' ],
358
  run: function() {
359
  var rtl = this.settings.rtl ? 1 : -1,
360
- padding = this.settings.stagePadding * 1,
361
  begin = this.coordinates(this.current()) + padding,
362
  end = begin + this.width() * rtl,
363
  inner, outer, matches = [], i, n;
@@ -372,12 +424,12 @@
372
  }
373
  }
374
 
375
- this.$stage.children('.' + this.settings.activeClass).removeClass(this.settings.activeClass);
376
- this.$stage.children(':eq(' + matches.join('), :eq(') + ')').addClass(this.settings.activeClass);
377
 
378
  if (this.settings.center) {
379
- this.$stage.children('.' + this.settings.centerClass).removeClass(this.settings.centerClass);
380
- this.$stage.children().eq(this.current()).addClass(this.settings.centerClass);
381
  }
382
  }
383
  } ];
@@ -387,17 +439,12 @@
387
  * @protected
388
  */
389
  Owl.prototype.initialize = function() {
 
390
  this.trigger('initialize');
391
 
392
- this.$element
393
- .addClass(this.settings.baseClass)
394
- .addClass(this.settings.themeClass)
395
- .toggleClass('owl-rtl', this.settings.rtl);
396
-
397
- // check support
398
- this.browserSupport();
399
 
400
- if (this.settings.autoWidth && this.state.imagesLoaded !== true) {
401
  var imgs, nestedSelector, width;
402
  imgs = this.$element.find('img');
403
  nestedSelector = this.settings.nestedItemSelector ? '.' + this.settings.nestedItemSelector : undefined;
@@ -405,15 +452,14 @@
405
 
406
  if (imgs.length && width <= 0) {
407
  this.preloadAutoWidthImages(imgs);
408
- return false;
409
  }
410
  }
411
 
412
- this.$element.addClass('owl-loading');
413
 
414
  // create stage
415
- this.$stage = $('<' + this.settings.stageElement + ' class="owl-stage"/>')
416
- .wrap('<div class="owl-stage-outer">');
417
 
418
  // append stage
419
  this.$element.append(this.$stage.parent());
@@ -421,23 +467,23 @@
421
  // append content
422
  this.replace(this.$element.children().not(this.$stage.parent()));
423
 
424
- // set view width
425
- this._width = this.$element.width();
426
-
427
- // update view
428
- this.refresh();
429
-
430
- this.$element.removeClass('owl-loading').addClass('owl-loaded');
431
-
432
- // attach generic events
433
- this.eventsCall();
434
 
435
- // attach generic events
436
- this.internalEvents();
 
437
 
438
- // attach custom control events
439
- this.addTriggerableEvents();
440
 
 
441
  this.trigger('initialized');
442
  };
443
 
@@ -467,9 +513,9 @@
467
 
468
  // responsive class
469
  if (settings.responsiveClass) {
470
- this.$element.attr('class', function(i, c) {
471
- return c.replace(/\b owl-responsive-\S+/g, '');
472
- }).addClass('owl-responsive-' + match);
473
  }
474
  }
475
 
@@ -487,14 +533,6 @@
487
  * @protected
488
  */
489
  Owl.prototype.optionsLogic = function() {
490
- // Toggle Center class
491
- this.$element.toggleClass('owl-center', this.settings.center);
492
-
493
- // if items number is less than in body
494
- if (this.settings.loop && this._items.length < this.settings.items) {
495
- this.settings.loop = false;
496
- }
497
-
498
  if (this.settings.autoWidth) {
499
  this.settings.stagePadding = false;
500
  this.settings.merge = false;
@@ -512,7 +550,7 @@
512
 
513
  if (!event.data) {
514
  event.data = $('<' + this.settings.itemElement + '/>')
515
- .addClass(this.settings.itemClass).append(item)
516
  }
517
 
518
  this.trigger('prepared', { content: event.data });
@@ -538,6 +576,8 @@
538
  }
539
 
540
  this._invalidated = {};
 
 
541
  };
542
 
543
  /**
@@ -553,7 +593,7 @@
553
  case Owl.Width.Outer:
554
  return this._width;
555
  default:
556
- return this._width - this.settings.stagePadding * 1 + this.settings.margin;
557
  }
558
  };
559
 
@@ -562,66 +602,30 @@
562
  * @public
563
  */
564
  Owl.prototype.refresh = function() {
565
- if (this._items.length === 0) {
566
- return false;
567
- }
568
-
569
- var start = new Date().getTime();
570
-
571
  this.trigger('refresh');
572
 
573
  this.setup();
574
 
575
  this.optionsLogic();
576
 
577
- // hide and show methods helps here to set a proper widths,
578
- // this prevents scrollbar to be calculated in stage width
579
- this.$stage.addClass('owl-refresh');
580
 
581
  this.update();
582
 
583
- this.$stage.removeClass('owl-refresh');
584
-
585
- this.state.orientation = window.orientation;
586
-
587
- this.watchVisibility();
588
 
 
589
  this.trigger('refreshed');
590
  };
591
 
592
- /**
593
- * Save internal event references and add event based functions.
594
- * @protected
595
- */
596
- Owl.prototype.eventsCall = function() {
597
- // Save events references
598
- this.e._onDragStart = $.proxy(function(e) {
599
- this.onDragStart(e);
600
- }, this);
601
- this.e._onDragMove = $.proxy(function(e) {
602
- this.onDragMove(e);
603
- }, this);
604
- this.e._onDragEnd = $.proxy(function(e) {
605
- this.onDragEnd(e);
606
- }, this);
607
- this.e._onResize = $.proxy(function(e) {
608
- this.onResize(e);
609
- }, this);
610
- this.e._transitionEnd = $.proxy(function(e) {
611
- this.transitionEnd(e);
612
- }, this);
613
- this.e._preventClick = $.proxy(function(e) {
614
- this.preventClick(e);
615
- }, this);
616
- };
617
-
618
  /**
619
  * Checks window `resize` event.
620
  * @protected
621
  */
622
  Owl.prototype.onThrottledResize = function() {
623
  window.clearTimeout(this.resizeTimer);
624
- this.resizeTimer = window.setTimeout(this.e._onResize, this.settings.responsiveRefreshRate);
625
  };
626
 
627
  /**
@@ -637,310 +641,185 @@
637
  return false;
638
  }
639
 
640
- if (this.trigger('resize').isDefaultPrevented()) {
641
  return false;
642
  }
643
 
644
- this._width = this.$element.width();
 
 
 
 
 
645
 
646
  this.invalidate('width');
647
 
648
  this.refresh();
649
 
 
650
  this.trigger('resized');
651
  };
652
 
653
  /**
654
- * Checks for touch/mouse drag event type and add run event handlers.
655
- * @protected
656
- */
657
- Owl.prototype.eventsRouter = function(event) {
658
- var type = event.type;
659
-
660
- if (type === "mousedown" || type === "touchstart") {
661
- this.onDragStart(event);
662
- } else if (type === "mousemove" || type === "touchmove") {
663
- this.onDragMove(event);
664
- } else if (type === "mouseup" || type === "touchend") {
665
- this.onDragEnd(event);
666
- } else if (type === "touchcancel") {
667
- this.onDragEnd(event);
668
- }
669
- };
670
-
671
- /**
672
- * Checks for touch/mouse drag options and add necessery event handlers.
673
  * @protected
674
  */
675
- Owl.prototype.internalEvents = function() {
676
- var isTouch = isTouchSupport(),
677
- isTouchIE = isTouchSupportIE();
678
-
679
- if (this.settings.mouseDrag){
680
- this.$stage.on('mousedown', $.proxy(function(event) { this.eventsRouter(event) }, this));
681
- this.$stage.on('dragstart', function() { return false });
682
- this.$stage.get(0).onselectstart = function() { return false };
683
- } else {
684
- this.$element.addClass('owl-text-select-on');
685
  }
686
 
687
- if (this.settings.touchDrag && !isTouchIE){
688
- this.$stage.on('touchstart touchcancel', $.proxy(function(event) { this.eventsRouter(event) }, this));
689
  }
690
 
691
- // catch transitionEnd event
692
- if (this.transitionEndVendor) {
693
- this.on(this.$stage.get(0), this.transitionEndVendor, this.e._transitionEnd, false);
 
694
  }
695
 
696
- // responsive
697
- if (this.settings.responsive !== false) {
698
- this.on(window, 'resize', $.proxy(this.onThrottledResize, this));
699
  }
700
  };
701
 
702
  /**
703
- * Handles touchstart/mousedown event.
 
 
704
  * @protected
705
  * @param {Event} event - The event arguments.
706
  */
707
  Owl.prototype.onDragStart = function(event) {
708
- var ev, isTouchEvent, pageX, pageY, animatedPos;
709
 
710
- ev = event.originalEvent || event || window.event;
 
 
711
 
712
- // prevent right click
713
- if (ev.which === 3 || this.state.isTouch) {
714
- return false;
 
 
 
 
 
 
 
 
 
 
 
715
  }
716
 
717
- if (ev.type === 'mousedown') {
718
- this.$stage.addClass('owl-grab');
 
719
  }
720
 
721
- this.trigger('drag');
722
- this.drag.startTime = new Date().getTime();
723
  this.speed(0);
724
- this.state.isTouch = true;
725
- this.state.isScrolling = false;
726
- this.state.isSwiping = false;
727
- this.drag.distance = 0;
728
-
729
- pageX = getTouches(ev).x;
730
- pageY = getTouches(ev).y;
731
-
732
- // get stage position left
733
- this.drag.offsetX = this.$stage.position().left;
734
- this.drag.offsetY = this.$stage.position().top;
735
-
736
- if (this.settings.rtl) {
737
- this.drag.offsetX = this.$stage.position().left + this.$stage.width() - this.width()
738
- + this.settings.margin;
739
- }
740
-
741
- // catch position // ie to fix
742
- if (this.state.inMotion && this.support3d) {
743
- animatedPos = this.getTransformProperty();
744
- this.drag.offsetX = animatedPos;
745
- this.animate(animatedPos);
746
- this.state.inMotion = true;
747
- } else if (this.state.inMotion && !this.support3d) {
748
- this.state.inMotion = false;
749
- return false;
750
- }
751
 
752
- this.drag.startX = pageX - this.drag.offsetX;
753
- this.drag.startY = pageY - this.drag.offsetY;
 
 
 
754
 
755
- this.drag.start = pageX - this.drag.startX;
756
- this.drag.targetEl = ev.target || ev.srcElement;
757
- this.drag.updatedX = this.drag.start;
758
 
759
- // to do/check
760
- // prevent links and images dragging;
761
- if (this.drag.targetEl.tagName === "IMG" || this.drag.targetEl.tagName === "A") {
762
- this.drag.targetEl.draggable = false;
763
- }
 
 
 
 
 
764
 
765
- $(document).on('mousemove.owl.dragEvents mouseup.owl.dragEvents touchmove.owl.dragEvents touchend.owl.dragEvents', $.proxy(function(event) {this.eventsRouter(event)},this));
 
 
766
  };
767
 
768
  /**
769
- * Handles the touchmove/mousemove events.
770
- * @todo Simplify
771
  * @protected
772
  * @param {Event} event - The event arguments.
773
  */
774
  Owl.prototype.onDragMove = function(event) {
775
- var ev, isTouchEvent, pageX, pageY, minValue, maxValue, pull;
776
-
777
- if (!this.state.isTouch) {
778
- return;
779
- }
780
 
781
- if (this.state.isScrolling) {
782
  return;
783
  }
784
 
785
- ev = event.originalEvent || event || window.event;
786
-
787
- pageX = getTouches(ev).x;
788
- pageY = getTouches(ev).y;
789
-
790
- // Drag Direction
791
- this.drag.currentX = pageX - this.drag.startX;
792
- this.drag.currentY = pageY - this.drag.startY;
793
- this.drag.distance = this.drag.currentX - this.drag.offsetX;
794
 
795
- // Check move direction
796
- if (this.drag.distance < 0) {
797
- this.state.direction = this.settings.rtl ? 'right' : 'left';
798
- } else if (this.drag.distance > 0) {
799
- this.state.direction = this.settings.rtl ? 'left' : 'right';
800
- }
801
- // Loop
802
  if (this.settings.loop) {
803
- if (this.op(this.drag.currentX, '>', this.coordinates(this.minimum())) && this.state.direction === 'right') {
804
- this.drag.currentX -= (this.settings.center && this.coordinates(0)) - this.coordinates(this._items.length);
805
- } else if (this.op(this.drag.currentX, '<', this.coordinates(this.maximum())) && this.state.direction === 'left') {
806
- this.drag.currentX += (this.settings.center && this.coordinates(0)) - this.coordinates(this._items.length);
807
- }
808
  } else {
809
- // pull
810
- minValue = this.settings.rtl ? this.coordinates(this.maximum()) : this.coordinates(this.minimum());
811
- maxValue = this.settings.rtl ? this.coordinates(this.minimum()) : this.coordinates(this.maximum());
812
- pull = this.settings.pullDrag ? this.drag.distance / 5 : 0;
813
- this.drag.currentX = Math.max(Math.min(this.drag.currentX, minValue + pull), maxValue + pull);
814
- }
815
-
816
- // Lock browser if swiping horizontal
817
-
818
- if ((this.drag.distance > 8 || this.drag.distance < -8)) {
819
- if (ev.preventDefault !== undefined) {
820
- ev.preventDefault();
821
- } else {
822
- ev.returnValue = false;
823
- }
824
- this.state.isSwiping = true;
825
  }
826
 
827
- this.drag.updatedX = this.drag.currentX;
828
-
829
- // Lock Owl if scrolling
830
- if ((this.drag.currentY > 16 || this.drag.currentY < -16) && this.state.isSwiping === false) {
831
- this.state.isScrolling = true;
832
- this.drag.updatedX = this.drag.start;
833
- }
834
 
835
- this.animate(this.drag.updatedX);
836
  };
837
 
838
  /**
839
- * Handles the touchend/mouseup events.
 
 
840
  * @protected
 
841
  */
842
  Owl.prototype.onDragEnd = function(event) {
843
- var compareTimes, distanceAbs, closest;
844
-
845
- if (!this.state.isTouch) {
846
- return;
847
- }
848
-
849
- if (event.type === 'mouseup') {
850
- this.$stage.removeClass('owl-grab');
851
- }
852
-
853
- this.trigger('dragged');
854
-
855
- // prevent links and images dragging;
856
- this.drag.targetEl.removeAttribute("draggable");
857
 
858
- // remove drag event listeners
859
 
860
- this.state.isTouch = false;
861
- this.state.isScrolling = false;
862
- this.state.isSwiping = false;
863
 
864
- // to check
865
- if (this.drag.distance === 0 && this.state.inMotion !== true) {
866
- this.state.inMotion = false;
867
- return false;
868
- }
869
-
870
- // prevent clicks while scrolling
871
-
872
- this.drag.endTime = new Date().getTime();
873
- compareTimes = this.drag.endTime - this.drag.startTime;
874
- distanceAbs = Math.abs(this.drag.distance);
875
-
876
- // to test
877
- if (distanceAbs > 3 || compareTimes > 300) {
878
- this.removeClick(this.drag.targetEl);
879
- }
880
-
881
- closest = this.closest(this.drag.updatedX);
882
 
883
- this.speed(this.settings.dragEndSpeed || this.settings.smartSpeed);
884
- this.current(closest);
885
- this.invalidate('position');
886
- this.update();
887
 
888
- // if pullDrag is off then fire transitionEnd event manually when stick
889
- // to border
890
- if (!this.settings.pullDrag && this.drag.updatedX === this.coordinates(closest)) {
891
- this.transitionEnd();
892
  }
893
 
894
- this.drag.distance = 0;
895
-
896
- $(document).off('.owl.dragEvents');
897
- };
898
-
899
- /**
900
- * Attaches `preventClick` to disable link while swipping.
901
- * @protected
902
- * @param {HTMLElement} [target] - The target of the `click` event.
903
- */
904
- Owl.prototype.removeClick = function(target) {
905
- this.drag.targetEl = target;
906
- $(target).on('click.preventClick', this.e._preventClick);
907
- // to make sure click is removed:
908
- window.setTimeout(function() {
909
- $(target).off('click.preventClick');
910
- }, 300);
911
- };
912
-
913
- /**
914
- * Suppresses click event.
915
- * @protected
916
- * @param {Event} ev - The event arguments.
917
- */
918
- Owl.prototype.preventClick = function(ev) {
919
- if (ev.preventDefault) {
920
- ev.preventDefault();
921
- } else {
922
- ev.returnValue = false;
923
- }
924
- if (ev.stopPropagation) {
925
- ev.stopPropagation();
926
  }
927
- $(ev.target).off('click.preventClick');
928
- };
929
-
930
- /**
931
- * Catches stage position while animate (only CSS3).
932
- * @protected
933
- * @returns
934
- */
935
- Owl.prototype.getTransformProperty = function() {
936
- var transform, matrix3d;
937
-
938
- transform = window.getComputedStyle(this.$stage.get(0), null).getPropertyValue(this.vendorName + 'transform');
939
- // var transform = this.$stage.css(this.vendorName + 'transform')
940
- transform = transform.replace(/matrix(3d)?\(|\)/g, '').split(',');
941
- matrix3d = transform.length === 16;
942
 
943
- return matrix3d !== true ? transform[4] : transform[12];
 
944
  };
945
 
946
  /**
@@ -948,10 +827,14 @@
948
  * @todo Setting `freeDrag` makes `closest` not reusable. See #165.
949
  * @protected
950
  * @param {Number} coordinate - The coordinate in pixel.
 
951
  * @return {Number} - The absolute position of the closest item.
952
  */
953
- Owl.prototype.closest = function(coordinate) {
954
- var position = -1, pull = 30, width = this.width(), coordinates = this.coordinates();
 
 
 
955
 
956
  if (!this.settings.freeDrag) {
957
  // check closest item
@@ -960,7 +843,7 @@
960
  position = index;
961
  } else if (this.op(coordinate, '<', value)
962
  && this.op(coordinate, '>', coordinates[index + 1] || value - width)) {
963
- position = this.state.direction === 'left' ? index + 1 : index;
964
  }
965
  return position === -1;
966
  }, this));
@@ -980,33 +863,45 @@
980
 
981
  /**
982
  * Animates the stage.
 
983
  * @public
984
  * @param {Number} coordinate - The coordinate in pixels.
985
  */
986
  Owl.prototype.animate = function(coordinate) {
987
- this.trigger('translate');
988
- this.state.inMotion = this.speed() > 0;
 
 
 
 
 
 
989
 
990
- if (this.support3d) {
991
  this.$stage.css({
992
- transform: 'translate3d(' + coordinate + 'px' + ',0px, 0px)',
993
  transition: (this.speed() / 1000) + 's'
994
  });
995
- } else if (this.state.isTouch) {
 
 
 
 
996
  this.$stage.css({
997
  left: coordinate + 'px'
998
  });
999
- } else {
1000
- this.$stage.animate({
1001
- left: coordinate
1002
- }, this.speed() / 1000, this.settings.fallbackEasing, $.proxy(function() {
1003
- if (this.state.inMotion) {
1004
- this.transitionEnd();
1005
- }
1006
- }, this));
1007
  }
1008
  };
1009
 
 
 
 
 
 
 
 
 
 
1010
  /**
1011
  * Sets the absolute position of the current item.
1012
  * @public
@@ -1043,11 +938,16 @@
1043
 
1044
  /**
1045
  * Invalidates the given part of the update routine.
1046
- * @param {String} part - The part to invalidate.
 
1047
  */
1048
  Owl.prototype.invalidate = function(part) {
1049
- this._invalidated[part] = true;
1050
- }
 
 
 
 
1051
 
1052
  /**
1053
  * Resets the absolute position of the current item.
@@ -1072,88 +972,77 @@
1072
  };
1073
 
1074
  /**
1075
- * Normalizes an absolute or a relative position for an item.
1076
  * @public
1077
  * @param {Number} position - The absolute or relative position to normalize.
1078
  * @param {Boolean} [relative=false] - Whether the given position is relative or not.
1079
  * @returns {Number} - The normalized position.
1080
  */
1081
  Owl.prototype.normalize = function(position, relative) {
1082
- var n = (relative ? this._items.length : this._items.length + this._clones.length);
 
1083
 
1084
  if (!$.isNumeric(position) || n < 1) {
1085
- return undefined;
1086
- }
1087
-
1088
- if (this._clones.length) {
1089
- position = ((position % n) + n) % n;
1090
- } else {
1091
- position = Math.max(this.minimum(relative), Math.min(this.maximum(relative), position));
1092
  }
1093
 
1094
  return position;
1095
  };
1096
 
1097
  /**
1098
- * Converts an absolute position for an item into a relative position.
1099
  * @public
1100
  * @param {Number} position - The absolute position to convert.
1101
  * @returns {Number} - The converted position.
1102
  */
1103
  Owl.prototype.relative = function(position) {
1104
- position = this.normalize(position);
1105
- position = position - this._clones.length / 2;
1106
  return this.normalize(position, true);
1107
  };
1108
 
1109
  /**
1110
- * Gets the maximum position for an item.
1111
  * @public
1112
  * @param {Boolean} [relative=false] - Whether to return an absolute position or a relative position.
1113
  * @returns {Number}
1114
  */
1115
  Owl.prototype.maximum = function(relative) {
1116
- var maximum, width, i = 0, coordinate,
1117
- settings = this.settings;
1118
-
1119
- if (relative) {
1120
- return this._items.length - 1;
1121
- }
1122
 
1123
- if (!settings.loop && settings.center) {
1124
- maximum = this._items.length - 1;
1125
- } else if (!settings.loop && !settings.center) {
1126
- maximum = this._items.length - settings.items;
1127
- } else if (settings.loop || settings.center) {
1128
- maximum = this._items.length + settings.items;
1129
  } else if (settings.autoWidth || settings.merge) {
1130
- revert = settings.rtl ? 1 : -1;
1131
- width = this.$stage.width() - this.$element.width();
1132
- while (coordinate = this.coordinates(i)) {
1133
- if (coordinate * revert >= width) {
1134
- break;
1135
- }
1136
- maximum = ++i;
1137
  }
 
 
1138
  } else {
1139
- throw 'Can not detect maximum absolute position.'
 
 
 
 
1140
  }
1141
 
1142
- return maximum;
1143
  };
1144
 
1145
  /**
1146
- * Gets the minimum position for an item.
1147
  * @public
1148
  * @param {Boolean} [relative=false] - Whether to return an absolute position or a relative position.
1149
  * @returns {Number}
1150
  */
1151
  Owl.prototype.minimum = function(relative) {
1152
- if (relative) {
1153
- return 0;
1154
- }
1155
-
1156
- return this._clones.length / 2;
1157
  };
1158
 
1159
  /**
@@ -1263,30 +1152,38 @@
1263
  * @param {Number} [speed] - The time in milliseconds for the transition.
1264
  */
1265
  Owl.prototype.to = function(position, speed) {
 
 
 
 
 
 
 
 
1266
  if (this.settings.loop) {
1267
- var distance = position - this.relative(this.current()),
1268
- revert = this.current(),
1269
- before = this.current(),
1270
- after = this.current() + distance,
1271
- direction = before - after < 0 ? true : false,
1272
- items = this._clones.length + this._items.length;
1273
-
1274
- if (after < this.settings.items && direction === false) {
1275
- revert = before + this._items.length;
1276
- this.reset(revert);
1277
- } else if (after >= items - this.settings.items && direction === true) {
1278
- revert = before - this._items.length;
1279
- this.reset(revert);
1280
  }
1281
- window.clearTimeout(this.e._goToLoop);
1282
- this.e._goToLoop = window.setTimeout($.proxy(function() {
1283
- this.speed(this.duration(this.current(), revert + distance, speed));
1284
- this.current(revert + distance);
1285
- this.update();
1286
- }, this), 30);
 
 
 
 
 
 
1287
  } else {
1288
- this.speed(this.duration(this.current(), position, speed));
1289
- this.current(position);
 
 
 
 
 
1290
  this.update();
1291
  }
1292
  };
@@ -1316,7 +1213,7 @@
1316
  * @protected
1317
  * @param {Event} event - The event arguments.
1318
  */
1319
- Owl.prototype.transitionEnd = function(event) {
1320
 
1321
  // if css2 animation then event object is undefined
1322
  if (event !== undefined) {
@@ -1328,7 +1225,7 @@
1328
  }
1329
  }
1330
 
1331
- this.state.inMotion = false;
1332
  this.trigger('translated');
1333
  };
1334
 
@@ -1390,12 +1287,18 @@
1390
  * @param {Number} [position] - The relative position at which to insert the item otherwise the item will be added to the end.
1391
  */
1392
  Owl.prototype.add = function(content, position) {
 
 
1393
  position = position === undefined ? this._items.length : this.normalize(position, true);
 
1394
 
1395
  this.trigger('add', { content: content, position: position });
1396
 
 
 
1397
  if (this._items.length === 0 || position === this._items.length) {
1398
- this.$stage.append(content);
 
1399
  this._items.push(content);
1400
  this._mergers.push(content.find('[data-merge]').andSelf('[data-merge]').attr('data-merge') * 1 || 1);
1401
  } else {
@@ -1404,6 +1307,8 @@
1404
  this._mergers.splice(position, 0, content.find('[data-merge]').andSelf('[data-merge]').attr('data-merge') * 1 || 1);
1405
  }
1406
 
 
 
1407
  this.invalidate('items');
1408
 
1409
  this.trigger('added', { content: content, position: position });
@@ -1434,87 +1339,21 @@
1434
  };
1435
 
1436
  /**
1437
- * Adds triggerable events.
 
1438
  * @protected
1439
  */
1440
- Owl.prototype.addTriggerableEvents = function() {
1441
- var handler = $.proxy(function(callback, event) {
1442
- return $.proxy(function(e) {
1443
- if (e.relatedTarget !== this) {
1444
- this.suppress([ event ]);
1445
- callback.apply(this, [].slice.call(arguments, 1));
1446
- this.release([ event ]);
1447
- }
1448
- }, this);
1449
- }, this);
1450
-
1451
- $.each({
1452
- 'next': this.next,
1453
- 'prev': this.prev,
1454
- 'to': this.to,
1455
- 'destroy': this.destroy,
1456
- 'refresh': this.refresh,
1457
- 'replace': this.replace,
1458
- 'add': this.add,
1459
- 'remove': this.remove
1460
- }, $.proxy(function(event, callback) {
1461
- this.$element.on(event + '.owl.carousel', handler(callback, event + '.owl.carousel'));
1462
  }, this));
1463
-
1464
- };
1465
-
1466
- /**
1467
- * Watches the visibility of the carousel element.
1468
- * @protected
1469
- */
1470
- Owl.prototype.watchVisibility = function() {
1471
-
1472
- // test on zepto
1473
- if (!isElVisible(this.$element.get(0))) {
1474
- this.$element.addClass('owl-hidden');
1475
- window.clearInterval(this.e._checkVisibile);
1476
- this.e._checkVisibile = window.setInterval($.proxy(checkVisible, this), 500);
1477
- }
1478
-
1479
- function isElVisible(el) {
1480
- return el.offsetWidth > 0 && el.offsetHeight > 0;
1481
- }
1482
-
1483
- function checkVisible() {
1484
- if (isElVisible(this.$element.get(0))) {
1485
- this.$element.removeClass('owl-hidden');
1486
- this.refresh();
1487
- window.clearInterval(this.e._checkVisibile);
1488
- }
1489
- }
1490
- };
1491
-
1492
- /**
1493
- * Preloads images with auto width.
1494
- * @protected
1495
- * @todo Still to test
1496
- */
1497
- Owl.prototype.preloadAutoWidthImages = function(imgs) {
1498
- var loaded, that, $el, img;
1499
-
1500
- loaded = 0;
1501
- that = this;
1502
- imgs.each(function(i, el) {
1503
- $el = $(el);
1504
- img = new Image();
1505
-
1506
- img.onload = function() {
1507
- loaded++;
1508
- $el.attr('src', img.src);
1509
- $el.css('opacity', 1);
1510
- if (loaded >= imgs.length) {
1511
- that.state.imagesLoaded = true;
1512
- that.initialize();
1513
- }
1514
- };
1515
-
1516
- img.src = $el.attr('src') || $el.attr('data-src') || $el.attr('data-src-retina');
1517
- });
1518
  };
1519
 
1520
  /**
@@ -1523,39 +1362,34 @@
1523
  */
1524
  Owl.prototype.destroy = function() {
1525
 
1526
- if (this.$element.hasClass(this.settings.themeClass)) {
1527
- this.$element.removeClass(this.settings.themeClass);
1528
- }
1529
 
1530
  if (this.settings.responsive !== false) {
1531
- $(window).off('resize.owl.carousel');
1532
- }
1533
-
1534
- if (this.transitionEndVendor) {
1535
- this.off(this.$stage.get(0), this.transitionEndVendor, this.e._transitionEnd);
1536
  }
1537
 
1538
- for ( var i in this._plugins) {
1539
  this._plugins[i].destroy();
1540
  }
1541
 
1542
- if (this.settings.mouseDrag || this.settings.touchDrag) {
1543
- this.$stage.off('mousedown touchstart touchcancel');
1544
- $(document).off('.owl.dragEvents');
1545
- this.$stage.get(0).onselectstart = function() {};
1546
- this.$stage.off('dragstart', function() { return false });
1547
- }
1548
-
1549
- // remove event handlers in the ".owl.carousel" namespace
1550
- this.$element.off('.owl');
1551
-
1552
  this.$stage.children('.cloned').remove();
1553
- this.e = null;
1554
- this.$element.removeData('owlCarousel');
1555
 
 
1556
  this.$stage.children().contents().unwrap();
1557
  this.$stage.children().unwrap();
1558
- this.$stage.unwrap();
 
 
 
 
 
 
 
 
 
1559
  };
1560
 
1561
  /**
@@ -1614,14 +1448,17 @@
1614
  };
1615
 
1616
  /**
1617
- * Triggers an public event.
 
1618
  * @protected
1619
  * @param {String} name - The event name.
1620
  * @param {*} [data=null] - The event data.
1621
- * @param {String} [namespace=.owl.carousel] - The event namespace.
 
 
1622
  * @returns {Event} - The event arguments.
1623
  */
1624
- Owl.prototype.trigger = function(name, data, namespace) {
1625
  var status = {
1626
  item: { count: this._items.length, index: this.current() }
1627
  }, handler = $.camelCase(
@@ -1639,16 +1476,75 @@
1639
  }
1640
  });
1641
 
 
1642
  this.$element.trigger(event);
1643
 
1644
  if (this.settings && typeof this.settings[handler] === 'function') {
1645
- this.settings[handler].apply(this, event);
1646
  }
1647
  }
1648
 
1649
  return event;
1650
  };
1651
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1652
  /**
1653
  * Suppresses events.
1654
  * @protected
@@ -1658,7 +1554,7 @@
1658
  $.each(events, $.proxy(function(index, event) {
1659
  this._supress[event] = true;
1660
  }, this));
1661
- }
1662
 
1663
  /**
1664
  * Releases suppressed events.
@@ -1669,149 +1565,208 @@
1669
  $.each(events, $.proxy(function(index, event) {
1670
  delete this._supress[event];
1671
  }, this));
1672
- }
1673
 
1674
  /**
1675
- * Checks the availability of some browser features.
 
1676
  * @protected
 
 
1677
  */
1678
- Owl.prototype.browserSupport = function() {
1679
- this.support3d = isPerspective();
1680
 
1681
- if (this.support3d) {
1682
- this.transformVendor = isTransform();
1683
 
1684
- // take transitionend event name by detecting transition
1685
- var endVendors = [ 'transitionend', 'webkitTransitionEnd', 'transitionend', 'oTransitionEnd' ];
1686
- this.transitionEndVendor = endVendors[isTransition()];
1687
 
1688
- // take vendor name from transform name
1689
- this.vendorName = this.transformVendor.replace(/Transform/i, '');
1690
- this.vendorName = this.vendorName !== '' ? '-' + this.vendorName.toLowerCase() + '-' : '';
 
 
 
1691
  }
1692
 
1693
- this.state.orientation = window.orientation;
1694
  };
1695
 
1696
  /**
1697
- * Get touch/drag coordinats.
1698
- * @private
1699
- * @param {event} - mousedown/touchstart event
1700
- * @returns {object} - Contains X and Y of current mouse/touch position
1701
- */
 
 
 
 
 
 
 
 
1702
 
1703
- function getTouches(event) {
1704
- if (event.touches !== undefined) {
1705
- return {
1706
- x: event.touches[0].pageX,
1707
- y: event.touches[0].pageY
1708
- };
1709
- }
1710
 
1711
- if (event.touches === undefined) {
1712
- if (event.pageX !== undefined) {
1713
- return {
1714
- x: event.pageX,
1715
- y: event.pageY
1716
- };
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1717
  }
1718
 
1719
- if (event.pageX === undefined) {
1720
- return {
1721
- x: event.clientX,
1722
- y: event.clientY
1723
- };
1724
  }
1725
- }
1726
- }
1727
 
1728
  /**
1729
- * Checks for CSS support.
1730
- * @private
1731
- * @param {Array} array - The CSS properties to check for.
1732
- * @returns {Array} - Contains the supported CSS property name and its index or `false`.
1733
  */
1734
- function isStyleSupported(array) {
1735
- var p, s, fake = document.createElement('div'), list = array;
1736
- for (p in list) {
1737
- s = list[p];
1738
- if (typeof fake.style[s] !== 'undefined') {
1739
- fake = null;
1740
- return [ s, p ];
1741
- }
1742
- }
1743
- return [ false ];
1744
- }
1745
 
1746
- /**
1747
- * Checks for CSS transition support.
1748
- * @private
1749
- * @todo Realy bad design
1750
- * @returns {Number}
1751
- */
1752
- function isTransition() {
1753
- return isStyleSupported([ 'transition', 'WebkitTransition', 'MozTransition', 'OTransition' ])[1];
1754
- }
1755
 
1756
- /**
1757
- * Checks for CSS transform support.
1758
- * @private
1759
- * @returns {String} The supported property name or false.
1760
- */
1761
- function isTransform() {
1762
- return isStyleSupported([ 'transform', 'WebkitTransform', 'MozTransform', 'OTransform', 'msTransform' ])[0];
1763
- }
1764
 
1765
  /**
1766
- * Checks for CSS perspective support.
1767
- * @private
1768
- * @returns {String} The supported property name or false.
1769
  */
1770
- function isPerspective() {
1771
- return isStyleSupported([ 'perspective', 'webkitPerspective', 'MozPerspective', 'OPerspective', 'MsPerspective' ])[0];
1772
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1773
 
1774
  /**
1775
- * Checks wether touch is supported or not.
1776
- * @private
1777
- * @returns {Boolean}
1778
  */
1779
- function isTouchSupport() {
1780
- return 'ontouchstart' in window || !!(navigator.msMaxTouchPoints);
1781
- }
 
1782
 
1783
  /**
1784
- * Checks wether touch is supported or not for IE.
1785
- * @private
1786
- * @returns {Boolean}
1787
  */
1788
- function isTouchSupportIE() {
1789
- return window.navigator.msPointerEnabled;
1790
- }
 
 
 
 
 
1791
 
1792
  /**
1793
- * The jQuery Plugin for the Owl Carousel
1794
- * @public
1795
  */
1796
- $.fn.owlCarousel = function(options) {
1797
- return this.each(function() {
1798
- if (!$(this).data('owlCarousel')) {
1799
- $(this).data('owlCarousel', new Owl(this, options));
1800
- }
1801
- });
 
 
 
 
1802
  };
1803
 
1804
  /**
1805
- * The constructor for the jQuery Plugin
1806
- * @public
1807
  */
1808
- $.fn.owlCarousel.Constructor = Owl;
 
 
 
 
 
 
 
 
 
 
 
 
 
1809
 
1810
  })(window.Zepto || window.jQuery, window, document);
1811
 
1812
  /**
1813
  * Lazy Plugin
1814
- * @version 2.0.0
1815
  * @author Bartosz Wojciechowski
1816
  * @license The MIT License (MIT)
1817
  */
@@ -1863,7 +1818,8 @@
1863
 
1864
  while (i++ < n) {
1865
  this.load(clones / 2 + this._core.relative(position));
1866
- clones && $.each(this._core.clones(this._core.relative(position++)), load);
 
1867
  }
1868
  }
1869
  }, this)
@@ -1937,7 +1893,7 @@
1937
  for (property in Object.getOwnPropertyNames(this)) {
1938
  typeof this[property] != 'function' && (this[property] = null);
1939
  }
1940
- }
1941
 
1942
  $.fn.owlCarousel.Constructor.Plugins.Lazy = Lazy;
1943
 
@@ -1945,7 +1901,7 @@
1945
 
1946
  /**
1947
  * AutoHeight Plugin
1948
- * @version 2.0.0
1949
  * @author Bartosz Wojciechowski
1950
  * @license The MIT License (MIT)
1951
  */
@@ -1970,19 +1926,19 @@
1970
  * @type {Object}
1971
  */
1972
  this._handlers = {
1973
- 'initialized.owl.carousel': $.proxy(function() {
1974
- if (this._core.settings.autoHeight) {
1975
  this.update();
1976
  }
1977
  }, this),
1978
  'changed.owl.carousel': $.proxy(function(e) {
1979
- if (this._core.settings.autoHeight && e.property.name == 'position'){
1980
  this.update();
1981
  }
1982
  }, this),
1983
  'loaded.owl.lazy': $.proxy(function(e) {
1984
- if (this._core.settings.autoHeight && e.element.closest('.' + this._core.settings.itemClass)
1985
- === this._core.$stage.children().eq(this._core.current())) {
1986
  this.update();
1987
  }
1988
  }, this)
@@ -2008,8 +1964,20 @@
2008
  * Updates the view.
2009
  */
2010
  AutoHeight.prototype.update = function() {
 
 
 
 
 
 
 
 
 
 
 
 
2011
  this._core.$stage.parent()
2012
- .height(this._core.$stage.children().eq(this._core.current()).height())
2013
  .addClass(this._core.settings.autoHeightClass);
2014
  };
2015
 
@@ -2030,7 +1998,7 @@
2030
 
2031
  /**
2032
  * Video Plugin
2033
- * @version 2.0.0
2034
  * @author Bartosz Wojciechowski
2035
  * @license The MIT License (MIT)
2036
  */
@@ -2063,31 +2031,40 @@
2063
  */
2064
  this._playing = null;
2065
 
2066
- /**
2067
- * Whether this is in fullscreen or not.
2068
- * @protected
2069
- * @type {Boolean}
2070
- */
2071
- this._fullscreen = false;
2072
-
2073
  /**
2074
  * All event handlers.
 
2075
  * @protected
2076
  * @type {Object}
2077
  */
2078
  this._handlers = {
 
 
 
 
 
2079
  'resize.owl.carousel': $.proxy(function(e) {
2080
- if (this._core.settings.video && !this.isInFullScreen()) {
2081
  e.preventDefault();
2082
  }
2083
  }, this),
2084
- 'refresh.owl.carousel changed.owl.carousel': $.proxy(function(e) {
2085
- if (this._playing) {
 
 
 
 
 
2086
  this.stop();
2087
  }
2088
  }, this),
2089
  'prepared.owl.carousel': $.proxy(function(e) {
 
 
 
 
2090
  var $element = $(e.content).find('.owl-video');
 
2091
  if ($element.length) {
2092
  $element.css('display', 'none');
2093
  this.fetch($element, $(e.content));
@@ -2123,7 +2100,6 @@
2123
  * @param {jQuery} item - The item containing the video.
2124
  */
2125
  Video.prototype.fetch = function(target, item) {
2126
-
2127
  var type = target.attr('data-vimeo-id') ? 'vimeo' : 'youtube',
2128
  id = target.attr('data-vimeo-id') || target.attr('data-youtube-id'),
2129
  width = target.attr('data-width') || this._core.settings.videoWidth,
@@ -2165,7 +2141,6 @@
2165
  * @see `fetch`
2166
  */
2167
  Video.prototype.thumbnail = function(target, video) {
2168
-
2169
  var tnLink,
2170
  icon,
2171
  path,
@@ -2227,42 +2202,46 @@
2227
  this._playing.find('.owl-video-frame').remove();
2228
  this._playing.removeClass('owl-video-playing');
2229
  this._playing = null;
 
 
2230
  };
2231
 
2232
  /**
2233
  * Starts the current video.
2234
  * @public
2235
- * @param {Event} ev - The event arguments.
2236
  */
2237
- Video.prototype.play = function(ev) {
2238
- this._core.trigger('play', null, 'video');
2239
-
2240
- if (this._playing) {
2241
- this.stop();
2242
- }
2243
-
2244
- var target = $(ev.target || ev.srcElement),
2245
  item = target.closest('.' + this._core.settings.itemClass),
2246
  video = this._videos[item.attr('data-video')],
2247
  width = video.width || '100%',
2248
  height = video.height || this._core.$stage.height(),
2249
- html, wrap;
 
 
 
 
 
 
 
 
 
 
 
2250
 
2251
  if (video.type === 'youtube') {
2252
- html = '<iframe width="' + width + '" height="' + height + '" src="http://www.youtube.com/embed/'
2253
- + video.id + '?autoplay=1&v=' + video.id + '" frameborder="0" allowfullscreen></iframe>';
2254
  } else if (video.type === 'vimeo') {
2255
- html = '<iframe src="http://player.vimeo.com/video/' + video.id + '?autoplay=1" width="' + width
2256
- + '" height="' + height
2257
- + '" frameborder="0" webkitallowfullscreen mozallowfullscreen allowfullscreen></iframe>';
2258
  }
2259
 
2260
- item.addClass('owl-video-playing');
2261
- this._playing = item;
2262
 
2263
- wrap = $('<div style="height:' + height + 'px; width:' + width + 'px" class="owl-video-frame">'
2264
- + html + '</div>');
2265
- target.after(wrap);
2266
  };
2267
 
2268
  /**
@@ -2272,35 +2251,10 @@
2272
  * @returns {Boolean}
2273
  */
2274
  Video.prototype.isInFullScreen = function() {
 
 
2275
 
2276
- // if Vimeo Fullscreen mode
2277
- var element = document.fullscreenElement || document.mozFullScreenElement
2278
- || document.webkitFullscreenElement;
2279
-
2280
- if (element && $(element).parent().hasClass('owl-video-frame')) {
2281
- this._core.speed(0);
2282
- this._fullscreen = true;
2283
- }
2284
-
2285
- if (element && this._fullscreen && this._playing) {
2286
- return false;
2287
- }
2288
-
2289
- // comming back from fullscreen
2290
- if (this._fullscreen) {
2291
- this._fullscreen = false;
2292
- return false;
2293
- }
2294
-
2295
- // check full screen mode and window orientation
2296
- if (this._playing) {
2297
- if (this._core.state.orientation !== window.orientation) {
2298
- this._core.state.orientation = window.orientation;
2299
- return false;
2300
- }
2301
- }
2302
-
2303
- return true;
2304
  };
2305
 
2306
  /**
@@ -2325,7 +2279,7 @@
2325
 
2326
  /**
2327
  * Animate Plugin
2328
- * @version 2.0.0
2329
  * @author Bartosz Wojciechowski
2330
  * @license The MIT License (MIT)
2331
  */
@@ -2345,16 +2299,18 @@
2345
 
2346
  this.handlers = {
2347
  'change.owl.carousel': $.proxy(function(e) {
2348
- if (e.property.name == 'position') {
2349
  this.previous = this.core.current();
2350
  this.next = e.property.value;
2351
  }
2352
  }, this),
2353
  'drag.owl.carousel dragged.owl.carousel translated.owl.carousel': $.proxy(function(e) {
2354
- this.swapping = e.type == 'translated';
 
 
2355
  }, this),
2356
  'translate.owl.carousel': $.proxy(function(e) {
2357
- if (this.swapping && (this.core.options.animateOut || this.core.options.animateIn)) {
2358
  this.swap();
2359
  }
2360
  }, this)
@@ -2379,7 +2335,11 @@
2379
  */
2380
  Animate.prototype.swap = function() {
2381
 
2382
- if (this.core.settings.items !== 1 || !this.core.support3d) {
 
 
 
 
2383
  return;
2384
  }
2385
 
@@ -2398,16 +2358,16 @@
2398
 
2399
  if (outgoing) {
2400
  left = this.core.coordinates(this.previous) - this.core.coordinates(this.next);
2401
- previous.css( { 'left': left + 'px' } )
 
2402
  .addClass('animated owl-animated-out')
2403
- .addClass(outgoing)
2404
- .one('webkitAnimationEnd mozAnimationEnd MSAnimationEnd oanimationend animationend', clear);
2405
  }
2406
 
2407
  if (incoming) {
2408
- next.addClass('animated owl-animated-in')
2409
- .addClass(incoming)
2410
- .one('webkitAnimationEnd mozAnimationEnd MSAnimationEnd oanimationend animationend', clear);
2411
  }
2412
  };
2413
 
@@ -2416,8 +2376,8 @@
2416
  .removeClass('animated owl-animated-out owl-animated-in')
2417
  .removeClass(this.core.settings.animateIn)
2418
  .removeClass(this.core.settings.animateOut);
2419
- this.core.transitionEnd();
2420
- }
2421
 
2422
  /**
2423
  * Destroys the plugin.
@@ -2440,8 +2400,9 @@
2440
 
2441
  /**
2442
  * Autoplay Plugin
2443
- * @version 2.0.0
2444
  * @author Bartosz Wojciechowski
 
2445
  * @license The MIT License (MIT)
2446
  */
2447
  ;(function($, window, document, undefined) {
@@ -2451,33 +2412,73 @@
2451
  * @class The Autoplay Plugin
2452
  * @param {Owl} scope - The Owl Carousel
2453
  */
2454
- var Autoplay = function(scope) {
2455
- this.core = scope;
2456
- this.core.options = $.extend({}, Autoplay.Defaults, this.core.options);
 
 
 
 
2457
 
2458
- this.handlers = {
2459
- 'translated.owl.carousel refreshed.owl.carousel': $.proxy(function() {
2460
- this.autoplay();
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
2461
  }, this),
2462
  'play.owl.autoplay': $.proxy(function(e, t, s) {
2463
- this.play(t, s);
 
 
2464
  }, this),
2465
- 'stop.owl.autoplay': $.proxy(function() {
2466
- this.stop();
 
 
2467
  }, this),
2468
  'mouseover.owl.autoplay': $.proxy(function() {
2469
- if (this.core.settings.autoplayHoverPause) {
2470
  this.pause();
2471
  }
2472
  }, this),
2473
  'mouseleave.owl.autoplay': $.proxy(function() {
2474
- if (this.core.settings.autoplayHoverPause) {
2475
- this.autoplay();
2476
  }
2477
  }, this)
2478
  };
2479
 
2480
- this.core.$element.on(this.handlers);
 
 
 
 
2481
  };
2482
 
2483
  /**
@@ -2491,47 +2492,27 @@
2491
  autoplaySpeed: false
2492
  };
2493
 
2494
- /**
2495
- * @protected
2496
- * @todo Must be documented.
2497
- */
2498
- Autoplay.prototype.autoplay = function() {
2499
- if (this.core.settings.autoplay && !this.core.state.videoPlay) {
2500
- window.clearInterval(this.interval);
2501
-
2502
- this.interval = window.setInterval($.proxy(function() {
2503
- this.play();
2504
- }, this), this.core.settings.autoplayTimeout);
2505
- } else {
2506
- window.clearInterval(this.interval);
2507
- }
2508
- };
2509
-
2510
  /**
2511
  * Starts the autoplay.
2512
  * @public
2513
- * @param {Number} [timeout] - ...
2514
- * @param {Number} [speed] - ...
2515
- * @returns {Boolean|undefined} - ...
2516
- * @todo Must be documented.
2517
  */
2518
  Autoplay.prototype.play = function(timeout, speed) {
2519
- // if tab is inactive - doesnt work in <IE10
2520
- if (document.hidden === true) {
2521
- return;
2522
- }
2523
 
2524
- if (this.core.state.isTouch || this.core.state.isScrolling
2525
- || this.core.state.isSwiping || this.core.state.inMotion) {
2526
  return;
2527
  }
2528
 
2529
- if (this.core.settings.autoplay === false) {
2530
- window.clearInterval(this.interval);
2531
- return;
2532
- }
2533
 
2534
- this.core.next(this.core.settings.autoplaySpeed);
 
 
 
 
 
2535
  };
2536
 
2537
  /**
@@ -2539,15 +2520,24 @@
2539
  * @public
2540
  */
2541
  Autoplay.prototype.stop = function() {
2542
- window.clearInterval(this.interval);
 
 
 
 
 
2543
  };
2544
 
2545
  /**
2546
- * Pauses the autoplay.
2547
  * @public
2548
  */
2549
  Autoplay.prototype.pause = function() {
2550
- window.clearInterval(this.interval);
 
 
 
 
2551
  };
2552
 
2553
  /**
@@ -2556,10 +2546,10 @@
2556
  Autoplay.prototype.destroy = function() {
2557
  var handler, property;
2558
 
2559
- window.clearInterval(this.interval);
2560
 
2561
- for (handler in this.handlers) {
2562
- this.core.$element.off(handler, this.handlers[handler]);
2563
  }
2564
  for (property in Object.getOwnPropertyNames(this)) {
2565
  typeof this[property] != 'function' && (this[property] = null);
@@ -2572,7 +2562,7 @@
2572
 
2573
  /**
2574
  * Navigation Plugin
2575
- * @version 2.0.0
2576
  * @author Artus Kolanowski
2577
  * @license The MIT License (MIT)
2578
  */
@@ -2644,46 +2634,43 @@
2644
  */
2645
  this._handlers = {
2646
  'prepared.owl.carousel': $.proxy(function(e) {
2647
- if (this._core.settings.dotsData) {
2648
- this._templates.push($(e.content).find('[data-dot]').andSelf('[data-dot]').attr('data-dot'));
 
2649
  }
2650
  }, this),
2651
- 'add.owl.carousel': $.proxy(function(e) {
2652
- if (this._core.settings.dotsData) {
2653
- this._templates.splice(e.position, 0, $(e.content).find('[data-dot]').andSelf('[data-dot]').attr('data-dot'));
2654
  }
2655
  }, this),
2656
- 'remove.owl.carousel prepared.owl.carousel': $.proxy(function(e) {
2657
- if (this._core.settings.dotsData) {
2658
  this._templates.splice(e.position, 1);
2659
  }
2660
  }, this),
2661
- 'change.owl.carousel': $.proxy(function(e) {
2662
- if (e.property.name == 'position') {
2663
- if (!this._core.state.revert && !this._core.settings.loop && this._core.settings.navRewind) {
2664
- var current = this._core.current(),
2665
- maximum = this._core.maximum(),
2666
- minimum = this._core.minimum();
2667
- e.data = e.property.value > maximum
2668
- ? current >= maximum ? minimum : maximum
2669
- : e.property.value < minimum ? maximum : e.property.value;
2670
- }
2671
- }
2672
- }, this),
2673
  'changed.owl.carousel': $.proxy(function(e) {
2674
- if (e.property.name == 'position') {
2675
  this.draw();
2676
  }
2677
  }, this),
2678
- 'refreshed.owl.carousel': $.proxy(function() {
2679
- if (!this._initialized) {
 
2680
  this.initialize();
 
 
2681
  this._initialized = true;
 
 
 
 
 
 
 
 
 
2682
  }
2683
- this._core.trigger('refresh', null, 'navigation');
2684
- this.update();
2685
- this.draw();
2686
- this._core.trigger('refreshed', null, 'navigation');
2687
  }, this)
2688
  };
2689
 
@@ -2692,7 +2679,7 @@
2692
 
2693
  // register event handlers
2694
  this.$element.on(this._handlers);
2695
- }
2696
 
2697
  /**
2698
  * Default options.
@@ -2701,7 +2688,6 @@
2701
  */
2702
  Navigation.Defaults = {
2703
  nav: false,
2704
- navRewind: true,
2705
  navText: [ 'prev', 'next' ],
2706
  navSpeed: false,
2707
  navElement: 'div',
@@ -2713,77 +2699,63 @@
2713
  dotsClass: 'owl-dots',
2714
  dots: true,
2715
  dotsEach: false,
2716
- dotData: false,
2717
  dotsSpeed: false,
2718
- dotsContainer: false,
2719
- controlsClass: 'owl-controls'
2720
- }
2721
 
2722
  /**
2723
  * Initializes the layout of the plugin and extends the carousel.
2724
  * @protected
2725
  */
2726
  Navigation.prototype.initialize = function() {
2727
- var $container, override,
2728
- options = this._core.settings;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
2729
 
2730
- // create the indicator template
2731
- if (!options.dotsData) {
2732
  this._templates = [ $('<div>')
2733
- .addClass(options.dotClass)
2734
  .append($('<span>'))
2735
  .prop('outerHTML') ];
2736
  }
2737
 
2738
- // create controls container if needed
2739
- if (!options.navContainer || !options.dotsContainer) {
2740
- this._controls.$container = $('<div>')
2741
- .addClass(options.controlsClass)
2742
- .appendTo(this.$element);
2743
- }
2744
-
2745
- // create DOM structure for absolute navigation
2746
- this._controls.$indicators = options.dotsContainer ? $(options.dotsContainer)
2747
- : $('<div>').hide().addClass(options.dotsClass).appendTo(this._controls.$container);
2748
 
2749
- this._controls.$indicators.on('click', 'div', $.proxy(function(e) {
2750
- var index = $(e.target).parent().is(this._controls.$indicators)
2751
  ? $(e.target).index() : $(e.target).parent().index();
2752
 
2753
  e.preventDefault();
2754
 
2755
- this.to(index, options.dotsSpeed);
2756
  }, this));
2757
 
2758
- // create DOM structure for relative navigation
2759
- $container = options.navContainer ? $(options.navContainer)
2760
- : $('<div>').addClass(options.navContainerClass).prependTo(this._controls.$container);
2761
-
2762
- this._controls.$next = $('<' + options.navElement + '>');
2763
- this._controls.$previous = this._controls.$next.clone();
2764
-
2765
- this._controls.$previous
2766
- .addClass(options.navClass[0])
2767
- .html(options.navText[0])
2768
- .hide()
2769
- .prependTo($container)
2770
- .on('click', $.proxy(function(e) {
2771
- this.prev(options.navSpeed);
2772
- }, this));
2773
- this._controls.$next
2774
- .addClass(options.navClass[1])
2775
- .html(options.navText[1])
2776
- .hide()
2777
- .appendTo($container)
2778
- .on('click', $.proxy(function(e) {
2779
- this.next(options.navSpeed);
2780
- }, this));
2781
-
2782
  // override public methods of the carousel
2783
  for (override in this._overrides) {
2784
  this._core[override] = $.proxy(this[override], this);
2785
  }
2786
- }
2787
 
2788
  /**
2789
  * Destroys the plugin.
@@ -2804,7 +2776,7 @@
2804
  for (property in Object.getOwnPropertyNames(this)) {
2805
  typeof this[property] != 'function' && (this[property] = null);
2806
  }
2807
- }
2808
 
2809
  /**
2810
  * Updates the internal state.
@@ -2812,72 +2784,72 @@
2812
  */
2813
  Navigation.prototype.update = function() {
2814
  var i, j, k,
2815
- options = this._core.settings,
2816
  lower = this._core.clones().length / 2,
2817
  upper = lower + this._core.items().length,
2818
- size = options.center || options.autoWidth || options.dotData
2819
- ? 1 : options.dotsEach || options.items;
 
 
2820
 
2821
- if (options.slideBy !== 'page') {
2822
- options.slideBy = Math.min(options.slideBy, options.items);
2823
  }
2824
 
2825
- if (options.dots || options.slideBy == 'page') {
2826
  this._pages = [];
2827
 
2828
  for (i = lower, j = 0, k = 0; i < upper; i++) {
2829
  if (j >= size || j === 0) {
2830
  this._pages.push({
2831
- start: i - lower,
2832
  end: i - lower + size - 1
2833
  });
 
 
 
2834
  j = 0, ++k;
2835
  }
2836
  j += this._core.mergers(this._core.relative(i));
2837
  }
2838
  }
2839
- }
2840
 
2841
  /**
2842
  * Draws the user interface.
2843
- * @todo The option `dotData` wont work.
2844
  * @protected
2845
  */
2846
  Navigation.prototype.draw = function() {
2847
- var difference, i, html = '',
2848
- options = this._core.settings,
2849
- $items = this._core.$stage.children(),
2850
- index = this._core.relative(this._core.current());
 
 
 
2851
 
2852
- if (options.nav && !options.loop && !options.navRewind) {
2853
- this._controls.$previous.toggleClass('disabled', index <= 0);
2854
- this._controls.$next.toggleClass('disabled', index >= this._core.maximum());
2855
  }
2856
 
2857
- this._controls.$previous.toggle(options.nav);
2858
- this._controls.$next.toggle(options.nav);
2859
 
2860
- if (options.dots) {
2861
- difference = this._pages.length - this._controls.$indicators.children().length;
2862
 
2863
- if (options.dotData && difference !== 0) {
2864
- for (i = 0; i < this._controls.$indicators.children().length; i++) {
2865
- html += this._templates[this._core.relative(i)];
2866
- }
2867
- this._controls.$indicators.html(html);
2868
  } else if (difference > 0) {
2869
- html = new Array(difference + 1).join(this._templates[0]);
2870
- this._controls.$indicators.append(html);
2871
  } else if (difference < 0) {
2872
- this._controls.$indicators.children().slice(difference).remove();
2873
  }
2874
 
2875
- this._controls.$indicators.find('.active').removeClass('active');
2876
- this._controls.$indicators.children().eq($.inArray(this.current(), this._pages)).addClass('active');
2877
  }
2878
-
2879
- this._controls.$indicators.toggle(options.dots);
2880
- }
2881
 
2882
  /**
2883
  * Extends event data.
@@ -2890,10 +2862,10 @@
2890
  event.page = {
2891
  index: $.inArray(this.current(), this._pages),
2892
  count: this._pages.length,
2893
- size: settings && (settings.center || settings.autoWidth || settings.dotData
2894
  ? 1 : settings.dotsEach || settings.items)
2895
  };
2896
- }
2897
 
2898
  /**
2899
  * Gets the current page position of the carousel.
@@ -2901,11 +2873,11 @@
2901
  * @returns {Number}
2902
  */
2903
  Navigation.prototype.current = function() {
2904
- var index = this._core.relative(this._core.current());
2905
- return $.grep(this._pages, function(o) {
2906
- return o.start <= index && o.end >= index;
2907
- }).pop();
2908
- }
2909
 
2910
  /**
2911
  * Gets the current succesor/predecessor position.
@@ -2914,9 +2886,9 @@
2914
  */
2915
  Navigation.prototype.getPosition = function(successor) {
2916
  var position, length,
2917
- options = this._core.settings;
2918
 
2919
- if (options.slideBy == 'page') {
2920
  position = $.inArray(this.current(), this._pages);
2921
  length = this._pages.length;
2922
  successor ? ++position : --position;
@@ -2924,10 +2896,11 @@
2924
  } else {
2925
  position = this._core.relative(this._core.current());
2926
  length = this._core.items().length;
2927
- successor ? position += options.slideBy : position -= options.slideBy;
2928
  }
 
2929
  return position;
2930
- }
2931
 
2932
  /**
2933
  * Slides to the next item or page.
@@ -2936,7 +2909,7 @@
2936
  */
2937
  Navigation.prototype.next = function(speed) {
2938
  $.proxy(this._overrides.to, this._core)(this.getPosition(true), speed);
2939
- }
2940
 
2941
  /**
2942
  * Slides to the previous item or page.
@@ -2945,7 +2918,7 @@
2945
  */
2946
  Navigation.prototype.prev = function(speed) {
2947
  $.proxy(this._overrides.to, this._core)(this.getPosition(false), speed);
2948
- }
2949
 
2950
  /**
2951
  * Slides to the specified item or page.
@@ -2963,7 +2936,7 @@
2963
  } else {
2964
  $.proxy(this._overrides.to, this._core)(position, speed);
2965
  }
2966
- }
2967
 
2968
  $.fn.owlCarousel.Constructor.Plugins.Navigation = Navigation;
2969
 
@@ -2971,7 +2944,7 @@
2971
 
2972
  /**
2973
  * Hash Plugin
2974
- * @version 2.0.0
2975
  * @author Artus Kolanowski
2976
  * @license The MIT License (MIT)
2977
  */
@@ -2992,7 +2965,7 @@
2992
  this._core = carousel;
2993
 
2994
  /**
2995
- * Hash table for the hashes.
2996
  * @protected
2997
  * @type {Object}
2998
  */
@@ -3010,14 +2983,35 @@
3010
  * @type {Object}
3011
  */
3012
  this._handlers = {
3013
- 'initialized.owl.carousel': $.proxy(function() {
3014
- if (this._core.settings.startPosition == 'URLHash') {
3015
  $(window).trigger('hashchange.owl.navigation');
3016
  }
3017
  }, this),
3018
  'prepared.owl.carousel': $.proxy(function(e) {
3019
- var hash = $(e.content).find('[data-hash]').andSelf('[data-hash]').attr('data-hash');
3020
- this._hashes[hash] = e.content;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
3021
  }, this)
3022
  };
3023
 
@@ -3028,18 +3022,18 @@
3028
  this.$element.on(this._handlers);
3029
 
3030
  // register event listener for hash navigation
3031
- $(window).on('hashchange.owl.navigation', $.proxy(function() {
3032
  var hash = window.location.hash.substring(1),
3033
  items = this._core.$stage.children(),
3034
- position = this._hashes[hash] && items.index(this._hashes[hash]) || 0;
3035
 
3036
- if (!hash) {
3037
- return false;
3038
  }
3039
 
3040
- this._core.to(position, false, true);
3041
  }, this));
3042
- }
3043
 
3044
  /**
3045
  * Default options.
@@ -3047,7 +3041,7 @@
3047
  */
3048
  Hash.Defaults = {
3049
  URLhashListener: false
3050
- }
3051
 
3052
  /**
3053
  * Destroys the plugin.
@@ -3064,8 +3058,91 @@
3064
  for (property in Object.getOwnPropertyNames(this)) {
3065
  typeof this[property] != 'function' && (this[property] = null);
3066
  }
3067
- }
3068
 
3069
  $.fn.owlCarousel.Constructor.Plugins.Hash = Hash;
3070
 
3071
  })(window.Zepto || window.jQuery, window, document);
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
  /**
2
  * Owl carousel
3
+ * @version 2.0.0-beta.3
4
  * @author Bartosz Wojciechowski
5
  * @license The MIT License (MIT)
6
  * @todo Lazy Load Icon
11
  */
12
  ;(function($, window, document, undefined) {
13
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
14
  /**
15
  * Creates a carousel.
16
  * @class The Owl Carousel.
39
  this.$element = $(element);
40
 
41
  /**
42
+ * Proxied event handlers.
 
 
 
 
 
 
 
 
 
 
43
  * @protected
 
44
  */
45
+ this._handlers = {};
46
 
47
  /**
48
  * References to the running plugins of this carousel.
106
  */
107
  this._mergers = [];
108
 
109
+ /**
110
+ * Widths of all items.
111
+ */
112
+ this._widths = [];
113
+
114
  /**
115
  * Invalidated parts within the update process.
116
  * @protected
123
  */
124
  this._pipe = [];
125
 
126
+ /**
127
+ * Current state information for the drag operation.
128
+ * @todo #261
129
+ * @protected
130
+ */
131
+ this._drag = {
132
+ time: null,
133
+ target: null,
134
+ pointer: null,
135
+ stage: {
136
+ start: null,
137
+ current: null
138
+ },
139
+ direction: null
140
+ };
141
+
142
+ /**
143
+ * Current state information and their tags.
144
+ * @type {Object}
145
+ * @protected
146
+ */
147
+ this._states = {
148
+ current: {},
149
+ tags: {
150
+ 'initializing': [ 'busy' ],
151
+ 'animating': [ 'busy' ],
152
+ 'dragging': [ 'interacting' ]
153
+ }
154
+ };
155
+
156
+ $.each([ 'onResize', 'onThrottledResize' ], $.proxy(function(i, handler) {
157
+ this._handlers[handler] = $.proxy(this[handler], this);
158
+ }, this));
159
+
160
  $.each(Owl.Plugins, $.proxy(function(key, plugin) {
161
+ this._plugins[key.charAt(0).toLowerCase() + key.slice(1)]
162
  = new plugin(this);
163
  }, this));
164
 
165
+ $.each(Owl.Workers, $.proxy(function(priority, worker) {
166
  this._pipe.push({
167
  'filter': worker.filter,
168
  'run': $.proxy(worker.run, this)
181
  items: 3,
182
  loop: false,
183
  center: false,
184
+ rewind: false,
185
 
186
  mouseDrag: true,
187
  touchDrag: true,
205
  responsive: {},
206
  responsiveRefreshRate: 200,
207
  responsiveBaseElement: window,
 
208
 
209
  fallbackEasing: 'swing',
210
 
214
  itemElement: 'div',
215
  stageElement: 'div',
216
 
217
+ refreshClass: 'owl-refresh',
218
+ loadedClass: 'owl-loaded',
219
+ loadingClass: 'owl-loading',
220
+ rtlClass: 'owl-rtl',
221
+ responsiveClass: 'owl-responsive',
222
+ dragClass: 'owl-drag',
223
  itemClass: 'owl-item',
224
+ stageClass: 'owl-stage',
225
+ stageOuterClass: 'owl-stage-outer',
226
+ grabClass: 'owl-grab'
227
  };
228
 
229
  /**
238
  Outer: 'outer'
239
  };
240
 
241
+ /**
242
+ * Enumeration for types.
243
+ * @public
244
+ * @readonly
245
+ * @enum {String}
246
+ */
247
+ Owl.Type = {
248
+ Event: 'event',
249
+ State: 'state'
250
+ };
251
+
252
  /**
253
  * Contains all registered plugins.
254
  * @public
256
  Owl.Plugins = {};
257
 
258
  /**
259
+ * List of workers involved in the update process.
260
  */
261
+ Owl.Workers = [ {
262
+ filter: [ 'width', 'settings' ],
263
+ run: function() {
264
+ this._width = this.$element.width();
265
+ }
266
+ }, {
267
  filter: [ 'width', 'items', 'settings' ],
268
  run: function(cache) {
269
  cache.current = this._items && this._items[this.relative(this._current)];
271
  }, {
272
  filter: [ 'items', 'settings' ],
273
  run: function() {
274
+ this.$stage.children('.cloned').remove();
275
+ }
276
+ }, {
277
+ filter: [ 'width', 'items', 'settings' ],
278
+ run: function(cache) {
279
+ var margin = this.settings.margin || '',
280
+ grid = !this.settings.autoWidth,
281
+ rtl = this.settings.rtl,
282
+ css = {
283
+ 'width': 'auto',
284
+ 'margin-left': rtl ? margin : '',
285
+ 'margin-right': rtl ? '' : margin
286
+ };
287
+
288
+ !grid && this.$stage.children().css(css);
289
+
290
+ cache.css = css;
291
+ }
292
+ }, {
293
+ filter: [ 'width', 'items', 'settings' ],
294
+ run: function(cache) {
295
+ var width = (this.width() / this.settings.items).toFixed(3) - this.settings.margin,
296
+ merge = null,
297
+ iterator = this._items.length,
298
+ grid = !this.settings.autoWidth,
299
+ widths = [];
300
+
301
+ cache.items = {
302
+ merge: false,
303
+ width: width
304
+ };
305
+
306
+ while (iterator--) {
307
+ merge = this._mergers[iterator];
308
+ merge = this.settings.mergeFit && Math.min(merge, this.settings.items) || merge;
309
 
310
+ cache.items.merge = merge > 1 || cache.items.merge;
311
+
312
+ widths[iterator] = !grid ? this._items[iterator].width() : width * merge;
313
  }
314
+
315
+ this._widths = widths;
316
  }
317
  }, {
318
  filter: [ 'items', 'settings' ],
319
  run: function() {
320
+ var clones = [],
 
321
  items = this._items,
322
+ settings = this.settings,
323
+ view = Math.max(settings.items * 2, 4),
324
+ size = Math.ceil(items.length / 2) * 2,
325
+ repeat = settings.loop && items.length ? settings.rewind ? view : Math.max(view, size) : 0,
326
+ append = '',
327
+ prepend = '';
328
+
329
+ repeat /= 2;
330
+
331
+ while (repeat--) {
332
+ clones.push(this.normalize(clones.length / 2, true));
333
+ append = append + items[clones[clones.length - 1]][0].outerHTML;
334
+ clones.push(this.normalize(items.length - 1 - (clones.length - 1) / 2, true));
335
+ prepend = items[clones[clones.length - 1]][0].outerHTML + prepend;
336
  }
337
+
338
+ this._clones = clones;
339
+
340
+ $(append).addClass('cloned').appendTo(this.$stage);
341
+ $(prepend).addClass('cloned').prependTo(this.$stage);
342
  }
343
  }, {
344
  filter: [ 'width', 'items', 'settings' ],
345
  run: function() {
346
+ var rtl = this.settings.rtl ? 1 : -1,
347
+ size = this._clones.length + this._items.length,
348
+ iterator = -1,
349
+ previous = 0,
350
+ current = 0,
351
+ coordinates = [];
352
+
353
+ while (++iterator < size) {
354
+ previous = coordinates[iterator - 1] || 0;
355
+ current = this._widths[this.relative(iterator)] + this.settings.margin;
356
+ coordinates.push(previous + current * rtl);
357
  }
358
+
359
+ this._coordinates = coordinates;
360
  }
361
  }, {
362
  filter: [ 'width', 'items', 'settings' ],
363
  run: function() {
364
+ var padding = this.settings.stagePadding,
365
+ coordinates = this._coordinates,
366
+ css = {
367
+ 'width': Math.ceil(Math.abs(coordinates[coordinates.length - 1])) + padding * 2,
368
+ 'padding-left': padding || '',
369
+ 'padding-right': padding || ''
370
+ };
371
 
372
  this.$stage.css(css);
373
+ }
374
+ }, {
375
+ filter: [ 'width', 'items', 'settings' ],
376
+ run: function(cache) {
377
+ var iterator = this._coordinates.length,
378
+ grid = !this.settings.autoWidth,
379
+ items = this.$stage.children();
380
+
381
+ if (grid && cache.items.merge) {
382
+ while (iterator--) {
383
+ cache.css.width = this._widths[this.relative(iterator)];
384
+ items.eq(iterator).css(cache.css);
385
  }
386
+ } else if (grid) {
387
+ cache.css.width = cache.items.width;
388
+ items.css(cache.css);
389
  }
390
  }
391
+ }, {
392
+ filter: [ 'items' ],
393
+ run: function() {
394
+ this._coordinates.length < 1 && this.$stage.removeAttr('style');
395
+ }
396
  }, {
397
  filter: [ 'width', 'items', 'settings' ],
398
  run: function(cache) {
399
+ cache.current = cache.current ? this.$stage.children().index(cache.current) : 0;
400
+ cache.current = Math.max(this.minimum(), Math.min(this.maximum(), cache.current));
401
+ this.reset(cache.current);
402
  }
403
  }, {
404
  filter: [ 'position' ],
409
  filter: [ 'width', 'position', 'items', 'settings' ],
410
  run: function() {
411
  var rtl = this.settings.rtl ? 1 : -1,
412
+ padding = this.settings.stagePadding * 2,
413
  begin = this.coordinates(this.current()) + padding,
414
  end = begin + this.width() * rtl,
415
  inner, outer, matches = [], i, n;
424
  }
425
  }
426
 
427
+ this.$stage.children('.active').removeClass('active');
428
+ this.$stage.children(':eq(' + matches.join('), :eq(') + ')').addClass('active');
429
 
430
  if (this.settings.center) {
431
+ this.$stage.children('.center').removeClass('center');
432
+ this.$stage.children().eq(this.current()).addClass('center');
433
  }
434
  }
435
  } ];
439
  * @protected
440
  */
441
  Owl.prototype.initialize = function() {
442
+ this.enter('initializing');
443
  this.trigger('initialize');
444
 
445
+ this.$element.toggleClass(this.settings.rtlClass, this.settings.rtl);
 
 
 
 
 
 
446
 
447
+ if (this.settings.autoWidth && !this.is('pre-loading')) {
448
  var imgs, nestedSelector, width;
449
  imgs = this.$element.find('img');
450
  nestedSelector = this.settings.nestedItemSelector ? '.' + this.settings.nestedItemSelector : undefined;
452
 
453
  if (imgs.length && width <= 0) {
454
  this.preloadAutoWidthImages(imgs);
 
455
  }
456
  }
457
 
458
+ this.$element.addClass(this.options.loadingClass);
459
 
460
  // create stage
461
+ this.$stage = $('<' + this.settings.stageElement + ' class="' + this.settings.stageClass + '"/>')
462
+ .wrap('<div class="' + this.settings.stageOuterClass + '"/>');
463
 
464
  // append stage
465
  this.$element.append(this.$stage.parent());
467
  // append content
468
  this.replace(this.$element.children().not(this.$stage.parent()));
469
 
470
+ // check visibility
471
+ if (this.$element.is(':visible')) {
472
+ // update view
473
+ this.refresh();
474
+ } else {
475
+ // invalidate width
476
+ this.invalidate('width');
477
+ }
 
 
478
 
479
+ this.$element
480
+ .removeClass(this.options.loadingClass)
481
+ .addClass(this.options.loadedClass);
482
 
483
+ // register event handlers
484
+ this.registerEventHandlers();
485
 
486
+ this.leave('initializing');
487
  this.trigger('initialized');
488
  };
489
 
513
 
514
  // responsive class
515
  if (settings.responsiveClass) {
516
+ this.$element.attr('class',
517
+ this.$element.attr('class').replace(new RegExp('(' + this.options.responsiveClass + '-)\\S+\\s', 'g'), '$1' + match)
518
+ );
519
  }
520
  }
521
 
533
  * @protected
534
  */
535
  Owl.prototype.optionsLogic = function() {
 
 
 
 
 
 
 
 
536
  if (this.settings.autoWidth) {
537
  this.settings.stagePadding = false;
538
  this.settings.merge = false;
550
 
551
  if (!event.data) {
552
  event.data = $('<' + this.settings.itemElement + '/>')
553
+ .addClass(this.options.itemClass).append(item)
554
  }
555
 
556
  this.trigger('prepared', { content: event.data });
576
  }
577
 
578
  this._invalidated = {};
579
+
580
+ !this.is('valid') && this.enter('valid');
581
  };
582
 
583
  /**
593
  case Owl.Width.Outer:
594
  return this._width;
595
  default:
596
+ return this._width - this.settings.stagePadding * 2 + this.settings.margin;
597
  }
598
  };
599
 
602
  * @public
603
  */
604
  Owl.prototype.refresh = function() {
605
+ this.enter('refreshing');
 
 
 
 
 
606
  this.trigger('refresh');
607
 
608
  this.setup();
609
 
610
  this.optionsLogic();
611
 
612
+ this.$element.addClass(this.options.refreshClass);
 
 
613
 
614
  this.update();
615
 
616
+ this.$element.removeClass(this.options.refreshClass);
 
 
 
 
617
 
618
+ this.leave('refreshing');
619
  this.trigger('refreshed');
620
  };
621
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
622
  /**
623
  * Checks window `resize` event.
624
  * @protected
625
  */
626
  Owl.prototype.onThrottledResize = function() {
627
  window.clearTimeout(this.resizeTimer);
628
+ this.resizeTimer = window.setTimeout(this._handlers.onResize, this.settings.responsiveRefreshRate);
629
  };
630
 
631
  /**
641
  return false;
642
  }
643
 
644
+ if (!this.$element.is(':visible')) {
645
  return false;
646
  }
647
 
648
+ this.enter('resizing');
649
+
650
+ if (this.trigger('resize').isDefaultPrevented()) {
651
+ this.leave('resizing');
652
+ return false;
653
+ }
654
 
655
  this.invalidate('width');
656
 
657
  this.refresh();
658
 
659
+ this.leave('resizing');
660
  this.trigger('resized');
661
  };
662
 
663
  /**
664
+ * Registers event handlers.
665
+ * @todo Check `msPointerEnabled`
666
+ * @todo #261
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
667
  * @protected
668
  */
669
+ Owl.prototype.registerEventHandlers = function() {
670
+ if ($.support.transition) {
671
+ this.$stage.on($.support.transition.end + '.owl.core', $.proxy(this.onTransitionEnd, this));
 
 
 
 
 
 
 
672
  }
673
 
674
+ if (this.settings.responsive !== false) {
675
+ this.on(window, 'resize', this._handlers.onThrottledResize);
676
  }
677
 
678
+ if (this.settings.mouseDrag) {
679
+ this.$element.addClass(this.options.dragClass);
680
+ this.$stage.on('mousedown.owl.core', $.proxy(this.onDragStart, this));
681
+ this.$stage.on('dragstart.owl.core selectstart.owl.core', function() { return false });
682
  }
683
 
684
+ if (this.settings.touchDrag){
685
+ this.$stage.on('touchstart.owl.core', $.proxy(this.onDragStart, this));
686
+ this.$stage.on('touchcancel.owl.core', $.proxy(this.onDragEnd, this));
687
  }
688
  };
689
 
690
  /**
691
+ * Handles `touchstart` and `mousedown` events.
692
+ * @todo Horizontal swipe threshold as option
693
+ * @todo #261
694
  * @protected
695
  * @param {Event} event - The event arguments.
696
  */
697
  Owl.prototype.onDragStart = function(event) {
698
+ var stage = null;
699
 
700
+ if (event.which === 3) {
701
+ return;
702
+ }
703
 
704
+ if ($.support.transform) {
705
+ stage = this.$stage.css('transform').replace(/.*\(|\)| /g, '').split(',');
706
+ stage = {
707
+ x: stage[stage.length === 16 ? 12 : 4],
708
+ y: stage[stage.length === 16 ? 13 : 5]
709
+ };
710
+ } else {
711
+ stage = this.$stage.position();
712
+ stage = {
713
+ x: this.settings.rtl ?
714
+ stage.left + this.$stage.width() - this.width() + this.settings.margin :
715
+ stage.left,
716
+ y: stage.top
717
+ };
718
  }
719
 
720
+ if (this.is('animating')) {
721
+ $.support.transform ? this.animate(stage.x) : this.$stage.stop()
722
+ this.invalidate('position');
723
  }
724
 
725
+ this.$element.toggleClass(this.options.grabClass, event.type === 'mousedown');
726
+
727
  this.speed(0);
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
728
 
729
+ this._drag.time = new Date().getTime();
730
+ this._drag.target = $(event.target);
731
+ this._drag.stage.start = stage;
732
+ this._drag.stage.current = stage;
733
+ this._drag.pointer = this.pointer(event);
734
 
735
+ $(document).on('mouseup.owl.core touchend.owl.core', $.proxy(this.onDragEnd, this));
 
 
736
 
737
+ $(document).one('mousemove.owl.core touchmove.owl.core', $.proxy(function(event) {
738
+ var delta = this.difference(this._drag.pointer, this.pointer(event));
739
+
740
+ $(document).on('mousemove.owl.core touchmove.owl.core', $.proxy(this.onDragMove, this));
741
+
742
+ if (Math.abs(delta.x) < Math.abs(delta.y) && this.is('valid')) {
743
+ return;
744
+ }
745
+
746
+ event.preventDefault();
747
 
748
+ this.enter('dragging');
749
+ this.trigger('drag');
750
+ }, this));
751
  };
752
 
753
  /**
754
+ * Handles the `touchmove` and `mousemove` events.
755
+ * @todo #261
756
  * @protected
757
  * @param {Event} event - The event arguments.
758
  */
759
  Owl.prototype.onDragMove = function(event) {
760
+ var minimum = null,
761
+ maximum = null,
762
+ pull = null,
763
+ delta = this.difference(this._drag.pointer, this.pointer(event)),
764
+ stage = this.difference(this._drag.stage.start, delta);
765
 
766
+ if (!this.is('dragging')) {
767
  return;
768
  }
769
 
770
+ event.preventDefault();
 
 
 
 
 
 
 
 
771
 
 
 
 
 
 
 
 
772
  if (this.settings.loop) {
773
+ minimum = this.coordinates(this.minimum());
774
+ maximum = this.coordinates(this.maximum() + 1) - minimum;
775
+ stage.x = (((stage.x - minimum) % maximum + maximum) % maximum) + minimum;
 
 
776
  } else {
777
+ minimum = this.settings.rtl ? this.coordinates(this.maximum()) : this.coordinates(this.minimum());
778
+ maximum = this.settings.rtl ? this.coordinates(this.minimum()) : this.coordinates(this.maximum());
779
+ pull = this.settings.pullDrag ? -1 * delta.x / 5 : 0;
780
+ stage.x = Math.max(Math.min(stage.x, minimum + pull), maximum + pull);
 
 
 
 
 
 
 
 
 
 
 
 
781
  }
782
 
783
+ this._drag.stage.current = stage;
 
 
 
 
 
 
784
 
785
+ this.animate(stage.x);
786
  };
787
 
788
  /**
789
+ * Handles the `touchend` and `mouseup` events.
790
+ * @todo #261
791
+ * @todo Threshold for click event
792
  * @protected
793
+ * @param {Event} event - The event arguments.
794
  */
795
  Owl.prototype.onDragEnd = function(event) {
796
+ var delta = this.difference(this._drag.pointer, this.pointer(event)),
797
+ stage = this._drag.stage.current,
798
+ direction = delta.x > 0 ^ this.settings.rtl ? 'left' : 'right';
 
 
 
 
 
 
 
 
 
 
 
799
 
800
+ $(document).off('.owl.core');
801
 
802
+ this.$element.removeClass(this.options.grabClass);
 
 
803
 
804
+ if (delta.x !== 0 && this.is('dragging') || !this.is('valid')) {
805
+ this.speed(this.settings.dragEndSpeed || this.settings.smartSpeed);
806
+ this.current(this.closest(stage.x, delta.x !== 0 ? direction : this._drag.direction));
807
+ this.invalidate('position');
808
+ this.update();
 
 
 
 
 
 
 
 
 
 
 
 
 
809
 
810
+ this._drag.direction = direction;
 
 
 
811
 
812
+ if (Math.abs(delta.x) > 3 || new Date().getTime() - this._drag.time > 300) {
813
+ this._drag.target.one('click.owl.core', function() { return false; });
814
+ }
 
815
  }
816
 
817
+ if (!this.is('dragging')) {
818
+ return;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
819
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
820
 
821
+ this.leave('dragging');
822
+ this.trigger('dragged');
823
  };
824
 
825
  /**
827
  * @todo Setting `freeDrag` makes `closest` not reusable. See #165.
828
  * @protected
829
  * @param {Number} coordinate - The coordinate in pixel.
830
+ * @param {String} direction - The direction to check for the closest item. Ether `left` or `right`.
831
  * @return {Number} - The absolute position of the closest item.
832
  */
833
+ Owl.prototype.closest = function(coordinate, direction) {
834
+ var position = -1,
835
+ pull = 30,
836
+ width = this.width(),
837
+ coordinates = this.coordinates();
838
 
839
  if (!this.settings.freeDrag) {
840
  // check closest item
843
  position = index;
844
  } else if (this.op(coordinate, '<', value)
845
  && this.op(coordinate, '>', coordinates[index + 1] || value - width)) {
846
+ position = direction === 'left' ? index + 1 : index;
847
  }
848
  return position === -1;
849
  }, this));
863
 
864
  /**
865
  * Animates the stage.
866
+ * @todo #270
867
  * @public
868
  * @param {Number} coordinate - The coordinate in pixels.
869
  */
870
  Owl.prototype.animate = function(coordinate) {
871
+ var animate = this.speed() > 0;
872
+
873
+ this.is('animating') && this.onTransitionEnd();
874
+
875
+ if (animate) {
876
+ this.enter('animating');
877
+ this.trigger('translate');
878
+ }
879
 
880
+ if ($.support.transform3d && $.support.transition) {
881
  this.$stage.css({
882
+ transform: 'translate3d(' + coordinate + 'px,0px,0px)',
883
  transition: (this.speed() / 1000) + 's'
884
  });
885
+ } else if (animate) {
886
+ this.$stage.animate({
887
+ left: coordinate + 'px'
888
+ }, this.speed(), this.settings.fallbackEasing, $.proxy(this.onTransitionEnd, this));
889
+ } else {
890
  this.$stage.css({
891
  left: coordinate + 'px'
892
  });
 
 
 
 
 
 
 
 
893
  }
894
  };
895
 
896
+ /**
897
+ * Checks whether the carousel is in a specific state or not.
898
+ * @param {String} state - The state to check.
899
+ * @returns {Boolean} - The flag which indicates if the carousel is busy.
900
+ */
901
+ Owl.prototype.is = function(state) {
902
+ return this._states.current[state] && this._states.current[state] > 0;
903
+ };
904
+
905
  /**
906
  * Sets the absolute position of the current item.
907
  * @public
938
 
939
  /**
940
  * Invalidates the given part of the update routine.
941
+ * @param {String} [part] - The part to invalidate.
942
+ * @returns {Array.<String>} - The invalidated parts.
943
  */
944
  Owl.prototype.invalidate = function(part) {
945
+ if ($.type(part) === 'string') {
946
+ this._invalidated[part] = true;
947
+ this.is('valid') && this.leave('valid');
948
+ }
949
+ return $.map(this._invalidated, function(v, i) { return i });
950
+ };
951
 
952
  /**
953
  * Resets the absolute position of the current item.
972
  };
973
 
974
  /**
975
+ * Normalizes an absolute or a relative position of an item.
976
  * @public
977
  * @param {Number} position - The absolute or relative position to normalize.
978
  * @param {Boolean} [relative=false] - Whether the given position is relative or not.
979
  * @returns {Number} - The normalized position.
980
  */
981
  Owl.prototype.normalize = function(position, relative) {
982
+ var n = this._items.length,
983
+ m = relative ? 0 : this._clones.length;
984
 
985
  if (!$.isNumeric(position) || n < 1) {
986
+ position = undefined;
987
+ } else if (position < 0 || position >= n + m) {
988
+ position = ((position - m / 2) % n + n) % n + m / 2;
 
 
 
 
989
  }
990
 
991
  return position;
992
  };
993
 
994
  /**
995
+ * Converts an absolute position of an item into a relative one.
996
  * @public
997
  * @param {Number} position - The absolute position to convert.
998
  * @returns {Number} - The converted position.
999
  */
1000
  Owl.prototype.relative = function(position) {
1001
+ position -= this._clones.length / 2;
 
1002
  return this.normalize(position, true);
1003
  };
1004
 
1005
  /**
1006
+ * Gets the maximum position for the current item.
1007
  * @public
1008
  * @param {Boolean} [relative=false] - Whether to return an absolute position or a relative position.
1009
  * @returns {Number}
1010
  */
1011
  Owl.prototype.maximum = function(relative) {
1012
+ var settings = this.settings,
1013
+ maximum = this._coordinates.length,
1014
+ boundary = Math.abs(this._coordinates[maximum - 1]) - this._width,
1015
+ i = -1, j;
 
 
1016
 
1017
+ if (settings.loop) {
1018
+ maximum = this._clones.length / 2 + this._items.length - 1;
 
 
 
 
1019
  } else if (settings.autoWidth || settings.merge) {
1020
+ // binary search
1021
+ while (maximum - i > 1) {
1022
+ Math.abs(this._coordinates[j = maximum + i >> 1]) < boundary
1023
+ ? i = j : maximum = j;
 
 
 
1024
  }
1025
+ } else if (settings.center) {
1026
+ maximum = this._items.length - 1;
1027
  } else {
1028
+ maximum = this._items.length - settings.items;
1029
+ }
1030
+
1031
+ if (relative) {
1032
+ maximum -= this._clones.length / 2;
1033
  }
1034
 
1035
+ return Math.max(maximum, 0);
1036
  };
1037
 
1038
  /**
1039
+ * Gets the minimum position for the current item.
1040
  * @public
1041
  * @param {Boolean} [relative=false] - Whether to return an absolute position or a relative position.
1042
  * @returns {Number}
1043
  */
1044
  Owl.prototype.minimum = function(relative) {
1045
+ return relative ? 0 : this._clones.length / 2;
 
 
 
 
1046
  };
1047
 
1048
  /**
1152
  * @param {Number} [speed] - The time in milliseconds for the transition.
1153
  */
1154
  Owl.prototype.to = function(position, speed) {
1155
+ var current = this.current(),
1156
+ revert = null,
1157
+ distance = position - this.relative(current),
1158
+ direction = (distance > 0) - (distance < 0),
1159
+ items = this._items.length,
1160
+ minimum = this.minimum(),
1161
+ maximum = this.maximum();
1162
+
1163
  if (this.settings.loop) {
1164
+ if (!this.settings.rewind && Math.abs(distance) > items / 2) {
1165
+ distance += direction * -1 * items;
 
 
 
 
 
 
 
 
 
 
 
1166
  }
1167
+
1168
+ position = current + distance;
1169
+ revert = ((position - minimum) % items + items) % items + minimum;
1170
+
1171
+ if (revert !== position && revert - distance <= maximum && revert - distance > 0) {
1172
+ current = revert - distance;
1173
+ position = revert;
1174
+ this.reset(current);
1175
+ }
1176
+ } else if (this.settings.rewind) {
1177
+ maximum += 1;
1178
+ position = (position % maximum + maximum) % maximum;
1179
  } else {
1180
+ position = Math.max(minimum, Math.min(maximum, position));
1181
+ }
1182
+
1183
+ this.speed(this.duration(current, position, speed));
1184
+ this.current(position);
1185
+
1186
+ if (this.$element.is(':visible')) {
1187
  this.update();
1188
  }
1189
  };
1213
  * @protected
1214
  * @param {Event} event - The event arguments.
1215
  */
1216
+ Owl.prototype.onTransitionEnd = function(event) {
1217
 
1218
  // if css2 animation then event object is undefined
1219
  if (event !== undefined) {
1225
  }
1226
  }
1227
 
1228
+ this.leave('animating');
1229
  this.trigger('translated');
1230
  };
1231
 
1287
  * @param {Number} [position] - The relative position at which to insert the item otherwise the item will be added to the end.
1288
  */
1289
  Owl.prototype.add = function(content, position) {
1290
+ var current = this.relative(this._current);
1291
+
1292
  position = position === undefined ? this._items.length : this.normalize(position, true);
1293
+ content = content instanceof jQuery ? content : $(content);
1294
 
1295
  this.trigger('add', { content: content, position: position });
1296
 
1297
+ content = this.prepare(content);
1298
+
1299
  if (this._items.length === 0 || position === this._items.length) {
1300
+ this._items.length === 0 && this.$stage.append(content);
1301
+ this._items.length !== 0 && this._items[position - 1].after(content);
1302
  this._items.push(content);
1303
  this._mergers.push(content.find('[data-merge]').andSelf('[data-merge]').attr('data-merge') * 1 || 1);
1304
  } else {
1307
  this._mergers.splice(position, 0, content.find('[data-merge]').andSelf('[data-merge]').attr('data-merge') * 1 || 1);
1308
  }
1309
 
1310
+ this._items[current] && this.reset(this._items[current].index());
1311
+
1312
  this.invalidate('items');
1313
 
1314
  this.trigger('added', { content: content, position: position });
1339
  };
1340
 
1341
  /**
1342
+ * Preloads images with auto width.
1343
+ * @todo Replace by a more generic approach
1344
  * @protected
1345
  */
1346
+ Owl.prototype.preloadAutoWidthImages = function(images) {
1347
+ images.each($.proxy(function(i, element) {
1348
+ this.enter('pre-loading');
1349
+ element = $(element);
1350
+ $(new Image()).one('load', $.proxy(function(e) {
1351
+ element.attr('src', e.target.src);
1352
+ element.css('opacity', 1);
1353
+ this.leave('pre-loading');
1354
+ !this.is('pre-loading') && !this.is('initializing') && this.refresh();
1355
+ }, this)).attr('src', element.attr('src') || element.attr('data-src') || element.attr('data-src-retina'));
 
 
 
 
 
 
 
 
 
 
 
 
1356
  }, this));
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1357
  };
1358
 
1359
  /**
1362
  */
1363
  Owl.prototype.destroy = function() {
1364
 
1365
+ this.$element.off('.owl.core');
1366
+ this.$stage.off('.owl.core');
1367
+ $(document).off('.owl.core');
1368
 
1369
  if (this.settings.responsive !== false) {
1370
+ window.clearTimeout(this.resizeTimer);
1371
+ this.off(window, 'resize', this._handlers.onThrottledResize);
 
 
 
1372
  }
1373
 
1374
+ for (var i in this._plugins) {
1375
  this._plugins[i].destroy();
1376
  }
1377
 
 
 
 
 
 
 
 
 
 
 
1378
  this.$stage.children('.cloned').remove();
 
 
1379
 
1380
+ this.$stage.unwrap();
1381
  this.$stage.children().contents().unwrap();
1382
  this.$stage.children().unwrap();
1383
+
1384
+ this.$element
1385
+ .removeClass(this.options.refreshClass)
1386
+ .removeClass(this.options.loadingClass)
1387
+ .removeClass(this.options.loadedClass)
1388
+ .removeClass(this.options.rtlClass)
1389
+ .removeClass(this.options.dragClass)
1390
+ .removeClass(this.options.grabClass)
1391
+ .attr('class', this.$element.attr('class').replace(new RegExp(this.options.responsiveClass + '-\\S+\\s', 'g'), ''))
1392
+ .removeData('owl.carousel');
1393
  };
1394
 
1395
  /**
1448
  };
1449
 
1450
  /**
1451
+ * Triggers a public event.
1452
+ * @todo Remove `status`, `relatedTarget` should be used instead.
1453
  * @protected
1454
  * @param {String} name - The event name.
1455
  * @param {*} [data=null] - The event data.
1456
+ * @param {String} [namespace=carousel] - The event namespace.
1457
+ * @param {String} [state] - The state which is associated with the event.
1458
+ * @param {Boolean} [enter=false] - Indicates if the call enters the specified state or not.
1459
  * @returns {Event} - The event arguments.
1460
  */
1461
+ Owl.prototype.trigger = function(name, data, namespace, state, enter) {
1462
  var status = {
1463
  item: { count: this._items.length, index: this.current() }
1464
  }, handler = $.camelCase(
1476
  }
1477
  });
1478
 
1479
+ this.register({ type: Owl.Type.Event, name: name });
1480
  this.$element.trigger(event);
1481
 
1482
  if (this.settings && typeof this.settings[handler] === 'function') {
1483
+ this.settings[handler].call(this, event);
1484
  }
1485
  }
1486
 
1487
  return event;
1488
  };
1489
 
1490
+ /**
1491
+ * Enters a state.
1492
+ * @param name - The state name.
1493
+ */
1494
+ Owl.prototype.enter = function(name) {
1495
+ $.each([ name ].concat(this._states.tags[name] || []), $.proxy(function(i, name) {
1496
+ if (this._states.current[name] === undefined) {
1497
+ this._states.current[name] = 0;
1498
+ }
1499
+
1500
+ this._states.current[name]++;
1501
+ }, this));
1502
+ };
1503
+
1504
+ /**
1505
+ * Leaves a state.
1506
+ * @param name - The state name.
1507
+ */
1508
+ Owl.prototype.leave = function(name) {
1509
+ $.each([ name ].concat(this._states.tags[name] || []), $.proxy(function(i, name) {
1510
+ this._states.current[name]--;
1511
+ }, this));
1512
+ };
1513
+
1514
+ /**
1515
+ * Registers an event or state.
1516
+ * @public
1517
+ * @param {Object} object - The event or state to register.
1518
+ */
1519
+ Owl.prototype.register = function(object) {
1520
+ if (object.type === Owl.Type.Event) {
1521
+ if (!$.event.special[object.name]) {
1522
+ $.event.special[object.name] = {};
1523
+ }
1524
+
1525
+ if (!$.event.special[object.name].owl) {
1526
+ var _default = $.event.special[object.name]._default;
1527
+ $.event.special[object.name]._default = function(e) {
1528
+ if (_default && _default.apply && (!e.namespace || e.namespace.indexOf('owl') === -1)) {
1529
+ return _default.apply(this, arguments);
1530
+ }
1531
+ return e.namespace && e.namespace.indexOf('owl') > -1;
1532
+ };
1533
+ $.event.special[object.name].owl = true;
1534
+ }
1535
+ } else if (object.type === Owl.Type.State) {
1536
+ if (!this._states.tags[object.name]) {
1537
+ this._states.tags[object.name] = object.tags;
1538
+ } else {
1539
+ this._states.tags[object.name] = this._states.tags[object.name].concat(object.tags);
1540
+ }
1541
+
1542
+ this._states.tags[object.name] = $.grep(this._states.tags[object.name], $.proxy(function(tag, i) {
1543
+ return $.inArray(tag, this._states.tags[object.name]) === i;
1544
+ }, this));
1545
+ }
1546
+ };
1547
+
1548
  /**
1549
  * Suppresses events.
1550
  * @protected
1554
  $.each(events, $.proxy(function(index, event) {
1555
  this._supress[event] = true;
1556
  }, this));
1557
+ };
1558
 
1559
  /**
1560
  * Releases suppressed events.
1565
  $.each(events, $.proxy(function(index, event) {
1566
  delete this._supress[event];
1567
  }, this));
1568
+ };
1569
 
1570
  /**
1571
+ * Gets unified pointer coordinates from event.
1572
+ * @todo #261
1573
  * @protected
1574
+ * @param {Event} - The `mousedown` or `touchstart` event.
1575
+ * @returns {Object} - Contains `x` and `y` coordinates of current pointer position.
1576
  */
1577
+ Owl.prototype.pointer = function(event) {
1578
+ var result = { x: null, y: null };
1579
 
1580
+ event = event.originalEvent || event || window.event;
 
1581
 
1582
+ event = event.touches && event.touches.length ?
1583
+ event.touches[0] : event.changedTouches && event.changedTouches.length ?
1584
+ event.changedTouches[0] : event;
1585
 
1586
+ if (event.pageX) {
1587
+ result.x = event.pageX;
1588
+ result.y = event.pageY;
1589
+ } else {
1590
+ result.x = event.clientX;
1591
+ result.y = event.clientY;
1592
  }
1593
 
1594
+ return result;
1595
  };
1596
 
1597
  /**
1598
+ * Gets the difference of two vectors.
1599
+ * @todo #261
1600
+ * @protected
1601
+ * @param {Object} - The first vector.
1602
+ * @param {Object} - The second vector.
1603
+ * @returns {Object} - The difference.
1604
+ */
1605
+ Owl.prototype.difference = function(first, second) {
1606
+ return {
1607
+ x: first.x - second.x,
1608
+ y: first.y - second.y
1609
+ };
1610
+ };
1611
 
1612
+ /**
1613
+ * The jQuery Plugin for the Owl Carousel
1614
+ * @todo Navigation plugin `next` and `prev`
1615
+ * @public
1616
+ */
1617
+ $.fn.owlCarousel = function(option) {
1618
+ var args = Array.prototype.slice.call(arguments, 1);
1619
 
1620
+ return this.each(function() {
1621
+ var $this = $(this),
1622
+ data = $this.data('owl.carousel');
1623
+
1624
+ if (!data) {
1625
+ data = new Owl(this, typeof option == 'object' && option);
1626
+ $this.data('owl.carousel', data);
1627
+
1628
+ $.each([
1629
+ 'next', 'prev', 'to', 'destroy', 'refresh', 'replace', 'add', 'remove'
1630
+ ], function(i, event) {
1631
+ data.register({ type: Owl.Type.Event, name: event });
1632
+ data.$element.on(event + '.owl.carousel.core', $.proxy(function(e) {
1633
+ if (e.namespace && e.relatedTarget !== this) {
1634
+ this.suppress([ event ]);
1635
+ data[event].apply(this, [].slice.call(arguments, 1));
1636
+ this.release([ event ]);
1637
+ }
1638
+ }, data));
1639
+ });
1640
  }
1641
 
1642
+ if (typeof option == 'string' && option.charAt(0) !== '_') {
1643
+ data[option].apply(data, args);
 
 
 
1644
  }
1645
+ });
1646
+ };
1647
 
1648
  /**
1649
+ * The constructor for the jQuery Plugin
1650
+ * @public
 
 
1651
  */
1652
+ $.fn.owlCarousel.Constructor = Owl;
 
 
 
 
 
 
 
 
 
 
1653
 
1654
+ })(window.Zepto || window.jQuery, window, document);
 
 
 
 
 
 
 
 
1655
 
1656
+ /**
1657
+ * AutoRefresh Plugin
1658
+ * @version 2.0.0-beta.3
1659
+ * @author Artus Kolanowski
1660
+ * @license The MIT License (MIT)
1661
+ */
1662
+ ;(function($, window, document, undefined) {
 
1663
 
1664
  /**
1665
+ * Creates the auto refresh plugin.
1666
+ * @class The Auto Refresh Plugin
1667
+ * @param {Owl} carousel - The Owl Carousel
1668
  */
1669
+ var AutoRefresh = function(carousel) {
1670
+ /**
1671
+ * Reference to the core.
1672
+ * @protected
1673
+ * @type {Owl}
1674
+ */
1675
+ this._core = carousel;
1676
+
1677
+ /**
1678
+ * Refresh interval.
1679
+ * @protected
1680
+ * @type {number}
1681
+ */
1682
+ this._interval = null;
1683
+
1684
+ /**
1685
+ * Whether the element is currently visible or not.
1686
+ * @protected
1687
+ * @type {Boolean}
1688
+ */
1689
+ this._visible = null;
1690
+
1691
+ /**
1692
+ * All event handlers.
1693
+ * @protected
1694
+ * @type {Object}
1695
+ */
1696
+ this._handlers = {
1697
+ 'initialized.owl.carousel': $.proxy(function(e) {
1698
+ if (e.namespace && this._core.settings.autoRefresh) {
1699
+ this.watch();
1700
+ }
1701
+ }, this)
1702
+ };
1703
+
1704
+ // set default options
1705
+ this._core.options = $.extend({}, AutoRefresh.Defaults, this._core.options);
1706
+
1707
+ // register event handlers
1708
+ this._core.$element.on(this._handlers);
1709
+ };
1710
 
1711
  /**
1712
+ * Default options.
1713
+ * @public
 
1714
  */
1715
+ AutoRefresh.Defaults = {
1716
+ autoRefresh: true,
1717
+ autoRefreshInterval: 500
1718
+ };
1719
 
1720
  /**
1721
+ * Watches the element.
 
 
1722
  */
1723
+ AutoRefresh.prototype.watch = function() {
1724
+ if (this._interval) {
1725
+ return;
1726
+ }
1727
+
1728
+ this._visible = this._core.$element.is(':visible');
1729
+ this._interval = window.setInterval($.proxy(this.refresh, this), this._core.settings.autoRefreshInterval);
1730
+ };
1731
 
1732
  /**
1733
+ * Refreshes the element.
 
1734
  */
1735
+ AutoRefresh.prototype.refresh = function() {
1736
+ if (this._core.$element.is(':visible') === this._visible) {
1737
+ return;
1738
+ }
1739
+
1740
+ this._visible = !this._visible;
1741
+
1742
+ this._core.$element.toggleClass('owl-hidden', !this._visible);
1743
+
1744
+ this._visible && (this._core.invalidate('width') && this._core.refresh());
1745
  };
1746
 
1747
  /**
1748
+ * Destroys the plugin.
 
1749
  */
1750
+ AutoRefresh.prototype.destroy = function() {
1751
+ var handler, property;
1752
+
1753
+ window.clearInterval(this._interval);
1754
+
1755
+ for (handler in this._handlers) {
1756
+ this._core.$element.off(handler, this._handlers[handler]);
1757
+ }
1758
+ for (property in Object.getOwnPropertyNames(this)) {
1759
+ typeof this[property] != 'function' && (this[property] = null);
1760
+ }
1761
+ };
1762
+
1763
+ $.fn.owlCarousel.Constructor.Plugins.AutoRefresh = AutoRefresh;
1764
 
1765
  })(window.Zepto || window.jQuery, window, document);
1766
 
1767
  /**
1768
  * Lazy Plugin
1769
+ * @version 2.0.0-beta.3
1770
  * @author Bartosz Wojciechowski
1771
  * @license The MIT License (MIT)
1772
  */
1818
 
1819
  while (i++ < n) {
1820
  this.load(clones / 2 + this._core.relative(position));
1821
+ clones && $.each(this._core.clones(this._core.relative(position)), load);
1822
+ position++;
1823
  }
1824
  }
1825
  }, this)
1893
  for (property in Object.getOwnPropertyNames(this)) {
1894
  typeof this[property] != 'function' && (this[property] = null);
1895
  }
1896
+ };
1897
 
1898
  $.fn.owlCarousel.Constructor.Plugins.Lazy = Lazy;
1899
 
1901
 
1902
  /**
1903
  * AutoHeight Plugin
1904
+ * @version 2.0.0-beta.3
1905
  * @author Bartosz Wojciechowski
1906
  * @license The MIT License (MIT)
1907
  */
1926
  * @type {Object}
1927
  */
1928
  this._handlers = {
1929
+ 'initialized.owl.carousel refreshed.owl.carousel': $.proxy(function(e) {
1930
+ if (e.namespace && this._core.settings.autoHeight) {
1931
  this.update();
1932
  }
1933
  }, this),
1934
  'changed.owl.carousel': $.proxy(function(e) {
1935
+ if (e.namespace && this._core.settings.autoHeight && e.property.name == 'position'){
1936
  this.update();
1937
  }
1938
  }, this),
1939
  'loaded.owl.lazy': $.proxy(function(e) {
1940
+ if (e.namespace && this._core.settings.autoHeight
1941
+ && e.element.closest('.' + this._core.settings.itemClass).index() === this._core.current()) {
1942
  this.update();
1943
  }
1944
  }, this)
1964
  * Updates the view.
1965
  */
1966
  AutoHeight.prototype.update = function() {
1967
+ var start = this._core._current,
1968
+ end = start + this._core.settings.items,
1969
+ visible = this._core.$stage.children().toArray().slice(start, end);
1970
+ heights = [],
1971
+ maxheight = 0;
1972
+
1973
+ $.each(visible, function(index, item) {
1974
+ heights.push($(item).height());
1975
+ });
1976
+
1977
+ maxheight = Math.max.apply(null, heights);
1978
+
1979
  this._core.$stage.parent()
1980
+ .height(maxheight)
1981
  .addClass(this._core.settings.autoHeightClass);
1982
  };
1983
 
1998
 
1999
  /**
2000
  * Video Plugin
2001
+ * @version 2.0.0-beta.3
2002
  * @author Bartosz Wojciechowski
2003
  * @license The MIT License (MIT)
2004
  */
2031
  */
2032
  this._playing = null;
2033
 
 
 
 
 
 
 
 
2034
  /**
2035
  * All event handlers.
2036
+ * @todo The cloned content removale is too late
2037
  * @protected
2038
  * @type {Object}
2039
  */
2040
  this._handlers = {
2041
+ 'initialized.owl.carousel': $.proxy(function(e) {
2042
+ if (e.namespace) {
2043
+ this._core.register({ type: 'state', name: 'playing', tags: [ 'interacting' ] });
2044
+ }
2045
+ }, this),
2046
  'resize.owl.carousel': $.proxy(function(e) {
2047
+ if (e.namespace && this._core.settings.video && this.isInFullScreen()) {
2048
  e.preventDefault();
2049
  }
2050
  }, this),
2051
+ 'refreshed.owl.carousel': $.proxy(function(e) {
2052
+ if (e.namespace && this._core.is('resizing')) {
2053
+ this._core.$stage.find('.cloned .owl-video-frame').remove();
2054
+ }
2055
+ }, this),
2056
+ 'changed.owl.carousel': $.proxy(function(e) {
2057
+ if (e.namespace && e.property.name === 'position' && this._playing) {
2058
  this.stop();
2059
  }
2060
  }, this),
2061
  'prepared.owl.carousel': $.proxy(function(e) {
2062
+ if (!e.namespace) {
2063
+ return;
2064
+ }
2065
+
2066
  var $element = $(e.content).find('.owl-video');
2067
+
2068
  if ($element.length) {
2069
  $element.css('display', 'none');
2070
  this.fetch($element, $(e.content));
2100
  * @param {jQuery} item - The item containing the video.
2101
  */
2102
  Video.prototype.fetch = function(target, item) {
 
2103
  var type = target.attr('data-vimeo-id') ? 'vimeo' : 'youtube',
2104
  id = target.attr('data-vimeo-id') || target.attr('data-youtube-id'),
2105
  width = target.attr('data-width') || this._core.settings.videoWidth,
2141
  * @see `fetch`
2142
  */
2143
  Video.prototype.thumbnail = function(target, video) {
 
2144
  var tnLink,
2145
  icon,
2146
  path,
2202
  this._playing.find('.owl-video-frame').remove();
2203
  this._playing.removeClass('owl-video-playing');
2204
  this._playing = null;
2205
+ this._core.leave('playing');
2206
+ this._core.trigger('stopped', null, 'video');
2207
  };
2208
 
2209
  /**
2210
  * Starts the current video.
2211
  * @public
2212
+ * @param {Event} event - The event arguments.
2213
  */
2214
+ Video.prototype.play = function(event) {
2215
+ var target = $(event.target),
 
 
 
 
 
 
2216
  item = target.closest('.' + this._core.settings.itemClass),
2217
  video = this._videos[item.attr('data-video')],
2218
  width = video.width || '100%',
2219
  height = video.height || this._core.$stage.height(),
2220
+ html;
2221
+
2222
+ if (this._playing) {
2223
+ return;
2224
+ }
2225
+
2226
+ this._core.enter('playing');
2227
+ this._core.trigger('play', null, 'video');
2228
+
2229
+ item = this._core.items(this._core.relative(item.index()));
2230
+
2231
+ this._core.reset(item.index());
2232
 
2233
  if (video.type === 'youtube') {
2234
+ html = '<iframe width="' + width + '" height="' + height + '" src="http://www.youtube.com/embed/' +
2235
+ video.id + '?autoplay=1&v=' + video.id + '" frameborder="0" allowfullscreen></iframe>';
2236
  } else if (video.type === 'vimeo') {
2237
+ html = '<iframe src="http://player.vimeo.com/video/' + video.id +
2238
+ '?autoplay=1" width="' + width + '" height="' + height +
2239
+ '" frameborder="0" webkitallowfullscreen mozallowfullscreen allowfullscreen></iframe>';
2240
  }
2241
 
2242
+ $('<div class="owl-video-frame">' + html + '</div>').insertAfter(item.find('.owl-video'));
 
2243
 
2244
+ this._playing = item.addClass('owl-video-playing');
 
 
2245
  };
2246
 
2247
  /**
2251
  * @returns {Boolean}
2252
  */
2253
  Video.prototype.isInFullScreen = function() {
2254
+ var element = document.fullscreenElement || document.mozFullScreenElement ||
2255
+ document.webkitFullscreenElement;
2256
 
2257
+ return element && $(element).parent().hasClass('owl-video-frame');
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
2258
  };
2259
 
2260
  /**
2279
 
2280
  /**
2281
  * Animate Plugin
2282
+ * @version 2.0.0-beta.3
2283
  * @author Bartosz Wojciechowski
2284
  * @license The MIT License (MIT)
2285
  */
2299
 
2300
  this.handlers = {
2301
  'change.owl.carousel': $.proxy(function(e) {
2302
+ if (e.namespace && e.property.name == 'position') {
2303
  this.previous = this.core.current();
2304
  this.next = e.property.value;
2305
  }
2306
  }, this),
2307
  'drag.owl.carousel dragged.owl.carousel translated.owl.carousel': $.proxy(function(e) {
2308
+ if (e.namespace) {
2309
+ this.swapping = e.type == 'translated';
2310
+ }
2311
  }, this),
2312
  'translate.owl.carousel': $.proxy(function(e) {
2313
+ if (e.namespace && this.swapping && (this.core.options.animateOut || this.core.options.animateIn)) {
2314
  this.swap();
2315
  }
2316
  }, this)
2335
  */
2336
  Animate.prototype.swap = function() {
2337
 
2338
+ if (this.core.settings.items !== 1) {
2339
+ return;
2340
+ }
2341
+
2342
+ if (!$.support.animation || !$.support.transition) {
2343
  return;
2344
  }
2345
 
2358
 
2359
  if (outgoing) {
2360
  left = this.core.coordinates(this.previous) - this.core.coordinates(this.next);
2361
+ previous.one($.support.animation.end, clear)
2362
+ .css( { 'left': left + 'px' } )
2363
  .addClass('animated owl-animated-out')
2364
+ .addClass(outgoing);
 
2365
  }
2366
 
2367
  if (incoming) {
2368
+ next.one($.support.animation.end, clear)
2369
+ .addClass('animated owl-animated-in')
2370
+ .addClass(incoming);
2371
  }
2372
  };
2373
 
2376
  .removeClass('animated owl-animated-out owl-animated-in')
2377
  .removeClass(this.core.settings.animateIn)
2378
  .removeClass(this.core.settings.animateOut);
2379
+ this.core.onTransitionEnd();
2380
+ };
2381
 
2382
  /**
2383
  * Destroys the plugin.
2400
 
2401
  /**
2402
  * Autoplay Plugin
2403
+ * @version 2.0.0-beta.3
2404
  * @author Bartosz Wojciechowski
2405
+ * @author Artus Kolanowski
2406
  * @license The MIT License (MIT)
2407
  */
2408
  ;(function($, window, document, undefined) {
2412
  * @class The Autoplay Plugin
2413
  * @param {Owl} scope - The Owl Carousel
2414
  */
2415
+ var Autoplay = function(carousel) {
2416
+ /**
2417
+ * Reference to the core.
2418
+ * @protected
2419
+ * @type {Owl}
2420
+ */
2421
+ this._core = carousel;
2422
 
2423
+ /**
2424
+ * The autoplay interval.
2425
+ * @type {Number}
2426
+ */
2427
+ this._interval = null;
2428
+
2429
+ /**
2430
+ * Indicates whenever the autoplay is paused.
2431
+ * @type {Boolean}
2432
+ */
2433
+ this._paused = false;
2434
+
2435
+ /**
2436
+ * All event handlers.
2437
+ * @protected
2438
+ * @type {Object}
2439
+ */
2440
+ this._handlers = {
2441
+ 'changed.owl.carousel': $.proxy(function(e) {
2442
+ if (e.namespace && e.property.name === 'settings') {
2443
+ if (this._core.settings.autoplay) {
2444
+ this.play();
2445
+ } else {
2446
+ this.stop();
2447
+ }
2448
+ }
2449
+ }, this),
2450
+ 'initialized.owl.carousel': $.proxy(function(e) {
2451
+ if (e.namespace && this._core.settings.autoplay) {
2452
+ this.play();
2453
+ }
2454
  }, this),
2455
  'play.owl.autoplay': $.proxy(function(e, t, s) {
2456
+ if (e.namespace) {
2457
+ this.play(t, s);
2458
+ }
2459
  }, this),
2460
+ 'stop.owl.autoplay': $.proxy(function(e) {
2461
+ if (e.namespace) {
2462
+ this.stop();
2463
+ }
2464
  }, this),
2465
  'mouseover.owl.autoplay': $.proxy(function() {
2466
+ if (this._core.settings.autoplayHoverPause && this._core.is('rotating')) {
2467
  this.pause();
2468
  }
2469
  }, this),
2470
  'mouseleave.owl.autoplay': $.proxy(function() {
2471
+ if (this._core.settings.autoplayHoverPause && this._core.is('rotating')) {
2472
+ this.play();
2473
  }
2474
  }, this)
2475
  };
2476
 
2477
+ // register event handlers
2478
+ this._core.$element.on(this._handlers);
2479
+
2480
+ // set default options
2481
+ this._core.options = $.extend({}, Autoplay.Defaults, this._core.options);
2482
  };
2483
 
2484
  /**
2492
  autoplaySpeed: false
2493
  };
2494
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
2495
  /**
2496
  * Starts the autoplay.
2497
  * @public
2498
+ * @param {Number} [timeout] - The interval before the next animation starts.
2499
+ * @param {Number} [speed] - The animation speed for the animations.
 
 
2500
  */
2501
  Autoplay.prototype.play = function(timeout, speed) {
2502
+ this._paused = false;
 
 
 
2503
 
2504
+ if (this._core.is('rotating')) {
 
2505
  return;
2506
  }
2507
 
2508
+ this._core.enter('rotating');
 
 
 
2509
 
2510
+ this._interval = window.setInterval($.proxy(function() {
2511
+ if (this._paused || this._core.is('busy') || this._core.is('interacting') || document.hidden) {
2512
+ return;
2513
+ }
2514
+ this._core.next(speed || this._core.settings.autoplaySpeed);
2515
+ }, this), timeout || this._core.settings.autoplayTimeout);
2516
  };
2517
 
2518
  /**
2520
  * @public
2521
  */
2522
  Autoplay.prototype.stop = function() {
2523
+ if (!this._core.is('rotating')) {
2524
+ return;
2525
+ }
2526
+
2527
+ window.clearInterval(this._interval);
2528
+ this._core.leave('rotating');
2529
  };
2530
 
2531
  /**
2532
+ * Stops the autoplay.
2533
  * @public
2534
  */
2535
  Autoplay.prototype.pause = function() {
2536
+ if (!this._core.is('rotating')) {
2537
+ return;
2538
+ }
2539
+
2540
+ this._paused = true;
2541
  };
2542
 
2543
  /**
2546
  Autoplay.prototype.destroy = function() {
2547
  var handler, property;
2548
 
2549
+ this.stop();
2550
 
2551
+ for (handler in this._handlers) {
2552
+ this._core.$element.off(handler, this._handlers[handler]);
2553
  }
2554
  for (property in Object.getOwnPropertyNames(this)) {
2555
  typeof this[property] != 'function' && (this[property] = null);
2562
 
2563
  /**
2564
  * Navigation Plugin
2565
+ * @version 2.0.0-beta.3
2566
  * @author Artus Kolanowski
2567
  * @license The MIT License (MIT)
2568
  */
2634
  */
2635
  this._handlers = {
2636
  'prepared.owl.carousel': $.proxy(function(e) {
2637
+ if (e.namespace && this._core.settings.dotsData) {
2638
+ this._templates.push('<div class="' + this._core.settings.dotClass + '">' +
2639
+ $(e.content).find('[data-dot]').andSelf('[data-dot]').attr('data-dot') + '</div>');
2640
  }
2641
  }, this),
2642
+ 'added.owl.carousel': $.proxy(function(e) {
2643
+ if (e.namespace && this._core.settings.dotsData) {
2644
+ this._templates.splice(e.position, 0, this._templates.pop());
2645
  }
2646
  }, this),
2647
+ 'remove.owl.carousel': $.proxy(function(e) {
2648
+ if (e.namespace && this._core.settings.dotsData) {
2649
  this._templates.splice(e.position, 1);
2650
  }
2651
  }, this),
 
 
 
 
 
 
 
 
 
 
 
 
2652
  'changed.owl.carousel': $.proxy(function(e) {
2653
+ if (e.namespace && e.property.name == 'position') {
2654
  this.draw();
2655
  }
2656
  }, this),
2657
+ 'initialized.owl.carousel': $.proxy(function(e) {
2658
+ if (e.namespace && !this._initialized) {
2659
+ this._core.trigger('initialize', null, 'navigation');
2660
  this.initialize();
2661
+ this.update();
2662
+ this.draw();
2663
  this._initialized = true;
2664
+ this._core.trigger('initialized', null, 'navigation');
2665
+ }
2666
+ }, this),
2667
+ 'refreshed.owl.carousel': $.proxy(function(e) {
2668
+ if (e.namespace && this._initialized) {
2669
+ this._core.trigger('refresh', null, 'navigation');
2670
+ this.update();
2671
+ this.draw();
2672
+ this._core.trigger('refreshed', null, 'navigation');
2673
  }
 
 
 
 
2674
  }, this)
2675
  };
2676
 
2679
 
2680
  // register event handlers
2681
  this.$element.on(this._handlers);
2682
+ };
2683
 
2684
  /**
2685
  * Default options.
2688
  */
2689
  Navigation.Defaults = {
2690
  nav: false,
 
2691
  navText: [ 'prev', 'next' ],
2692
  navSpeed: false,
2693
  navElement: 'div',
2699
  dotsClass: 'owl-dots',
2700
  dots: true,
2701
  dotsEach: false,
2702
+ dotsData: false,
2703
  dotsSpeed: false,
2704
+ dotsContainer: false
2705
+ };
 
2706
 
2707
  /**
2708
  * Initializes the layout of the plugin and extends the carousel.
2709
  * @protected
2710
  */
2711
  Navigation.prototype.initialize = function() {
2712
+ var override,
2713
+ settings = this._core.settings;
2714
+
2715
+ // create DOM structure for relative navigation
2716
+ this._controls.$relative = (settings.navContainer ? $(settings.navContainer)
2717
+ : $('<div>').addClass(settings.navContainerClass).appendTo(this.$element)).addClass('disabled');
2718
+
2719
+ this._controls.$previous = $('<' + settings.navElement + '>')
2720
+ .addClass(settings.navClass[0])
2721
+ .html(settings.navText[0])
2722
+ .prependTo(this._controls.$relative)
2723
+ .on('click', $.proxy(function(e) {
2724
+ this.prev(settings.navSpeed);
2725
+ }, this));
2726
+ this._controls.$next = $('<' + settings.navElement + '>')
2727
+ .addClass(settings.navClass[1])
2728
+ .html(settings.navText[1])
2729
+ .appendTo(this._controls.$relative)
2730
+ .on('click', $.proxy(function(e) {
2731
+ this.next(settings.navSpeed);
2732
+ }, this));
2733
 
2734
+ // create DOM structure for absolute navigation
2735
+ if (!settings.dotsData) {
2736
  this._templates = [ $('<div>')
2737
+ .addClass(settings.dotClass)
2738
  .append($('<span>'))
2739
  .prop('outerHTML') ];
2740
  }
2741
 
2742
+ this._controls.$absolute = (settings.dotsContainer ? $(settings.dotsContainer)
2743
+ : $('<div>').addClass(settings.dotsClass).appendTo(this.$element)).addClass('disabled');
 
 
 
 
 
 
 
 
2744
 
2745
+ this._controls.$absolute.on('click', 'div', $.proxy(function(e) {
2746
+ var index = $(e.target).parent().is(this._controls.$absolute)
2747
  ? $(e.target).index() : $(e.target).parent().index();
2748
 
2749
  e.preventDefault();
2750
 
2751
+ this.to(index, settings.dotsSpeed);
2752
  }, this));
2753
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
2754
  // override public methods of the carousel
2755
  for (override in this._overrides) {
2756
  this._core[override] = $.proxy(this[override], this);
2757
  }
2758
+ };
2759
 
2760
  /**
2761
  * Destroys the plugin.
2776
  for (property in Object.getOwnPropertyNames(this)) {
2777
  typeof this[property] != 'function' && (this[property] = null);
2778
  }
2779
+ };
2780
 
2781
  /**
2782
  * Updates the internal state.
2784
  */
2785
  Navigation.prototype.update = function() {
2786
  var i, j, k,
 
2787
  lower = this._core.clones().length / 2,
2788
  upper = lower + this._core.items().length,
2789
+ maximum = this._core.maximum(true),
2790
+ settings = this._core.settings,
2791
+ size = settings.center || settings.autoWidth || settings.dotsData
2792
+ ? 1 : settings.dotsEach || settings.items;
2793
 
2794
+ if (settings.slideBy !== 'page') {
2795
+ settings.slideBy = Math.min(settings.slideBy, settings.items);
2796
  }
2797
 
2798
+ if (settings.dots || settings.slideBy == 'page') {
2799
  this._pages = [];
2800
 
2801
  for (i = lower, j = 0, k = 0; i < upper; i++) {
2802
  if (j >= size || j === 0) {
2803
  this._pages.push({
2804
+ start: Math.min(maximum, i - lower),
2805
  end: i - lower + size - 1
2806
  });
2807
+ if (Math.min(maximum, i - lower) === maximum) {
2808
+ break;
2809
+ }
2810
  j = 0, ++k;
2811
  }
2812
  j += this._core.mergers(this._core.relative(i));
2813
  }
2814
  }
2815
+ };
2816
 
2817
  /**
2818
  * Draws the user interface.
2819
+ * @todo The option `dotsData` wont work.
2820
  * @protected
2821
  */
2822
  Navigation.prototype.draw = function() {
2823
+ var difference,
2824
+ settings = this._core.settings,
2825
+ disabled = this._core.items().length <= settings.items,
2826
+ index = this._core.relative(this._core.current()),
2827
+ loop = settings.loop || settings.rewind;
2828
+
2829
+ this._controls.$relative.toggleClass('disabled', !settings.nav || disabled);
2830
 
2831
+ if (settings.nav) {
2832
+ this._controls.$previous.toggleClass('disabled', !loop && index <= this._core.minimum(true));
2833
+ this._controls.$next.toggleClass('disabled', !loop && index >= this._core.maximum(true));
2834
  }
2835
 
2836
+ this._controls.$absolute.toggleClass('disabled', !settings.dots || disabled);
 
2837
 
2838
+ if (settings.dots) {
2839
+ difference = this._pages.length - this._controls.$absolute.children().length;
2840
 
2841
+ if (settings.dotsData && difference !== 0) {
2842
+ this._controls.$absolute.html(this._templates.join(''));
 
 
 
2843
  } else if (difference > 0) {
2844
+ this._controls.$absolute.append(new Array(difference + 1).join(this._templates[0]));
 
2845
  } else if (difference < 0) {
2846
+ this._controls.$absolute.children().slice(difference).remove();
2847
  }
2848
 
2849
+ this._controls.$absolute.find('.active').removeClass('active');
2850
+ this._controls.$absolute.children().eq($.inArray(this.current(), this._pages)).addClass('active');
2851
  }
2852
+ };
 
 
2853
 
2854
  /**
2855
  * Extends event data.
2862
  event.page = {
2863
  index: $.inArray(this.current(), this._pages),
2864
  count: this._pages.length,
2865
+ size: settings && (settings.center || settings.autoWidth || settings.dotsData
2866
  ? 1 : settings.dotsEach || settings.items)
2867
  };
2868
+ };
2869
 
2870
  /**
2871
  * Gets the current page position of the carousel.
2873
  * @returns {Number}
2874
  */
2875
  Navigation.prototype.current = function() {
2876
+ var current = this._core.relative(this._core.current());
2877
+ return $.grep(this._pages, $.proxy(function(page, index) {
2878
+ return page.start <= current && page.end >= current;
2879
+ }, this)).pop();
2880
+ };
2881
 
2882
  /**
2883
  * Gets the current succesor/predecessor position.
2886
  */
2887
  Navigation.prototype.getPosition = function(successor) {
2888
  var position, length,
2889
+ settings = this._core.settings;
2890
 
2891
+ if (settings.slideBy == 'page') {
2892
  position = $.inArray(this.current(), this._pages);
2893
  length = this._pages.length;
2894
  successor ? ++position : --position;
2896
  } else {
2897
  position = this._core.relative(this._core.current());
2898
  length = this._core.items().length;
2899
+ successor ? position += settings.slideBy : position -= settings.slideBy;
2900
  }
2901
+
2902
  return position;
2903
+ };
2904
 
2905
  /**
2906
  * Slides to the next item or page.
2909
  */
2910
  Navigation.prototype.next = function(speed) {
2911
  $.proxy(this._overrides.to, this._core)(this.getPosition(true), speed);
2912
+ };
2913
 
2914
  /**
2915
  * Slides to the previous item or page.
2918
  */
2919
  Navigation.prototype.prev = function(speed) {
2920
  $.proxy(this._overrides.to, this._core)(this.getPosition(false), speed);
2921
+ };
2922
 
2923
  /**
2924
  * Slides to the specified item or page.
2936
  } else {
2937
  $.proxy(this._overrides.to, this._core)(position, speed);
2938
  }
2939
+ };
2940
 
2941
  $.fn.owlCarousel.Constructor.Plugins.Navigation = Navigation;
2942
 
2944
 
2945
  /**
2946
  * Hash Plugin
2947
+ * @version 2.0.0-beta.3
2948
  * @author Artus Kolanowski
2949
  * @license The MIT License (MIT)
2950
  */
2965
  this._core = carousel;
2966
 
2967
  /**
2968
+ * Hash index for the items.
2969
  * @protected
2970
  * @type {Object}
2971
  */
2983
  * @type {Object}
2984
  */
2985
  this._handlers = {
2986
+ 'initialized.owl.carousel': $.proxy(function(e) {
2987
+ if (e.namespace && this._core.settings.startPosition === 'URLHash') {
2988
  $(window).trigger('hashchange.owl.navigation');
2989
  }
2990
  }, this),
2991
  'prepared.owl.carousel': $.proxy(function(e) {
2992
+ if (e.namespace) {
2993
+ var hash = $(e.content).find('[data-hash]').andSelf('[data-hash]').attr('data-hash');
2994
+
2995
+ if (!hash) {
2996
+ return;
2997
+ }
2998
+
2999
+ this._hashes[hash] = e.content;
3000
+ }
3001
+ }, this),
3002
+ 'changed.owl.carousel': $.proxy(function(e) {
3003
+ if (e.namespace && e.property.name === 'position') {
3004
+ var current = this._core.items(this._core.relative(this._core.current())),
3005
+ hash = $.map(this._hashes, function(item, hash) {
3006
+ return item === current ? hash : null;
3007
+ }).join();
3008
+
3009
+ if (!hash || window.location.hash.slice(1) === hash) {
3010
+ return;
3011
+ }
3012
+
3013
+ window.location.hash = hash;
3014
+ }
3015
  }, this)
3016
  };
3017
 
3022
  this.$element.on(this._handlers);
3023
 
3024
  // register event listener for hash navigation
3025
+ $(window).on('hashchange.owl.navigation', $.proxy(function(e) {
3026
  var hash = window.location.hash.substring(1),
3027
  items = this._core.$stage.children(),
3028
+ position = this._hashes[hash] && items.index(this._hashes[hash]);
3029
 
3030
+ if (position === undefined || position === this._core.current()) {
3031
+ return;
3032
  }
3033
 
3034
+ this._core.to(this._core.relative(position), false, true);
3035
  }, this));
3036
+ };
3037
 
3038
  /**
3039
  * Default options.
3041
  */
3042
  Hash.Defaults = {
3043
  URLhashListener: false
3044
+ };
3045
 
3046
  /**
3047
  * Destroys the plugin.
3058
  for (property in Object.getOwnPropertyNames(this)) {
3059
  typeof this[property] != 'function' && (this[property] = null);
3060
  }
3061
+ };
3062
 
3063
  $.fn.owlCarousel.Constructor.Plugins.Hash = Hash;
3064
 
3065
  })(window.Zepto || window.jQuery, window, document);
3066
+
3067
+ /**
3068
+ * Support Plugin
3069
+ *
3070
+ * @version 2.0.0-beta.3
3071
+ * @author Vivid Planet Software GmbH
3072
+ * @author Artus Kolanowski
3073
+ * @license The MIT License (MIT)
3074
+ */
3075
+ ;(function($, window, document, undefined) {
3076
+
3077
+ var style = $('<support>').get(0).style,
3078
+ prefixes = 'Webkit Moz O ms'.split(' '),
3079
+ events = {
3080
+ transition: {
3081
+ end: {
3082
+ WebkitTransition: 'webkitTransitionEnd',
3083
+ MozTransition: 'transitionend',
3084
+ OTransition: 'oTransitionEnd',
3085
+ transition: 'transitionend'
3086
+ }
3087
+ },
3088
+ animation: {
3089
+ end: {
3090
+ WebkitAnimation: 'webkitAnimationEnd',
3091
+ MozAnimation: 'animationend',
3092
+ OAnimation: 'oAnimationEnd',
3093
+ animation: 'animationend'
3094
+ }
3095
+ }
3096
+ },
3097
+ tests = {
3098
+ csstransforms: function() {
3099
+ return !!test('transform');
3100
+ },
3101
+ csstransforms3d: function() {
3102
+ return !!test('perspective');
3103
+ },
3104
+ csstransitions: function() {
3105
+ return !!test('transition');
3106
+ },
3107
+ cssanimations: function() {
3108
+ return !!test('animation');
3109
+ }
3110
+ };
3111
+
3112
+ function test(property, prefixed) {
3113
+ var result = false,
3114
+ upper = property.charAt(0).toUpperCase() + property.slice(1);
3115
+
3116
+ $.each((property + ' ' + prefixes.join(upper + ' ') + upper).split(' '), function(i, property) {
3117
+ if (style[property] !== undefined) {
3118
+ result = prefixed ? property : true;
3119
+ return false;
3120
+ }
3121
+ });
3122
+
3123
+ return result;
3124
+ }
3125
+
3126
+ function prefixed(property) {
3127
+ return test(property, true);
3128
+ }
3129
+
3130
+ if (tests.csstransitions()) {
3131
+ /* jshint -W053 */
3132
+ $.support.transition = new String(prefixed('transition'))
3133
+ $.support.transition.end = events.transition.end[ $.support.transition ];
3134
+ }
3135
+
3136
+ if (tests.cssanimations()) {
3137
+ /* jshint -W053 */
3138
+ $.support.animation = new String(prefixed('animation'))
3139
+ $.support.animation.end = events.animation.end[ $.support.animation ];
3140
+ }
3141
+
3142
+ if (tests.csstransforms()) {
3143
+ /* jshint -W053 */
3144
+ $.support.transform = new String(prefixed('transform'));
3145
+ $.support.transform3d = tests.csstransforms3d();
3146
+ }
3147
+
3148
+ })(window.Zepto || window.jQuery, window, document);
themes/foundation/modules/owlcarousel/owl.carousel.min.js CHANGED
@@ -1 +1,2 @@
1
- (function(a,d,l,g){var b,k,c;b={start:0,startX:0,startY:0,current:0,currentX:0,currentY:0,offsetX:0,offsetY:0,distance:null,startTime:0,endTime:0,updatedX:0,targetEl:null};k={isTouch:false,isScrolling:false,isSwiping:false,direction:false,inMotion:false};c={_onDragStart:null,_onDragMove:null,_onDragEnd:null,_transitionEnd:null,_resizer:null,_responsiveCall:null,_goToLoop:null,_checkVisibile:null};function h(q,e){this.settings=null;this.options=a.extend({},h.Defaults,e);this.$element=a(q);this.drag=a.extend({},b);this.state=a.extend({},k);this.e=a.extend({},c);this._plugins={};this._supress={};this._current=null;this._speed=null;this._coordinates=[];this._breakpoint=null;this._width=null;this._items=[];this._clones=[];this._mergers=[];this._invalidated={};this._pipe=[];a.each(h.Plugins,a.proxy(function(s,r){this._plugins[s[0].toLowerCase()+s.slice(1)]=new r(this)},this));a.each(h.Pipe,a.proxy(function(s,r){this._pipe.push({filter:r.filter,run:a.proxy(r.run,this)})},this));this.setup();this.initialize()}h.Defaults={items:3,loop:false,center:false,mouseDrag:true,touchDrag:true,pullDrag:true,freeDrag:false,margin:0,stagePadding:0,merge:false,mergeFit:true,autoWidth:false,startPosition:0,rtl:false,smartSpeed:250,fluidSpeed:false,dragEndSpeed:false,responsive:{},responsiveRefreshRate:200,responsiveBaseElement:d,responsiveClass:false,fallbackEasing:"swing",info:false,nestedItemSelector:false,itemElement:"div",stageElement:"div",themeClass:"owl-theme",baseClass:"owl-carousel",itemClass:"owl-item",centerClass:"center",activeClass:"active"};h.Width={Default:"default",Inner:"inner",Outer:"outer"};h.Plugins={};h.Pipe=[{filter:["width","items","settings"],run:function(e){e.current=this._items&&this._items[this.relative(this._current)]}},{filter:["items","settings"],run:function(){var e=this._clones,q=this.$stage.children(".cloned");if(q.length!==e.length||(!this.settings.loop&&e.length>0)){this.$stage.children(".cloned").remove();this._clones=[]}}},{filter:["items","settings"],run:function(){var q,r,t=this._clones,e=this._items,s=this.settings.loop?t.length-Math.max(this.settings.items*2,4):0;for(q=0,r=Math.abs(s/2);q<r;q++){if(s>0){this.$stage.children().eq(e.length+t.length-1).remove();t.pop();this.$stage.children().eq(0).remove();t.pop()}else{t.push(t.length/2);this.$stage.append(e[t[t.length-1]].clone().addClass("cloned"));t.push(e.length-1-(t.length-1)/2);this.$stage.prepend(e[t[t.length-1]].clone().addClass("cloned"))}}}},{filter:["width","items","settings"],run:function(){var r=(this.settings.rtl?1:-1),u=(this.width()/this.settings.items).toFixed(3),e=0,q,s,t;this._coordinates=[];for(s=0,t=this._clones.length+this._items.length;s<t;s++){q=this._mergers[this.relative(s)];q=(this.settings.mergeFit&&Math.min(q,this.settings.items))||q;e+=(this.settings.autoWidth?this._items[this.relative(s)].width()+this.settings.margin:u*q)*r;this._coordinates.push(e)}}},{filter:["width","items","settings"],run:function(){var q,r,e=(this.width()/this.settings.items).toFixed(3),s={width:Math.abs(this._coordinates[this._coordinates.length-1])+this.settings.stagePadding*1,};s[this.settings.rtl?"padding-left":"padding-right"]=this.settings.stagePadding;this.$stage.css(s);s={width:this.settings.autoWidth?"auto":e-this.settings.margin};s[this.settings.rtl?"margin-left":"margin-right"]=this.settings.margin;if(!this.settings.autoWidth&&a.grep(this._mergers,function(t){return t>1}).length>0){for(q=0,r=this._coordinates.length;q<r;q++){s.width=Math.abs(this._coordinates[q])-Math.abs(this._coordinates[q-1]||0)-this.settings.margin;this.$stage.children().eq(q).css(s)}}else{this.$stage.children().css(s)}}},{filter:["width","items","settings"],run:function(e){e.current&&this.reset(this.$stage.children().index(e.current))}},{filter:["position"],run:function(){this.animate(this.coordinates(this._current))}},{filter:["width","position","items","settings"],run:function(){var v=this.settings.rtl?1:-1,e=this.settings.stagePadding*1,s=this.coordinates(this.current())+e,u=s+this.width()*v,x,q,r=[],w,t;for(w=0,t=this._coordinates.length;w<t;w++){x=this._coordinates[w-1]||0;q=Math.abs(this._coordinates[w])+e*v;if((this.op(x,"<=",s)&&(this.op(x,">",u)))||(this.op(q,"<",s)&&this.op(q,">",u))){r.push(w)}}this.$stage.children("."+this.settings.activeClass).removeClass(this.settings.activeClass);this.$stage.children(":eq("+r.join("), :eq(")+")").addClass(this.settings.activeClass);if(this.settings.center){this.$stage.children("."+this.settings.centerClass).removeClass(this.settings.centerClass);this.$stage.children().eq(this.current()).addClass(this.settings.centerClass)}}}];h.prototype.initialize=function(){this.trigger("initialize");this.$element.addClass(this.settings.baseClass).addClass(this.settings.themeClass).toggleClass("owl-rtl",this.settings.rtl);this.browserSupport();if(this.settings.autoWidth&&this.state.imagesLoaded!==true){var q,e,r;q=this.$element.find("img");e=this.settings.nestedItemSelector?"."+this.settings.nestedItemSelector:g;r=this.$element.children(e).width();if(q.length&&r<=0){this.preloadAutoWidthImages(q);return false}}this.$element.addClass("owl-loading");this.$stage=a("<"+this.settings.stageElement+' class="owl-stage"/>').wrap('<div class="owl-stage-outer">');this.$element.append(this.$stage.parent());this.replace(this.$element.children().not(this.$stage.parent()));this._width=this.$element.width();this.refresh();this.$element.removeClass("owl-loading").addClass("owl-loaded");this.eventsCall();this.internalEvents();this.addTriggerableEvents();this.trigger("initialized")};h.prototype.setup=function(){var q=this.viewport(),r=this.options.responsive,s=-1,e=null;if(!r){e=a.extend({},this.options)}else{a.each(r,function(t){if(t<=q&&t>s){s=Number(t)}});e=a.extend({},this.options,r[s]);delete e.responsive;if(e.responsiveClass){this.$element.attr("class",function(t,u){return u.replace(/\b owl-responsive-\S+/g,"")}).addClass("owl-responsive-"+s)}}if(this.settings===null||this._breakpoint!==s){this.trigger("change",{property:{name:"settings",value:e}});this._breakpoint=s;this.settings=e;this.invalidate("settings");this.trigger("changed",{property:{name:"settings",value:this.settings}})}};h.prototype.optionsLogic=function(){this.$element.toggleClass("owl-center",this.settings.center);if(this.settings.loop&&this._items.length<this.settings.items){this.settings.loop=false}if(this.settings.autoWidth){this.settings.stagePadding=false;this.settings.merge=false}};h.prototype.prepare=function(q){var e=this.trigger("prepare",{content:q});if(!e.data){e.data=a("<"+this.settings.itemElement+"/>").addClass(this.settings.itemClass).append(q)}this.trigger("prepared",{content:e.data});return e.data};h.prototype.update=function(){var q=0,r=this._pipe.length,s=a.proxy(function(t){return this[t]},this._invalidated),e={};while(q<r){if(this._invalidated.all||a.grep(this._pipe[q].filter,s).length>0){this._pipe[q].run(e)}q++}this._invalidated={}};h.prototype.width=function(e){e=e||h.Width.Default;switch(e){case h.Width.Inner:case h.Width.Outer:return this._width;default:return this._width-this.settings.stagePadding*1+this.settings.margin}};h.prototype.refresh=function(){if(this._items.length===0){return false}var e=new Date().getTime();this.trigger("refresh");this.setup();this.optionsLogic();this.$stage.addClass("owl-refresh");this.update();this.$stage.removeClass("owl-refresh");this.state.orientation=d.orientation;this.watchVisibility();this.trigger("refreshed")};h.prototype.eventsCall=function(){this.e._onDragStart=a.proxy(function(q){this.onDragStart(q)},this);this.e._onDragMove=a.proxy(function(q){this.onDragMove(q)},this);this.e._onDragEnd=a.proxy(function(q){this.onDragEnd(q)},this);this.e._onResize=a.proxy(function(q){this.onResize(q)},this);this.e._transitionEnd=a.proxy(function(q){this.transitionEnd(q)},this);this.e._preventClick=a.proxy(function(q){this.preventClick(q)},this)};h.prototype.onThrottledResize=function(){d.clearTimeout(this.resizeTimer);this.resizeTimer=d.setTimeout(this.e._onResize,this.settings.responsiveRefreshRate)};h.prototype.onResize=function(){if(!this._items.length){return false}if(this._width===this.$element.width()){return false}if(this.trigger("resize").isDefaultPrevented()){return false}this._width=this.$element.width();this.invalidate("width");this.refresh();this.trigger("resized")};h.prototype.eventsRouter=function(q){var e=q.type;if(e==="mousedown"||e==="touchstart"){this.onDragStart(q)}else{if(e==="mousemove"||e==="touchmove"){this.onDragMove(q)}else{if(e==="mouseup"||e==="touchend"){this.onDragEnd(q)}else{if(e==="touchcancel"){this.onDragEnd(q)}}}}};h.prototype.internalEvents=function(){var q=n(),e=m();if(this.settings.mouseDrag){this.$stage.on("mousedown",a.proxy(function(r){this.eventsRouter(r)},this));this.$stage.on("dragstart",function(){return false});this.$stage.get(0).onselectstart=function(){return false}}else{this.$element.addClass("owl-text-select-on")}if(this.settings.touchDrag&&!e){this.$stage.on("touchstart touchcancel",a.proxy(function(r){this.eventsRouter(r)},this))}if(this.transitionEndVendor){this.on(this.$stage.get(0),this.transitionEndVendor,this.e._transitionEnd,false)}if(this.settings.responsive!==false){this.on(d,"resize",a.proxy(this.onThrottledResize,this))}};h.prototype.onDragStart=function(e){var u,t,s,r,q;u=e.originalEvent||e||d.event;if(u.which===3||this.state.isTouch){return false}if(u.type==="mousedown"){this.$stage.addClass("owl-grab")}this.trigger("drag");this.drag.startTime=new Date().getTime();this.speed(0);this.state.isTouch=true;this.state.isScrolling=false;this.state.isSwiping=false;this.drag.distance=0;s=j(u).x;r=j(u).y;this.drag.offsetX=this.$stage.position().left;this.drag.offsetY=this.$stage.position().top;if(this.settings.rtl){this.drag.offsetX=this.$stage.position().left+this.$stage.width()-this.width()+this.settings.margin}if(this.state.inMotion&&this.support3d){q=this.getTransformProperty();this.drag.offsetX=q;this.animate(q);this.state.inMotion=true}else{if(this.state.inMotion&&!this.support3d){this.state.inMotion=false;return false}}this.drag.startX=s-this.drag.offsetX;this.drag.startY=r-this.drag.offsetY;this.drag.start=s-this.drag.startX;this.drag.targetEl=u.target||u.srcElement;this.drag.updatedX=this.drag.start;if(this.drag.targetEl.tagName==="IMG"||this.drag.targetEl.tagName==="A"){this.drag.targetEl.draggable=false}a(l).on("mousemove.owl.dragEvents mouseup.owl.dragEvents touchmove.owl.dragEvents touchend.owl.dragEvents",a.proxy(function(v){this.eventsRouter(v)},this))};h.prototype.onDragMove=function(e){var v,u,s,r,t,w,q;if(!this.state.isTouch){return}if(this.state.isScrolling){return}v=e.originalEvent||e||d.event;s=j(v).x;r=j(v).y;this.drag.currentX=s-this.drag.startX;this.drag.currentY=r-this.drag.startY;this.drag.distance=this.drag.currentX-this.drag.offsetX;if(this.drag.distance<0){this.state.direction=this.settings.rtl?"right":"left"}else{if(this.drag.distance>0){this.state.direction=this.settings.rtl?"left":"right"}}if(this.settings.loop){if(this.op(this.drag.currentX,">",this.coordinates(this.minimum()))&&this.state.direction==="right"){this.drag.currentX-=(this.settings.center&&this.coordinates(0))-this.coordinates(this._items.length)}else{if(this.op(this.drag.currentX,"<",this.coordinates(this.maximum()))&&this.state.direction==="left"){this.drag.currentX+=(this.settings.center&&this.coordinates(0))-this.coordinates(this._items.length)}}}else{t=this.settings.rtl?this.coordinates(this.maximum()):this.coordinates(this.minimum());w=this.settings.rtl?this.coordinates(this.minimum()):this.coordinates(this.maximum());q=this.settings.pullDrag?this.drag.distance/5:0;this.drag.currentX=Math.max(Math.min(this.drag.currentX,t+q),w+q)}if((this.drag.distance>8||this.drag.distance<-8)){if(v.preventDefault!==g){v.preventDefault()}else{v.returnValue=false}this.state.isSwiping=true}this.drag.updatedX=this.drag.currentX;if((this.drag.currentY>16||this.drag.currentY<-16)&&this.state.isSwiping===false){this.state.isScrolling=true;this.drag.updatedX=this.drag.start}this.animate(this.drag.updatedX)};h.prototype.onDragEnd=function(q){var r,e,s;if(!this.state.isTouch){return}if(q.type==="mouseup"){this.$stage.removeClass("owl-grab")}this.trigger("dragged");this.drag.targetEl.removeAttribute("draggable");this.state.isTouch=false;this.state.isScrolling=false;this.state.isSwiping=false;if(this.drag.distance===0&&this.state.inMotion!==true){this.state.inMotion=false;return false}this.drag.endTime=new Date().getTime();r=this.drag.endTime-this.drag.startTime;e=Math.abs(this.drag.distance);if(e>3||r>300){this.removeClick(this.drag.targetEl)}s=this.closest(this.drag.updatedX);this.speed(this.settings.dragEndSpeed||this.settings.smartSpeed);this.current(s);this.invalidate("position");this.update();if(!this.settings.pullDrag&&this.drag.updatedX===this.coordinates(s)){this.transitionEnd()}this.drag.distance=0;a(l).off(".owl.dragEvents")};h.prototype.removeClick=function(e){this.drag.targetEl=e;a(e).on("click.preventClick",this.e._preventClick);d.setTimeout(function(){a(e).off("click.preventClick")},300)};h.prototype.preventClick=function(e){if(e.preventDefault){e.preventDefault()}else{e.returnValue=false}if(e.stopPropagation){e.stopPropagation()}a(e.target).off("click.preventClick")};h.prototype.getTransformProperty=function(){var e,q;e=d.getComputedStyle(this.$stage.get(0),null).getPropertyValue(this.vendorName+"transform");e=e.replace(/matrix(3d)?\(|\)/g,"").split(",");q=e.length===16;return q!==true?e[4]:e[12]};h.prototype.closest=function(t){var s=-1,e=30,q=this.width(),r=this.coordinates();if(!this.settings.freeDrag){a.each(r,a.proxy(function(v,u){if(t>u-e&&t<u+e){s=v}else{if(this.op(t,"<",u)&&this.op(t,">",r[v+1]||u-q)){s=this.state.direction==="left"?v+1:v}}return s===-1},this))}if(!this.settings.loop){if(this.op(t,">",r[this.minimum()])){s=t=this.minimum()}else{if(this.op(t,"<",r[this.maximum()])){s=t=this.maximum()}}}return s};h.prototype.animate=function(e){this.trigger("translate");this.state.inMotion=this.speed()>0;if(this.support3d){this.$stage.css({transform:"translate3d("+e+"px,0px, 0px)",transition:(this.speed()/1000)+"s"})}else{if(this.state.isTouch){this.$stage.css({left:e+"px"})}else{this.$stage.animate({left:e},this.speed()/1000,this.settings.fallbackEasing,a.proxy(function(){if(this.state.inMotion){this.transitionEnd()}},this))}}};h.prototype.current=function(e){if(e===g){return this._current}if(this._items.length===0){return g}e=this.normalize(e);if(this._current!==e){var q=this.trigger("change",{property:{name:"position",value:e}});if(q.data!==g){e=this.normalize(q.data)}this._current=e;this.invalidate("position");this.trigger("changed",{property:{name:"position",value:this._current}})}return this._current};h.prototype.invalidate=function(e){this._invalidated[e]=true};h.prototype.reset=function(e){e=this.normalize(e);if(e===g){return}this._speed=0;this._current=e;this.suppress(["translate","translated"]);this.animate(this.coordinates(e));this.release(["translate","translated"])};h.prototype.normalize=function(r,e){var q=(e?this._items.length:this._items.length+this._clones.length);if(!a.isNumeric(r)||q<1){return g}if(this._clones.length){r=((r%q)+q)%q}else{r=Math.max(this.minimum(e),Math.min(this.maximum(e),r))}return r};h.prototype.relative=function(e){e=this.normalize(e);e=e-this._clones.length/2;return this.normalize(e,true)};h.prototype.maximum=function(u){var r,t,s=0,e,q=this.settings;if(u){return this._items.length-1}if(!q.loop&&q.center){r=this._items.length-1}else{if(!q.loop&&!q.center){r=this._items.length-q.items}else{if(q.loop||q.center){r=this._items.length+q.items}else{if(q.autoWidth||q.merge){revert=q.rtl?1:-1;t=this.$stage.width()-this.$element.width();while(e=this.coordinates(s)){if(e*revert>=t){break}r=++s}}else{throw"Can not detect maximum absolute position."}}}}return r};h.prototype.minimum=function(e){if(e){return 0}return this._clones.length/2};h.prototype.items=function(e){if(e===g){return this._items.slice()}e=this.normalize(e,true);return this._items[e]};h.prototype.mergers=function(e){if(e===g){return this._mergers.slice()}e=this.normalize(e,true);return this._mergers[e]};h.prototype.clones=function(s){var q=this._clones.length/2,r=q+this._items.length,e=function(t){return t%2===0?r+t/2:q-(t+1)/2};if(s===g){return a.map(this._clones,function(u,t){return e(t)})}return a.map(this._clones,function(u,t){return u===s?e(t):null})};h.prototype.speed=function(e){if(e!==g){this._speed=e}return this._speed};h.prototype.coordinates=function(e){var q=null;if(e===g){return a.map(this._coordinates,a.proxy(function(s,r){return this.coordinates(r)},this))}if(this.settings.center){q=this._coordinates[e];q+=(this.width()-q+(this._coordinates[e-1]||0))/2*(this.settings.rtl?-1:1)}else{q=this._coordinates[e-1]||0}return q};h.prototype.duration=function(e,q,r){return Math.min(Math.max(Math.abs(q-e),1),6)*Math.abs((r||this.settings.smartSpeed))};h.prototype.to=function(s,e){if(this.settings.loop){var w=s-this.relative(this.current()),v=this.current(),q=this.current(),t=this.current()+w,r=q-t<0?true:false,u=this._clones.length+this._items.length;if(t<this.settings.items&&r===false){v=q+this._items.length;this.reset(v)}else{if(t>=u-this.settings.items&&r===true){v=q-this._items.length;this.reset(v)}}d.clearTimeout(this.e._goToLoop);this.e._goToLoop=d.setTimeout(a.proxy(function(){this.speed(this.duration(this.current(),v+w,e));this.current(v+w);this.update()},this),30)}else{this.speed(this.duration(this.current(),s,e));this.current(s);this.update()}};h.prototype.next=function(e){e=e||false;this.to(this.relative(this.current())+1,e)};h.prototype.prev=function(e){e=e||false;this.to(this.relative(this.current())-1,e)};h.prototype.transitionEnd=function(e){if(e!==g){e.stopPropagation();if((e.target||e.srcElement||e.originalTarget)!==this.$stage.get(0)){return false}}this.state.inMotion=false;this.trigger("translated")};h.prototype.viewport=function(){var e;if(this.options.responsiveBaseElement!==d){e=a(this.options.responsiveBaseElement).width()}else{if(d.innerWidth){e=d.innerWidth}else{if(l.documentElement&&l.documentElement.clientWidth){e=l.documentElement.clientWidth}else{throw"Can not detect viewport width."}}}return e};h.prototype.replace=function(e){this.$stage.empty();this._items=[];if(e){e=(e instanceof jQuery)?e:a(e)}if(this.settings.nestedItemSelector){e=e.find("."+this.settings.nestedItemSelector)}e.filter(function(){return this.nodeType===1}).each(a.proxy(function(r,q){q=this.prepare(q);this.$stage.append(q);this._items.push(q);this._mergers.push(q.find("[data-merge]").andSelf("[data-merge]").attr("data-merge")*1||1)},this));this.reset(a.isNumeric(this.settings.startPosition)?this.settings.startPosition:0);this.invalidate("items")};h.prototype.add=function(q,e){e=e===g?this._items.length:this.normalize(e,true);this.trigger("add",{content:q,position:e});if(this._items.length===0||e===this._items.length){this.$stage.append(q);this._items.push(q);this._mergers.push(q.find("[data-merge]").andSelf("[data-merge]").attr("data-merge")*1||1)}else{this._items[e].before(q);this._items.splice(e,0,q);this._mergers.splice(e,0,q.find("[data-merge]").andSelf("[data-merge]").attr("data-merge")*1||1)}this.invalidate("items");this.trigger("added",{content:q,position:e})};h.prototype.remove=function(e){e=this.normalize(e,true);if(e===g){return}this.trigger("remove",{content:this._items[e],position:e});this._items[e].remove();this._items.splice(e,1);this._mergers.splice(e,1);this.invalidate("items");this.trigger("removed",{content:null,position:e})};h.prototype.addTriggerableEvents=function(){var e=a.proxy(function(r,q){return a.proxy(function(s){if(s.relatedTarget!==this){this.suppress([q]);r.apply(this,[].slice.call(arguments,1));this.release([q])}},this)},this);a.each({next:this.next,prev:this.prev,to:this.to,destroy:this.destroy,refresh:this.refresh,replace:this.replace,add:this.add,remove:this.remove},a.proxy(function(q,r){this.$element.on(q+".owl.carousel",e(r,q+".owl.carousel"))},this))};h.prototype.watchVisibility=function(){if(!q(this.$element.get(0))){this.$element.addClass("owl-hidden");d.clearInterval(this.e._checkVisibile);this.e._checkVisibile=d.setInterval(a.proxy(e,this),500)}function q(r){return r.offsetWidth>0&&r.offsetHeight>0}function e(){if(q(this.$element.get(0))){this.$element.removeClass("owl-hidden");this.refresh();d.clearInterval(this.e._checkVisibile)}}};h.prototype.preloadAutoWidthImages=function(e){var t,q,r,s;t=0;q=this;e.each(function(u,v){r=a(v);s=new Image();s.onload=function(){t++;r.attr("src",s.src);r.css("opacity",1);if(t>=e.length){q.state.imagesLoaded=true;q.initialize()}};s.src=r.attr("src")||r.attr("data-src")||r.attr("data-src-retina")})};h.prototype.destroy=function(){if(this.$element.hasClass(this.settings.themeClass)){this.$element.removeClass(this.settings.themeClass)}if(this.settings.responsive!==false){a(d).off("resize.owl.carousel")}if(this.transitionEndVendor){this.off(this.$stage.get(0),this.transitionEndVendor,this.e._transitionEnd)}for(var e in this._plugins){this._plugins[e].destroy()}if(this.settings.mouseDrag||this.settings.touchDrag){this.$stage.off("mousedown touchstart touchcancel");a(l).off(".owl.dragEvents");this.$stage.get(0).onselectstart=function(){};this.$stage.off("dragstart",function(){return false})}this.$element.off(".owl");this.$stage.children(".cloned").remove();this.e=null;this.$element.removeData("owlCarousel");this.$stage.children().contents().unwrap();this.$stage.children().unwrap();this.$stage.unwrap()};h.prototype.op=function(r,s,e){var q=this.settings.rtl;switch(s){case"<":return q?r>e:r<e;case">":return q?r<e:r>e;case">=":return q?r<=e:r>=e;case"<=":return q?r>=e:r<=e;default:break}};h.prototype.on=function(e,r,q,s){if(e.addEventListener){e.addEventListener(r,q,s)}else{if(e.attachEvent){e.attachEvent("on"+r,q)}}};h.prototype.off=function(e,r,q,s){if(e.removeEventListener){e.removeEventListener(r,q,s)}else{if(e.detachEvent){e.detachEvent("on"+r,q)}}};h.prototype.trigger=function(r,q,s){var t={item:{count:this._items.length,index:this.current()}},u=a.camelCase(a.grep(["on",r,s],function(w){return w}).join("-").toLowerCase()),e=a.Event([r,"owl",s||"carousel"].join(".").toLowerCase(),a.extend({relatedTarget:this},t,q));if(!this._supress[r]){a.each(this._plugins,function(w,v){if(v.onTrigger){v.onTrigger(e)}});this.$element.trigger(e);if(this.settings&&typeof this.settings[u]==="function"){this.settings[u].apply(this,e)}}return e};h.prototype.suppress=function(e){a.each(e,a.proxy(function(r,q){this._supress[q]=true},this))};h.prototype.release=function(e){a.each(e,a.proxy(function(r,q){delete this._supress[q]},this))};h.prototype.browserSupport=function(){this.support3d=p();if(this.support3d){this.transformVendor=o();var e=["transitionend","webkitTransitionEnd","transitionend","oTransitionEnd"];this.transitionEndVendor=e[i()];this.vendorName=this.transformVendor.replace(/Transform/i,"");this.vendorName=this.vendorName!==""?"-"+this.vendorName.toLowerCase()+"-":""}this.state.orientation=d.orientation};function j(e){if(e.touches!==g){return{x:e.touches[0].pageX,y:e.touches[0].pageY}}if(e.touches===g){if(e.pageX!==g){return{x:e.pageX,y:e.pageY}}if(e.pageX===g){return{x:e.clientX,y:e.clientY}}}}function f(q){var u,e,t=l.createElement("div"),r=q;for(u in r){e=r[u];if(typeof t.style[e]!=="undefined"){t=null;return[e,u]}}return[false]}function i(){return f(["transition","WebkitTransition","MozTransition","OTransition"])[1]}function o(){return f(["transform","WebkitTransform","MozTransform","OTransform","msTransform"])[0]}function p(){return f(["perspective","webkitPerspective","MozPerspective","OPerspective","MsPerspective"])[0]}function n(){return"ontouchstart" in d||!!(navigator.msMaxTouchPoints)}function m(){return d.navigator.msPointerEnabled}a.fn.owlCarousel=function(e){return this.each(function(){if(!a(this).data("owlCarousel")){a(this).data("owlCarousel",new h(this,e))}})};a.fn.owlCarousel.Constructor=h})(window.Zepto||window.jQuery,window,document);(function(b,e,d,a){var c=function(f){this._core=f;this._loaded=[];this._handlers={"initialized.owl.carousel change.owl.carousel":b.proxy(function(j){if(!j.namespace){return}if(!this._core.settings||!this._core.settings.lazyLoad){return}if((j.property&&j.property.name=="position")||j.type=="initialized"){var h=this._core.settings,m=(h.center&&Math.ceil(h.items/2)||h.items),l=((h.center&&m*-1)||0),k=((j.property&&j.property.value)||this._core.current())+l,g=this._core.clones().length,o=b.proxy(function(n,p){this.load(p)},this);while(l++<m){this.load(g/2+this._core.relative(k));g&&b.each(this._core.clones(this._core.relative(k++)),o)}}},this)};this._core.options=b.extend({},c.Defaults,this._core.options);this._core.$element.on(this._handlers)};c.Defaults={lazyLoad:false};c.prototype.load=function(h){var f=this._core.$stage.children().eq(h),g=f&&f.find(".owl-lazy");if(!g||b.inArray(f.get(0),this._loaded)>-1){return}g.each(b.proxy(function(j,i){var l=b(i),m,k=(e.devicePixelRatio>1&&l.attr("data-src-retina"))||l.attr("data-src");this._core.trigger("load",{element:l,url:k},"lazy");if(l.is("img")){l.one("load.owl.lazy",b.proxy(function(){l.css("opacity",1);this._core.trigger("loaded",{element:l,url:k},"lazy")},this)).attr("src",k)}else{m=new Image();m.onload=b.proxy(function(){l.css({"background-image":"url("+k+")",opacity:"1"});this._core.trigger("loaded",{element:l,url:k},"lazy")},this);m.src=k}},this));this._loaded.push(f.get(0))};c.prototype.destroy=function(){var f,g;for(f in this.handlers){this._core.$element.off(f,this.handlers[f])}for(g in Object.getOwnPropertyNames(this)){typeof this[g]!="function"&&(this[g]=null)}};b.fn.owlCarousel.Constructor.Plugins.Lazy=c})(window.Zepto||window.jQuery,window,document);(function(b,e,d,a){var c=function(f){this._core=f;this._handlers={"initialized.owl.carousel":b.proxy(function(){if(this._core.settings.autoHeight){this.update()}},this),"changed.owl.carousel":b.proxy(function(g){if(this._core.settings.autoHeight&&g.property.name=="position"){this.update()}},this),"loaded.owl.lazy":b.proxy(function(g){if(this._core.settings.autoHeight&&g.element.closest("."+this._core.settings.itemClass)===this._core.$stage.children().eq(this._core.current())){this.update()}},this)};this._core.options=b.extend({},c.Defaults,this._core.options);this._core.$element.on(this._handlers)};c.Defaults={autoHeight:false,autoHeightClass:"owl-height"};c.prototype.update=function(){this._core.$stage.parent().height(this._core.$stage.children().eq(this._core.current()).height()).addClass(this._core.settings.autoHeightClass)};c.prototype.destroy=function(){var f,g;for(f in this._handlers){this._core.$element.off(f,this._handlers[f])}for(g in Object.getOwnPropertyNames(this)){typeof this[g]!="function"&&(this[g]=null)}};b.fn.owlCarousel.Constructor.Plugins.AutoHeight=c})(window.Zepto||window.jQuery,window,document);(function(b,d,c,a){var e=function(f){this._core=f;this._videos={};this._playing=null;this._fullscreen=false;this._handlers={"resize.owl.carousel":b.proxy(function(g){if(this._core.settings.video&&!this.isInFullScreen()){g.preventDefault()}},this),"refresh.owl.carousel changed.owl.carousel":b.proxy(function(g){if(this._playing){this.stop()}},this),"prepared.owl.carousel":b.proxy(function(g){var h=b(g.content).find(".owl-video");if(h.length){h.css("display","none");this.fetch(h,b(g.content))}},this)};this._core.options=b.extend({},e.Defaults,this._core.options);this._core.$element.on(this._handlers);this._core.$element.on("click.owl.video",".owl-video-play-icon",b.proxy(function(g){this.play(g)},this))};e.Defaults={video:false,videoHeight:false,videoWidth:false};e.prototype.fetch=function(l,h){var j=l.attr("data-vimeo-id")?"vimeo":"youtube",f=l.attr("data-vimeo-id")||l.attr("data-youtube-id"),k=l.attr("data-width")||this._core.settings.videoWidth,g=l.attr("data-height")||this._core.settings.videoHeight,i=l.attr("href");if(i){f=i.match(/(http:|https:|)\/\/(player.|www.)?(vimeo\.com|youtu(be\.com|\.be|be\.googleapis\.com))\/(video\/|embed\/|watch\?v=|v\/)?([A-Za-z0-9._%-]*)(\&\S+)?/);if(f[3].indexOf("youtu")>-1){j="youtube"}else{if(f[3].indexOf("vimeo")>-1){j="vimeo"}else{throw new Error("Video URL not supported.")}}f=f[6]}else{throw new Error("Missing video URL.")}this._videos[i]={type:j,id:f,width:k,height:g};h.attr("data-video",i);this.thumbnail(l,this._videos[i])};e.prototype.thumbnail=function(j,p){var h,k,f,m=p.width&&p.height?'style="width:'+p.width+"px;height:"+p.height+'px;"':"",l=j.find("img"),g="src",i="",n=this._core.settings,o=function(q){k='<div class="owl-video-play-icon"></div>';if(n.lazyLoad){h='<div class="owl-video-tn '+i+'" '+g+'="'+q+'"></div>'}else{h='<div class="owl-video-tn" style="opacity:1;background-image:url('+q+')"></div>'}j.after(h);j.after(k)};j.wrap('<div class="owl-video-wrapper"'+m+"></div>");if(this._core.settings.lazyLoad){g="data-src";i="owl-lazy"}if(l.length){o(l.attr(g));l.remove();return false}if(p.type==="youtube"){f="http://img.youtube.com/vi/"+p.id+"/hqdefault.jpg";o(f)}else{if(p.type==="vimeo"){b.ajax({type:"GET",url:"http://vimeo.com/api/v2/video/"+p.id+".json",jsonp:"callback",dataType:"jsonp",success:function(q){f=q[0].thumbnail_large;o(f)}})}}};e.prototype.stop=function(){this._core.trigger("stop",null,"video");this._playing.find(".owl-video-frame").remove();this._playing.removeClass("owl-video-playing");this._playing=null};e.prototype.play=function(l){this._core.trigger("play",null,"video");if(this._playing){this.stop()}var f=b(l.target||l.srcElement),h=f.closest("."+this._core.settings.itemClass),m=this._videos[h.attr("data-video")],k=m.width||"100%",g=m.height||this._core.$stage.height(),i,j;if(m.type==="youtube"){i='<iframe width="'+k+'" height="'+g+'" src="http://www.youtube.com/embed/'+m.id+"?autoplay=1&v="+m.id+'" frameborder="0" allowfullscreen></iframe>'}else{if(m.type==="vimeo"){i='<iframe src="http://player.vimeo.com/video/'+m.id+'?autoplay=1" width="'+k+'" height="'+g+'" frameborder="0" webkitallowfullscreen mozallowfullscreen allowfullscreen></iframe>'}}h.addClass("owl-video-playing");this._playing=h;j=b('<div style="height:'+g+"px; width:"+k+'px" class="owl-video-frame">'+i+"</div>");f.after(j)};e.prototype.isInFullScreen=function(){var f=c.fullscreenElement||c.mozFullScreenElement||c.webkitFullscreenElement;if(f&&b(f).parent().hasClass("owl-video-frame")){this._core.speed(0);this._fullscreen=true}if(f&&this._fullscreen&&this._playing){return false}if(this._fullscreen){this._fullscreen=false;return false}if(this._playing){if(this._core.state.orientation!==d.orientation){this._core.state.orientation=d.orientation;return false}}return true};e.prototype.destroy=function(){var f,g;this._core.$element.off("click.owl.video");for(f in this._handlers){this._core.$element.off(f,this._handlers[f])}for(g in Object.getOwnPropertyNames(this)){typeof this[g]!="function"&&(this[g]=null)}};b.fn.owlCarousel.Constructor.Plugins.Video=e})(window.Zepto||window.jQuery,window,document);(function(b,e,c,a){var d=function(f){this.core=f;this.core.options=b.extend({},d.Defaults,this.core.options);this.swapping=true;this.previous=a;this.next=a;this.handlers={"change.owl.carousel":b.proxy(function(g){if(g.property.name=="position"){this.previous=this.core.current();this.next=g.property.value}},this),"drag.owl.carousel dragged.owl.carousel translated.owl.carousel":b.proxy(function(g){this.swapping=g.type=="translated"},this),"translate.owl.carousel":b.proxy(function(g){if(this.swapping&&(this.core.options.animateOut||this.core.options.animateIn)){this.swap()}},this)};this.core.$element.on(this.handlers)};d.Defaults={animateOut:false,animateIn:false};d.prototype.swap=function(){if(this.core.settings.items!==1||!this.core.support3d){return}this.core.speed(0);var g,h=b.proxy(this.clear,this),k=this.core.$stage.children().eq(this.previous),j=this.core.$stage.children().eq(this.next),f=this.core.settings.animateIn,i=this.core.settings.animateOut;if(this.core.current()===this.previous){return}if(i){g=this.core.coordinates(this.previous)-this.core.coordinates(this.next);k.css({left:g+"px"}).addClass("animated owl-animated-out").addClass(i).one("webkitAnimationEnd mozAnimationEnd MSAnimationEnd oanimationend animationend",h)}if(f){j.addClass("animated owl-animated-in").addClass(f).one("webkitAnimationEnd mozAnimationEnd MSAnimationEnd oanimationend animationend",h)}};d.prototype.clear=function(f){b(f.target).css({left:""}).removeClass("animated owl-animated-out owl-animated-in").removeClass(this.core.settings.animateIn).removeClass(this.core.settings.animateOut);this.core.transitionEnd()};d.prototype.destroy=function(){var f,g;for(f in this.handlers){this.core.$element.off(f,this.handlers[f])}for(g in Object.getOwnPropertyNames(this)){typeof this[g]!="function"&&(this[g]=null)}};b.fn.owlCarousel.Constructor.Plugins.Animate=d})(window.Zepto||window.jQuery,window,document);(function(b,e,c,a){var d=function(f){this.core=f;this.core.options=b.extend({},d.Defaults,this.core.options);this.handlers={"translated.owl.carousel refreshed.owl.carousel":b.proxy(function(){this.autoplay()},this),"play.owl.autoplay":b.proxy(function(h,i,g){this.play(i,g)},this),"stop.owl.autoplay":b.proxy(function(){this.stop()},this),"mouseover.owl.autoplay":b.proxy(function(){if(this.core.settings.autoplayHoverPause){this.pause()}},this),"mouseleave.owl.autoplay":b.proxy(function(){if(this.core.settings.autoplayHoverPause){this.autoplay()}},this)};this.core.$element.on(this.handlers)};d.Defaults={autoplay:false,autoplayTimeout:5000,autoplayHoverPause:false,autoplaySpeed:false};d.prototype.autoplay=function(){if(this.core.settings.autoplay&&!this.core.state.videoPlay){e.clearInterval(this.interval);this.interval=e.setInterval(b.proxy(function(){this.play()},this),this.core.settings.autoplayTimeout)}else{e.clearInterval(this.interval)}};d.prototype.play=function(f,g){if(c.hidden===true){return}if(this.core.state.isTouch||this.core.state.isScrolling||this.core.state.isSwiping||this.core.state.inMotion){return}if(this.core.settings.autoplay===false){e.clearInterval(this.interval);return}this.core.next(this.core.settings.autoplaySpeed)};d.prototype.stop=function(){e.clearInterval(this.interval)};d.prototype.pause=function(){e.clearInterval(this.interval)};d.prototype.destroy=function(){var f,g;e.clearInterval(this.interval);for(f in this.handlers){this.core.$element.off(f,this.handlers[f])}for(g in Object.getOwnPropertyNames(this)){typeof this[g]!="function"&&(this[g]=null)}};b.fn.owlCarousel.Constructor.Plugins.autoplay=d})(window.Zepto||window.jQuery,window,document);(function(b,d,c,a){var e=function(f){this._core=f;this._initialized=false;this._pages=[];this._controls={};this._templates=[];this.$element=this._core.$element;this._overrides={next:this._core.next,prev:this._core.prev,to:this._core.to};this._handlers={"prepared.owl.carousel":b.proxy(function(g){if(this._core.settings.dotsData){this._templates.push(b(g.content).find("[data-dot]").andSelf("[data-dot]").attr("data-dot"))}},this),"add.owl.carousel":b.proxy(function(g){if(this._core.settings.dotsData){this._templates.splice(g.position,0,b(g.content).find("[data-dot]").andSelf("[data-dot]").attr("data-dot"))}},this),"remove.owl.carousel prepared.owl.carousel":b.proxy(function(g){if(this._core.settings.dotsData){this._templates.splice(g.position,1)}},this),"change.owl.carousel":b.proxy(function(h){if(h.property.name=="position"){if(!this._core.state.revert&&!this._core.settings.loop&&this._core.settings.navRewind){var g=this._core.current(),i=this._core.maximum(),j=this._core.minimum();h.data=h.property.value>i?g>=i?j:i:h.property.value<j?i:h.property.value}}},this),"changed.owl.carousel":b.proxy(function(g){if(g.property.name=="position"){this.draw()}},this),"refreshed.owl.carousel":b.proxy(function(){if(!this._initialized){this.initialize();this._initialized=true}this._core.trigger("refresh",null,"navigation");this.update();this.draw();this._core.trigger("refreshed",null,"navigation")},this)};this._core.options=b.extend({},e.Defaults,this._core.options);this.$element.on(this._handlers)};e.Defaults={nav:false,navRewind:true,navText:["prev","next"],navSpeed:false,navElement:"div",navContainer:false,navContainerClass:"owl-nav",navClass:["owl-prev","owl-next"],slideBy:1,dotClass:"owl-dot",dotsClass:"owl-dots",dots:true,dotsEach:false,dotData:false,dotsSpeed:false,dotsContainer:false,controlsClass:"owl-controls"};e.prototype.initialize=function(){var f,g,h=this._core.settings;if(!h.dotsData){this._templates=[b("<div>").addClass(h.dotClass).append(b("<span>")).prop("outerHTML")]}if(!h.navContainer||!h.dotsContainer){this._controls.$container=b("<div>").addClass(h.controlsClass).appendTo(this.$element)}this._controls.$indicators=h.dotsContainer?b(h.dotsContainer):b("<div>").hide().addClass(h.dotsClass).appendTo(this._controls.$container);this._controls.$indicators.on("click","div",b.proxy(function(i){var j=b(i.target).parent().is(this._controls.$indicators)?b(i.target).index():b(i.target).parent().index();i.preventDefault();this.to(j,h.dotsSpeed)},this));f=h.navContainer?b(h.navContainer):b("<div>").addClass(h.navContainerClass).prependTo(this._controls.$container);this._controls.$next=b("<"+h.navElement+">");this._controls.$previous=this._controls.$next.clone();this._controls.$previous.addClass(h.navClass[0]).html(h.navText[0]).hide().prependTo(f).on("click",b.proxy(function(i){this.prev(h.navSpeed)},this));this._controls.$next.addClass(h.navClass[1]).html(h.navText[1]).hide().appendTo(f).on("click",b.proxy(function(i){this.next(h.navSpeed)},this));for(g in this._overrides){this._core[g]=b.proxy(this[g],this)}};e.prototype.destroy=function(){var f,h,i,g;for(f in this._handlers){this.$element.off(f,this._handlers[f])}for(h in this._controls){this._controls[h].remove()}for(g in this.overides){this._core[g]=this._overrides[g]}for(i in Object.getOwnPropertyNames(this)){typeof this[i]!="function"&&(this[i]=null)}};e.prototype.update=function(){var o,m,n,l=this._core.settings,h=this._core.clones().length/2,f=h+this._core.items().length,g=l.center||l.autoWidth||l.dotData?1:l.dotsEach||l.items;if(l.slideBy!=="page"){l.slideBy=Math.min(l.slideBy,l.items)}if(l.dots||l.slideBy=="page"){this._pages=[];for(o=h,m=0,n=0;o<f;o++){if(m>=g||m===0){this._pages.push({start:o-h,end:o-h+g-1});m=0,++n}m+=this._core.mergers(this._core.relative(o))}}};e.prototype.draw=function(){var j,f,h="",k=this._core.settings,g=this._core.$stage.children(),l=this._core.relative(this._core.current());if(k.nav&&!k.loop&&!k.navRewind){this._controls.$previous.toggleClass("disabled",l<=0);this._controls.$next.toggleClass("disabled",l>=this._core.maximum())}this._controls.$previous.toggle(k.nav);this._controls.$next.toggle(k.nav);if(k.dots){j=this._pages.length-this._controls.$indicators.children().length;if(k.dotData&&j!==0){for(f=0;f<this._controls.$indicators.children().length;f++){h+=this._templates[this._core.relative(f)]}this._controls.$indicators.html(h)}else{if(j>0){h=new Array(j+1).join(this._templates[0]);this._controls.$indicators.append(h)}else{if(j<0){this._controls.$indicators.children().slice(j).remove()}}}this._controls.$indicators.find(".active").removeClass("active");this._controls.$indicators.children().eq(b.inArray(this.current(),this._pages)).addClass("active")}this._controls.$indicators.toggle(k.dots)};e.prototype.onTrigger=function(f){var g=this._core.settings;f.page={index:b.inArray(this.current(),this._pages),count:this._pages.length,size:g&&(g.center||g.autoWidth||g.dotData?1:g.dotsEach||g.items)}};e.prototype.current=function(){var f=this._core.relative(this._core.current());return b.grep(this._pages,function(g){return g.start<=f&&g.end>=f}).pop()};e.prototype.getPosition=function(g){var i,f,h=this._core.settings;if(h.slideBy=="page"){i=b.inArray(this.current(),this._pages);f=this._pages.length;g?++i:--i;i=this._pages[((i%f)+f)%f].start}else{i=this._core.relative(this._core.current());f=this._core.items().length;g?i+=h.slideBy:i-=h.slideBy}return i};e.prototype.next=function(f){b.proxy(this._overrides.to,this._core)(this.getPosition(true),f)};e.prototype.prev=function(f){b.proxy(this._overrides.to,this._core)(this.getPosition(false),f)};e.prototype.to=function(i,f,h){var g;if(!h){g=this._pages.length;b.proxy(this._overrides.to,this._core)(this._pages[((i%g)+g)%g].start,f)}else{b.proxy(this._overrides.to,this._core)(i,f)}};b.fn.owlCarousel.Constructor.Plugins.Navigation=e})(window.Zepto||window.jQuery,window,document);(function(b,d,c,a){var e=function(f){this._core=f;this._hashes={};this.$element=this._core.$element;this._handlers={"initialized.owl.carousel":b.proxy(function(){if(this._core.settings.startPosition=="URLHash"){b(d).trigger("hashchange.owl.navigation")}},this),"prepared.owl.carousel":b.proxy(function(g){var h=b(g.content).find("[data-hash]").andSelf("[data-hash]").attr("data-hash");this._hashes[h]=g.content},this)};this._core.options=b.extend({},e.Defaults,this._core.options);this.$element.on(this._handlers);b(d).on("hashchange.owl.navigation",b.proxy(function(){var g=d.location.hash.substring(1),h=this._core.$stage.children(),i=this._hashes[g]&&h.index(this._hashes[g])||0;if(!g){return false}this._core.to(i,false,true)},this))};e.Defaults={URLhashListener:false};e.prototype.destroy=function(){var f,g;b(d).off("hashchange.owl.navigation");for(f in this._handlers){this._core.$element.off(f,this._handlers[f])}for(g in Object.getOwnPropertyNames(this)){typeof this[g]!="function"&&(this[g]=null)}};b.fn.owlCarousel.Constructor.Plugins.Hash=e})(window.Zepto||window.jQuery,window,document);
 
1
+ !function(a,b,c,d){function e(b,c){this.settings=null,this.options=a.extend({},e.Defaults,c),this.$element=a(b),this._handlers={},this._plugins={},this._supress={},this._current=null,this._speed=null,this._coordinates=[],this._breakpoint=null,this._width=null,this._items=[],this._clones=[],this._mergers=[],this._widths=[],this._invalidated={},this._pipe=[],this._drag={time:null,target:null,pointer:null,stage:{start:null,current:null},direction:null},this._states={current:{},tags:{initializing:["busy"],animating:["busy"],dragging:["interacting"]}},a.each(["onResize","onThrottledResize"],a.proxy(function(b,c){this._handlers[c]=a.proxy(this[c],this)},this)),a.each(e.Plugins,a.proxy(function(a,b){this._plugins[a.charAt(0).toLowerCase()+a.slice(1)]=new b(this)},this)),a.each(e.Workers,a.proxy(function(b,c){this._pipe.push({filter:c.filter,run:a.proxy(c.run,this)})},this)),this.setup(),this.initialize()}e.Defaults={items:3,loop:!1,center:!1,rewind:!1,mouseDrag:!0,touchDrag:!0,pullDrag:!0,freeDrag:!1,margin:0,stagePadding:0,merge:!1,mergeFit:!0,autoWidth:!1,startPosition:0,rtl:!1,smartSpeed:250,fluidSpeed:!1,dragEndSpeed:!1,responsive:{},responsiveRefreshRate:200,responsiveBaseElement:b,fallbackEasing:"swing",info:!1,nestedItemSelector:!1,itemElement:"div",stageElement:"div",refreshClass:"owl-refresh",loadedClass:"owl-loaded",loadingClass:"owl-loading",rtlClass:"owl-rtl",responsiveClass:"owl-responsive",dragClass:"owl-drag",itemClass:"owl-item",stageClass:"owl-stage",stageOuterClass:"owl-stage-outer",grabClass:"owl-grab"},e.Width={Default:"default",Inner:"inner",Outer:"outer"},e.Type={Event:"event",State:"state"},e.Plugins={},e.Workers=[{filter:["width","settings"],run:function(){this._width=this.$element.width()}},{filter:["width","items","settings"],run:function(a){a.current=this._items&&this._items[this.relative(this._current)]}},{filter:["items","settings"],run:function(){this.$stage.children(".cloned").remove()}},{filter:["width","items","settings"],run:function(a){var b=this.settings.margin||"",c=!this.settings.autoWidth,d=this.settings.rtl,e={width:"auto","margin-left":d?b:"","margin-right":d?"":b};!c&&this.$stage.children().css(e),a.css=e}},{filter:["width","items","settings"],run:function(a){var b=(this.width()/this.settings.items).toFixed(3)-this.settings.margin,c=null,d=this._items.length,e=!this.settings.autoWidth,f=[];for(a.items={merge:!1,width:b};d--;)c=this._mergers[d],c=this.settings.mergeFit&&Math.min(c,this.settings.items)||c,a.items.merge=c>1||a.items.merge,f[d]=e?b*c:this._items[d].width();this._widths=f}},{filter:["items","settings"],run:function(){var b=[],c=this._items,d=this.settings,e=Math.max(2*d.items,4),f=2*Math.ceil(c.length/2),g=d.loop&&c.length?d.rewind?e:Math.max(e,f):0,h="",i="";for(g/=2;g--;)b.push(this.normalize(b.length/2,!0)),h+=c[b[b.length-1]][0].outerHTML,b.push(this.normalize(c.length-1-(b.length-1)/2,!0)),i=c[b[b.length-1]][0].outerHTML+i;this._clones=b,a(h).addClass("cloned").appendTo(this.$stage),a(i).addClass("cloned").prependTo(this.$stage)}},{filter:["width","items","settings"],run:function(){for(var a=this.settings.rtl?1:-1,b=this._clones.length+this._items.length,c=-1,d=0,e=0,f=[];++c<b;)d=f[c-1]||0,e=this._widths[this.relative(c)]+this.settings.margin,f.push(d+e*a);this._coordinates=f}},{filter:["width","items","settings"],run:function(){var a=this.settings.stagePadding,b=this._coordinates,c={width:Math.ceil(Math.abs(b[b.length-1]))+2*a,"padding-left":a||"","padding-right":a||""};this.$stage.css(c)}},{filter:["width","items","settings"],run:function(a){var b=this._coordinates.length,c=!this.settings.autoWidth,d=this.$stage.children();if(c&&a.items.merge)for(;b--;)a.css.width=this._widths[this.relative(b)],d.eq(b).css(a.css);else c&&(a.css.width=a.items.width,d.css(a.css))}},{filter:["items"],run:function(){this._coordinates.length<1&&this.$stage.removeAttr("style")}},{filter:["width","items","settings"],run:function(a){a.current=a.current?this.$stage.children().index(a.current):0,a.current=Math.max(this.minimum(),Math.min(this.maximum(),a.current)),this.reset(a.current)}},{filter:["position"],run:function(){this.animate(this.coordinates(this._current))}},{filter:["width","position","items","settings"],run:function(){var a,b,c,d,e=this.settings.rtl?1:-1,f=2*this.settings.stagePadding,g=this.coordinates(this.current())+f,h=g+this.width()*e,i=[];for(c=0,d=this._coordinates.length;d>c;c++)a=this._coordinates[c-1]||0,b=Math.abs(this._coordinates[c])+f*e,(this.op(a,"<=",g)&&this.op(a,">",h)||this.op(b,"<",g)&&this.op(b,">",h))&&i.push(c);this.$stage.children(".active").removeClass("active"),this.$stage.children(":eq("+i.join("), :eq(")+")").addClass("active"),this.settings.center&&(this.$stage.children(".center").removeClass("center"),this.$stage.children().eq(this.current()).addClass("center"))}}],e.prototype.initialize=function(){if(this.enter("initializing"),this.trigger("initialize"),this.$element.toggleClass(this.settings.rtlClass,this.settings.rtl),this.settings.autoWidth&&!this.is("pre-loading")){var b,c,e;b=this.$element.find("img"),c=this.settings.nestedItemSelector?"."+this.settings.nestedItemSelector:d,e=this.$element.children(c).width(),b.length&&0>=e&&this.preloadAutoWidthImages(b)}this.$element.addClass(this.options.loadingClass),this.$stage=a("<"+this.settings.stageElement+' class="'+this.settings.stageClass+'"/>').wrap('<div class="'+this.settings.stageOuterClass+'"/>'),this.$element.append(this.$stage.parent()),this.replace(this.$element.children().not(this.$stage.parent())),this.$element.is(":visible")?this.refresh():this.invalidate("width"),this.$element.removeClass(this.options.loadingClass).addClass(this.options.loadedClass),this.registerEventHandlers(),this.leave("initializing"),this.trigger("initialized")},e.prototype.setup=function(){var b=this.viewport(),c=this.options.responsive,d=-1,e=null;c?(a.each(c,function(a){b>=a&&a>d&&(d=Number(a))}),e=a.extend({},this.options,c[d]),delete e.responsive,e.responsiveClass&&this.$element.attr("class",this.$element.attr("class").replace(new RegExp("("+this.options.responsiveClass+"-)\\S+\\s","g"),"$1"+d))):e=a.extend({},this.options),(null===this.settings||this._breakpoint!==d)&&(this.trigger("change",{property:{name:"settings",value:e}}),this._breakpoint=d,this.settings=e,this.invalidate("settings"),this.trigger("changed",{property:{name:"settings",value:this.settings}}))},e.prototype.optionsLogic=function(){this.settings.autoWidth&&(this.settings.stagePadding=!1,this.settings.merge=!1)},e.prototype.prepare=function(b){var c=this.trigger("prepare",{content:b});return c.data||(c.data=a("<"+this.settings.itemElement+"/>").addClass(this.options.itemClass).append(b)),this.trigger("prepared",{content:c.data}),c.data},e.prototype.update=function(){for(var b=0,c=this._pipe.length,d=a.proxy(function(a){return this[a]},this._invalidated),e={};c>b;)(this._invalidated.all||a.grep(this._pipe[b].filter,d).length>0)&&this._pipe[b].run(e),b++;this._invalidated={},!this.is("valid")&&this.enter("valid")},e.prototype.width=function(a){switch(a=a||e.Width.Default){case e.Width.Inner:case e.Width.Outer:return this._width;default:return this._width-2*this.settings.stagePadding+this.settings.margin}},e.prototype.refresh=function(){this.enter("refreshing"),this.trigger("refresh"),this.setup(),this.optionsLogic(),this.$element.addClass(this.options.refreshClass),this.update(),this.$element.removeClass(this.options.refreshClass),this.leave("refreshing"),this.trigger("refreshed")},e.prototype.onThrottledResize=function(){b.clearTimeout(this.resizeTimer),this.resizeTimer=b.setTimeout(this._handlers.onResize,this.settings.responsiveRefreshRate)},e.prototype.onResize=function(){return this._items.length?this._width===this.$element.width()?!1:this.$element.is(":visible")?(this.enter("resizing"),this.trigger("resize").isDefaultPrevented()?(this.leave("resizing"),!1):(this.invalidate("width"),this.refresh(),this.leave("resizing"),void this.trigger("resized"))):!1:!1},e.prototype.registerEventHandlers=function(){a.support.transition&&this.$stage.on(a.support.transition.end+".owl.core",a.proxy(this.onTransitionEnd,this)),this.settings.responsive!==!1&&this.on(b,"resize",this._handlers.onThrottledResize),this.settings.mouseDrag&&(this.$element.addClass(this.options.dragClass),this.$stage.on("mousedown.owl.core",a.proxy(this.onDragStart,this)),this.$stage.on("dragstart.owl.core selectstart.owl.core",function(){return!1})),this.settings.touchDrag&&(this.$stage.on("touchstart.owl.core",a.proxy(this.onDragStart,this)),this.$stage.on("touchcancel.owl.core",a.proxy(this.onDragEnd,this)))},e.prototype.onDragStart=function(b){var d=null;3!==b.which&&(a.support.transform?(d=this.$stage.css("transform").replace(/.*\(|\)| /g,"").split(","),d={x:d[16===d.length?12:4],y:d[16===d.length?13:5]}):(d=this.$stage.position(),d={x:this.settings.rtl?d.left+this.$stage.width()-this.width()+this.settings.margin:d.left,y:d.top}),this.is("animating")&&(a.support.transform?this.animate(d.x):this.$stage.stop(),this.invalidate("position")),this.$element.toggleClass(this.options.grabClass,"mousedown"===b.type),this.speed(0),this._drag.time=(new Date).getTime(),this._drag.target=a(b.target),this._drag.stage.start=d,this._drag.stage.current=d,this._drag.pointer=this.pointer(b),a(c).on("mouseup.owl.core touchend.owl.core",a.proxy(this.onDragEnd,this)),a(c).one("mousemove.owl.core touchmove.owl.core",a.proxy(function(b){var d=this.difference(this._drag.pointer,this.pointer(b));a(c).on("mousemove.owl.core touchmove.owl.core",a.proxy(this.onDragMove,this)),Math.abs(d.x)<Math.abs(d.y)&&this.is("valid")||(b.preventDefault(),this.enter("dragging"),this.trigger("drag"))},this)))},e.prototype.onDragMove=function(a){var b=null,c=null,d=null,e=this.difference(this._drag.pointer,this.pointer(a)),f=this.difference(this._drag.stage.start,e);this.is("dragging")&&(a.preventDefault(),this.settings.loop?(b=this.coordinates(this.minimum()),c=this.coordinates(this.maximum()+1)-b,f.x=((f.x-b)%c+c)%c+b):(b=this.coordinates(this.settings.rtl?this.maximum():this.minimum()),c=this.coordinates(this.settings.rtl?this.minimum():this.maximum()),d=this.settings.pullDrag?-1*e.x/5:0,f.x=Math.max(Math.min(f.x,b+d),c+d)),this._drag.stage.current=f,this.animate(f.x))},e.prototype.onDragEnd=function(b){var d=this.difference(this._drag.pointer,this.pointer(b)),e=this._drag.stage.current,f=d.x>0^this.settings.rtl?"left":"right";a(c).off(".owl.core"),this.$element.removeClass(this.options.grabClass),(0!==d.x&&this.is("dragging")||!this.is("valid"))&&(this.speed(this.settings.dragEndSpeed||this.settings.smartSpeed),this.current(this.closest(e.x,0!==d.x?f:this._drag.direction)),this.invalidate("position"),this.update(),this._drag.direction=f,(Math.abs(d.x)>3||(new Date).getTime()-this._drag.time>300)&&this._drag.target.one("click.owl.core",function(){return!1})),this.is("dragging")&&(this.leave("dragging"),this.trigger("dragged"))},e.prototype.closest=function(b,c){var d=-1,e=30,f=this.width(),g=this.coordinates();return this.settings.freeDrag||a.each(g,a.proxy(function(a,h){return b>h-e&&h+e>b?d=a:this.op(b,"<",h)&&this.op(b,">",g[a+1]||h-f)&&(d="left"===c?a+1:a),-1===d},this)),this.settings.loop||(this.op(b,">",g[this.minimum()])?d=b=this.minimum():this.op(b,"<",g[this.maximum()])&&(d=b=this.maximum())),d},e.prototype.animate=function(b){var c=this.speed()>0;this.is("animating")&&this.onTransitionEnd(),c&&(this.enter("animating"),this.trigger("translate")),a.support.transform3d&&a.support.transition?this.$stage.css({transform:"translate3d("+b+"px,0px,0px)",transition:this.speed()/1e3+"s"}):c?this.$stage.animate({left:b+"px"},this.speed(),this.settings.fallbackEasing,a.proxy(this.onTransitionEnd,this)):this.$stage.css({left:b+"px"})},e.prototype.is=function(a){return this._states.current[a]&&this._states.current[a]>0},e.prototype.current=function(a){if(a===d)return this._current;if(0===this._items.length)return d;if(a=this.normalize(a),this._current!==a){var b=this.trigger("change",{property:{name:"position",value:a}});b.data!==d&&(a=this.normalize(b.data)),this._current=a,this.invalidate("position"),this.trigger("changed",{property:{name:"position",value:this._current}})}return this._current},e.prototype.invalidate=function(b){return"string"===a.type(b)&&(this._invalidated[b]=!0,this.is("valid")&&this.leave("valid")),a.map(this._invalidated,function(a,b){return b})},e.prototype.reset=function(a){a=this.normalize(a),a!==d&&(this._speed=0,this._current=a,this.suppress(["translate","translated"]),this.animate(this.coordinates(a)),this.release(["translate","translated"]))},e.prototype.normalize=function(b,c){var e=this._items.length,f=c?0:this._clones.length;return!a.isNumeric(b)||1>e?b=d:(0>b||b>=e+f)&&(b=((b-f/2)%e+e)%e+f/2),b},e.prototype.relative=function(a){return a-=this._clones.length/2,this.normalize(a,!0)},e.prototype.maximum=function(a){var b,c=this.settings,d=this._coordinates.length,e=Math.abs(this._coordinates[d-1])-this._width,f=-1;if(c.loop)d=this._clones.length/2+this._items.length-1;else if(c.autoWidth||c.merge)for(;d-f>1;)Math.abs(this._coordinates[b=d+f>>1])<e?f=b:d=b;else d=c.center?this._items.length-1:this._items.length-c.items;return a&&(d-=this._clones.length/2),Math.max(d,0)},e.prototype.minimum=function(a){return a?0:this._clones.length/2},e.prototype.items=function(a){return a===d?this._items.slice():(a=this.normalize(a,!0),this._items[a])},e.prototype.mergers=function(a){return a===d?this._mergers.slice():(a=this.normalize(a,!0),this._mergers[a])},e.prototype.clones=function(b){var c=this._clones.length/2,e=c+this._items.length,f=function(a){return a%2===0?e+a/2:c-(a+1)/2};return b===d?a.map(this._clones,function(a,b){return f(b)}):a.map(this._clones,function(a,c){return a===b?f(c):null})},e.prototype.speed=function(a){return a!==d&&(this._speed=a),this._speed},e.prototype.coordinates=function(b){var c=null;return b===d?a.map(this._coordinates,a.proxy(function(a,b){return this.coordinates(b)},this)):(this.settings.center?(c=this._coordinates[b],c+=(this.width()-c+(this._coordinates[b-1]||0))/2*(this.settings.rtl?-1:1)):c=this._coordinates[b-1]||0,c)},e.prototype.duration=function(a,b,c){return Math.min(Math.max(Math.abs(b-a),1),6)*Math.abs(c||this.settings.smartSpeed)},e.prototype.to=function(a,b){var c=this.current(),d=null,e=a-this.relative(c),f=(e>0)-(0>e),g=this._items.length,h=this.minimum(),i=this.maximum();this.settings.loop?(!this.settings.rewind&&Math.abs(e)>g/2&&(e+=-1*f*g),a=c+e,d=((a-h)%g+g)%g+h,d!==a&&i>=d-e&&d-e>0&&(c=d-e,a=d,this.reset(c))):this.settings.rewind?(i+=1,a=(a%i+i)%i):a=Math.max(h,Math.min(i,a)),this.speed(this.duration(c,a,b)),this.current(a),this.$element.is(":visible")&&this.update()},e.prototype.next=function(a){a=a||!1,this.to(this.relative(this.current())+1,a)},e.prototype.prev=function(a){a=a||!1,this.to(this.relative(this.current())-1,a)},e.prototype.onTransitionEnd=function(a){return a!==d&&(a.stopPropagation(),(a.target||a.srcElement||a.originalTarget)!==this.$stage.get(0))?!1:(this.leave("animating"),void this.trigger("translated"))},e.prototype.viewport=function(){var d;if(this.options.responsiveBaseElement!==b)d=a(this.options.responsiveBaseElement).width();else if(b.innerWidth)d=b.innerWidth;else{if(!c.documentElement||!c.documentElement.clientWidth)throw"Can not detect viewport width.";d=c.documentElement.clientWidth}return d},e.prototype.replace=function(b){this.$stage.empty(),this._items=[],b&&(b=b instanceof jQuery?b:a(b)),this.settings.nestedItemSelector&&(b=b.find("."+this.settings.nestedItemSelector)),b.filter(function(){return 1===this.nodeType}).each(a.proxy(function(a,b){b=this.prepare(b),this.$stage.append(b),this._items.push(b),this._mergers.push(1*b.find("[data-merge]").andSelf("[data-merge]").attr("data-merge")||1)},this)),this.reset(a.isNumeric(this.settings.startPosition)?this.settings.startPosition:0),this.invalidate("items")},e.prototype.add=function(b,c){var e=this.relative(this._current);c=c===d?this._items.length:this.normalize(c,!0),b=b instanceof jQuery?b:a(b),this.trigger("add",{content:b,position:c}),b=this.prepare(b),0===this._items.length||c===this._items.length?(0===this._items.length&&this.$stage.append(b),0!==this._items.length&&this._items[c-1].after(b),this._items.push(b),this._mergers.push(1*b.find("[data-merge]").andSelf("[data-merge]").attr("data-merge")||1)):(this._items[c].before(b),this._items.splice(c,0,b),this._mergers.splice(c,0,1*b.find("[data-merge]").andSelf("[data-merge]").attr("data-merge")||1)),this._items[e]&&this.reset(this._items[e].index()),this.invalidate("items"),this.trigger("added",{content:b,position:c})},e.prototype.remove=function(a){a=this.normalize(a,!0),a!==d&&(this.trigger("remove",{content:this._items[a],position:a}),this._items[a].remove(),this._items.splice(a,1),this._mergers.splice(a,1),this.invalidate("items"),this.trigger("removed",{content:null,position:a}))},e.prototype.preloadAutoWidthImages=function(b){b.each(a.proxy(function(b,c){this.enter("pre-loading"),c=a(c),a(new Image).one("load",a.proxy(function(a){c.attr("src",a.target.src),c.css("opacity",1),this.leave("pre-loading"),!this.is("pre-loading")&&!this.is("initializing")&&this.refresh()},this)).attr("src",c.attr("src")||c.attr("data-src")||c.attr("data-src-retina"))},this))},e.prototype.destroy=function(){this.$element.off(".owl.core"),this.$stage.off(".owl.core"),a(c).off(".owl.core"),this.settings.responsive!==!1&&(b.clearTimeout(this.resizeTimer),this.off(b,"resize",this._handlers.onThrottledResize));for(var d in this._plugins)this._plugins[d].destroy();this.$stage.children(".cloned").remove(),this.$stage.unwrap(),this.$stage.children().contents().unwrap(),this.$stage.children().unwrap(),this.$element.removeClass(this.options.refreshClass).removeClass(this.options.loadingClass).removeClass(this.options.loadedClass).removeClass(this.options.rtlClass).removeClass(this.options.dragClass).removeClass(this.options.grabClass).attr("class",this.$element.attr("class").replace(new RegExp(this.options.responsiveClass+"-\\S+\\s","g"),"")).removeData("owl.carousel")},e.prototype.op=function(a,b,c){var d=this.settings.rtl;switch(b){case"<":return d?a>c:c>a;case">":return d?c>a:a>c;case">=":return d?c>=a:a>=c;case"<=":return d?a>=c:c>=a}},e.prototype.on=function(a,b,c,d){a.addEventListener?a.addEventListener(b,c,d):a.attachEvent&&a.attachEvent("on"+b,c)},e.prototype.off=function(a,b,c,d){a.removeEventListener?a.removeEventListener(b,c,d):a.detachEvent&&a.detachEvent("on"+b,c)},e.prototype.trigger=function(b,c,d,f,g){var h={item:{count:this._items.length,index:this.current()}},i=a.camelCase(a.grep(["on",b,d],function(a){return a}).join("-").toLowerCase()),j=a.Event([b,"owl",d||"carousel"].join(".").toLowerCase(),a.extend({relatedTarget:this},h,c));return this._supress[b]||(a.each(this._plugins,function(a,b){b.onTrigger&&b.onTrigger(j)}),this.register({type:e.Type.Event,name:b}),this.$element.trigger(j),this.settings&&"function"==typeof this.settings[i]&&this.settings[i].call(this,j)),j},e.prototype.enter=function(b){a.each([b].concat(this._states.tags[b]||[]),a.proxy(function(a,b){this._states.current[b]===d&&(this._states.current[b]=0),this._states.current[b]++},this))},e.prototype.leave=function(b){a.each([b].concat(this._states.tags[b]||[]),a.proxy(function(a,b){this._states.current[b]--},this))},e.prototype.register=function(b){if(b.type===e.Type.Event){if(a.event.special[b.name]||(a.event.special[b.name]={}),!a.event.special[b.name].owl){var c=a.event.special[b.name]._default;a.event.special[b.name]._default=function(a){return!c||!c.apply||a.namespace&&-1!==a.namespace.indexOf("owl")?a.namespace&&a.namespace.indexOf("owl")>-1:c.apply(this,arguments)},a.event.special[b.name].owl=!0}}else b.type===e.Type.State&&(this._states.tags[b.name]?this._states.tags[b.name]=this._states.tags[b.name].concat(b.tags):this._states.tags[b.name]=b.tags,this._states.tags[b.name]=a.grep(this._states.tags[b.name],a.proxy(function(c,d){return a.inArray(c,this._states.tags[b.name])===d},this)))},e.prototype.suppress=function(b){a.each(b,a.proxy(function(a,b){this._supress[b]=!0},this))},e.prototype.release=function(b){a.each(b,a.proxy(function(a,b){delete this._supress[b]},this))},e.prototype.pointer=function(a){var c={x:null,y:null};return a=a.originalEvent||a||b.event,a=a.touches&&a.touches.length?a.touches[0]:a.changedTouches&&a.changedTouches.length?a.changedTouches[0]:a,a.pageX?(c.x=a.pageX,c.y=a.pageY):(c.x=a.clientX,c.y=a.clientY),c},e.prototype.difference=function(a,b){return{x:a.x-b.x,y:a.y-b.y}},a.fn.owlCarousel=function(b){var c=Array.prototype.slice.call(arguments,1);return this.each(function(){var d=a(this),f=d.data("owl.carousel");f||(f=new e(this,"object"==typeof b&&b),d.data("owl.carousel",f),a.each(["next","prev","to","destroy","refresh","replace","add","remove"],function(b,c){f.register({type:e.Type.Event,name:c}),f.$element.on(c+".owl.carousel.core",a.proxy(function(a){a.namespace&&a.relatedTarget!==this&&(this.suppress([c]),f[c].apply(this,[].slice.call(arguments,1)),this.release([c]))},f))})),"string"==typeof b&&"_"!==b.charAt(0)&&f[b].apply(f,c)})},a.fn.owlCarousel.Constructor=e}(window.Zepto||window.jQuery,window,document),function(a,b,c,d){var e=function(b){this._core=b,this._interval=null,this._visible=null,this._handlers={"initialized.owl.carousel":a.proxy(function(a){a.namespace&&this._core.settings.autoRefresh&&this.watch()},this)},this._core.options=a.extend({},e.Defaults,this._core.options),this._core.$element.on(this._handlers)};e.Defaults={autoRefresh:!0,autoRefreshInterval:500},e.prototype.watch=function(){this._interval||(this._visible=this._core.$element.is(":visible"),this._interval=b.setInterval(a.proxy(this.refresh,this),this._core.settings.autoRefreshInterval))},e.prototype.refresh=function(){this._core.$element.is(":visible")!==this._visible&&(this._visible=!this._visible,this._core.$element.toggleClass("owl-hidden",!this._visible),this._visible&&this._core.invalidate("width")&&this._core.refresh())},e.prototype.destroy=function(){var a,c;b.clearInterval(this._interval);for(a in this._handlers)this._core.$element.off(a,this._handlers[a]);for(c in Object.getOwnPropertyNames(this))"function"!=typeof this[c]&&(this[c]=null)},a.fn.owlCarousel.Constructor.Plugins.AutoRefresh=e}(window.Zepto||window.jQuery,window,document),function(a,b,c,d){var e=function(b){this._core=b,this._loaded=[],this._handlers={"initialized.owl.carousel change.owl.carousel":a.proxy(function(b){if(b.namespace&&this._core.settings&&this._core.settings.lazyLoad&&(b.property&&"position"==b.property.name||"initialized"==b.type))for(var c=this._core.settings,d=c.center&&Math.ceil(c.items/2)||c.items,e=c.center&&-1*d||0,f=(b.property&&b.property.value||this._core.current())+e,g=this._core.clones().length,h=a.proxy(function(a,b){this.load(b)},this);e++<d;)this.load(g/2+this._core.relative(f)),g&&a.each(this._core.clones(this._core.relative(f)),h),f++},this)},this._core.options=a.extend({},e.Defaults,this._core.options),this._core.$element.on(this._handlers)};e.Defaults={lazyLoad:!1},e.prototype.load=function(c){var d=this._core.$stage.children().eq(c),e=d&&d.find(".owl-lazy");!e||a.inArray(d.get(0),this._loaded)>-1||(e.each(a.proxy(function(c,d){var e,f=a(d),g=b.devicePixelRatio>1&&f.attr("data-src-retina")||f.attr("data-src");this._core.trigger("load",{element:f,url:g},"lazy"),f.is("img")?f.one("load.owl.lazy",a.proxy(function(){f.css("opacity",1),this._core.trigger("loaded",{element:f,url:g},"lazy")},this)).attr("src",g):(e=new Image,e.onload=a.proxy(function(){f.css({"background-image":"url("+g+")",opacity:"1"}),this._core.trigger("loaded",{element:f,url:g},"lazy")},this),e.src=g)},this)),this._loaded.push(d.get(0)))},e.prototype.destroy=function(){var a,b;for(a in this.handlers)this._core.$element.off(a,this.handlers[a]);for(b in Object.getOwnPropertyNames(this))"function"!=typeof this[b]&&(this[b]=null)},a.fn.owlCarousel.Constructor.Plugins.Lazy=e}(window.Zepto||window.jQuery,window,document),function(a,b,c,d){var e=function(b){this._core=b,this._handlers={"initialized.owl.carousel refreshed.owl.carousel":a.proxy(function(a){a.namespace&&this._core.settings.autoHeight&&this.update()},this),"changed.owl.carousel":a.proxy(function(a){a.namespace&&this._core.settings.autoHeight&&"position"==a.property.name&&this.update()},this),"loaded.owl.lazy":a.proxy(function(a){a.namespace&&this._core.settings.autoHeight&&a.element.closest("."+this._core.settings.itemClass).index()===this._core.current()&&this.update()},this)},this._core.options=a.extend({},e.Defaults,this._core.options),this._core.$element.on(this._handlers)};e.Defaults={autoHeight:!1,autoHeightClass:"owl-height"},e.prototype.update=function(){var b=this._core._current,c=b+this._core.settings.items,d=this._core.$stage.children().toArray().slice(b,c);heights=[],maxheight=0,a.each(d,function(b,c){heights.push(a(c).height())}),maxheight=Math.max.apply(null,heights),this._core.$stage.parent().height(maxheight).addClass(this._core.settings.autoHeightClass)},e.prototype.destroy=function(){var a,b;for(a in this._handlers)this._core.$element.off(a,this._handlers[a]);for(b in Object.getOwnPropertyNames(this))"function"!=typeof this[b]&&(this[b]=null)},a.fn.owlCarousel.Constructor.Plugins.AutoHeight=e}(window.Zepto||window.jQuery,window,document),function(a,b,c,d){var e=function(b){this._core=b,this._videos={},this._playing=null,this._handlers={"initialized.owl.carousel":a.proxy(function(a){a.namespace&&this._core.register({type:"state",name:"playing",tags:["interacting"]})},this),"resize.owl.carousel":a.proxy(function(a){a.namespace&&this._core.settings.video&&this.isInFullScreen()&&a.preventDefault()},this),"refreshed.owl.carousel":a.proxy(function(a){a.namespace&&this._core.is("resizing")&&this._core.$stage.find(".cloned .owl-video-frame").remove()},this),"changed.owl.carousel":a.proxy(function(a){a.namespace&&"position"===a.property.name&&this._playing&&this.stop()},this),"prepared.owl.carousel":a.proxy(function(b){if(b.namespace){var c=a(b.content).find(".owl-video");c.length&&(c.css("display","none"),this.fetch(c,a(b.content)))}},this)},this._core.options=a.extend({},e.Defaults,this._core.options),this._core.$element.on(this._handlers),this._core.$element.on("click.owl.video",".owl-video-play-icon",a.proxy(function(a){this.play(a)},this))};e.Defaults={video:!1,videoHeight:!1,videoWidth:!1},e.prototype.fetch=function(a,b){var c=a.attr("data-vimeo-id")?"vimeo":"youtube",d=a.attr("data-vimeo-id")||a.attr("data-youtube-id"),e=a.attr("data-width")||this._core.settings.videoWidth,f=a.attr("data-height")||this._core.settings.videoHeight,g=a.attr("href");if(!g)throw new Error("Missing video URL.");if(d=g.match(/(http:|https:|)\/\/(player.|www.)?(vimeo\.com|youtu(be\.com|\.be|be\.googleapis\.com))\/(video\/|embed\/|watch\?v=|v\/)?([A-Za-z0-9._%-]*)(\&\S+)?/),d[3].indexOf("youtu")>-1)c="youtube";else{if(!(d[3].indexOf("vimeo")>-1))throw new Error("Video URL not supported.");c="vimeo"}d=d[6],this._videos[g]={type:c,id:d,width:e,height:f},b.attr("data-video",g),this.thumbnail(a,this._videos[g])},e.prototype.thumbnail=function(b,c){var d,e,f,g=c.width&&c.height?'style="width:'+c.width+"px;height:"+c.height+'px;"':"",h=b.find("img"),i="src",j="",k=this._core.settings,l=function(a){e='<div class="owl-video-play-icon"></div>',d=k.lazyLoad?'<div class="owl-video-tn '+j+'" '+i+'="'+a+'"></div>':'<div class="owl-video-tn" style="opacity:1;background-image:url('+a+')"></div>',b.after(d),b.after(e)};return b.wrap('<div class="owl-video-wrapper"'+g+"></div>"),this._core.settings.lazyLoad&&(i="data-src",j="owl-lazy"),h.length?(l(h.attr(i)),h.remove(),!1):void("youtube"===c.type?(f="http://img.youtube.com/vi/"+c.id+"/hqdefault.jpg",l(f)):"vimeo"===c.type&&a.ajax({type:"GET",url:"http://vimeo.com/api/v2/video/"+c.id+".json",jsonp:"callback",dataType:"jsonp",success:function(a){f=a[0].thumbnail_large,l(f)}}))},e.prototype.stop=function(){this._core.trigger("stop",null,"video"),this._playing.find(".owl-video-frame").remove(),this._playing.removeClass("owl-video-playing"),this._playing=null,this._core.leave("playing"),this._core.trigger("stopped",null,"video")},e.prototype.play=function(b){var c,d=a(b.target),e=d.closest("."+this._core.settings.itemClass),f=this._videos[e.attr("data-video")],g=f.width||"100%",h=f.height||this._core.$stage.height();this._playing||(this._core.enter("playing"),this._core.trigger("play",null,"video"),e=this._core.items(this._core.relative(e.index())),this._core.reset(e.index()),"youtube"===f.type?c='<iframe width="'+g+'" height="'+h+'" src="http://www.youtube.com/embed/'+f.id+"?autoplay=1&v="+f.id+'" frameborder="0" allowfullscreen></iframe>':"vimeo"===f.type&&(c='<iframe src="http://player.vimeo.com/video/'+f.id+'?autoplay=1" width="'+g+'" height="'+h+'" frameborder="0" webkitallowfullscreen mozallowfullscreen allowfullscreen></iframe>'),a('<div class="owl-video-frame">'+c+"</div>").insertAfter(e.find(".owl-video")),this._playing=e.addClass("owl-video-playing"))},e.prototype.isInFullScreen=function(){var b=c.fullscreenElement||c.mozFullScreenElement||c.webkitFullscreenElement;return b&&a(b).parent().hasClass("owl-video-frame")},e.prototype.destroy=function(){var a,b;this._core.$element.off("click.owl.video");for(a in this._handlers)this._core.$element.off(a,this._handlers[a]);for(b in Object.getOwnPropertyNames(this))"function"!=typeof this[b]&&(this[b]=null)},a.fn.owlCarousel.Constructor.Plugins.Video=e}(window.Zepto||window.jQuery,window,document),function(a,b,c,d){var e=function(b){this.core=b,this.core.options=a.extend({},e.Defaults,this.core.options),this.swapping=!0,this.previous=d,this.next=d,this.handlers={"change.owl.carousel":a.proxy(function(a){a.namespace&&"position"==a.property.name&&(this.previous=this.core.current(),this.next=a.property.value)},this),"drag.owl.carousel dragged.owl.carousel translated.owl.carousel":a.proxy(function(a){a.namespace&&(this.swapping="translated"==a.type)},this),"translate.owl.carousel":a.proxy(function(a){a.namespace&&this.swapping&&(this.core.options.animateOut||this.core.options.animateIn)&&this.swap()},this)},this.core.$element.on(this.handlers)};e.Defaults={animateOut:!1,animateIn:!1},e.prototype.swap=function(){if(1===this.core.settings.items&&a.support.animation&&a.support.transition){this.core.speed(0);var b,c=a.proxy(this.clear,this),d=this.core.$stage.children().eq(this.previous),e=this.core.$stage.children().eq(this.next),f=this.core.settings.animateIn,g=this.core.settings.animateOut;this.core.current()!==this.previous&&(g&&(b=this.core.coordinates(this.previous)-this.core.coordinates(this.next),d.one(a.support.animation.end,c).css({left:b+"px"}).addClass("animated owl-animated-out").addClass(g)),f&&e.one(a.support.animation.end,c).addClass("animated owl-animated-in").addClass(f))}},e.prototype.clear=function(b){a(b.target).css({left:""}).removeClass("animated owl-animated-out owl-animated-in").removeClass(this.core.settings.animateIn).removeClass(this.core.settings.animateOut),this.core.onTransitionEnd()},e.prototype.destroy=function(){var a,b;for(a in this.handlers)this.core.$element.off(a,this.handlers[a]);for(b in Object.getOwnPropertyNames(this))"function"!=typeof this[b]&&(this[b]=null)},a.fn.owlCarousel.Constructor.Plugins.Animate=e}(window.Zepto||window.jQuery,window,document),function(a,b,c,d){var e=function(b){this._core=b,this._interval=null,this._paused=!1,this._handlers={"changed.owl.carousel":a.proxy(function(a){a.namespace&&"settings"===a.property.name&&(this._core.settings.autoplay?this.play():this.stop())},this),"initialized.owl.carousel":a.proxy(function(a){a.namespace&&this._core.settings.autoplay&&this.play()},this),"play.owl.autoplay":a.proxy(function(a,b,c){a.namespace&&this.play(b,c)},this),"stop.owl.autoplay":a.proxy(function(a){a.namespace&&this.stop()},this),"mouseover.owl.autoplay":a.proxy(function(){this._core.settings.autoplayHoverPause&&this._core.is("rotating")&&this.pause()},this),"mouseleave.owl.autoplay":a.proxy(function(){
2
+ this._core.settings.autoplayHoverPause&&this._core.is("rotating")&&this.play()},this)},this._core.$element.on(this._handlers),this._core.options=a.extend({},e.Defaults,this._core.options)};e.Defaults={autoplay:!1,autoplayTimeout:5e3,autoplayHoverPause:!1,autoplaySpeed:!1},e.prototype.play=function(d,e){this._paused=!1,this._core.is("rotating")||(this._core.enter("rotating"),this._interval=b.setInterval(a.proxy(function(){this._paused||this._core.is("busy")||this._core.is("interacting")||c.hidden||this._core.next(e||this._core.settings.autoplaySpeed)},this),d||this._core.settings.autoplayTimeout))},e.prototype.stop=function(){this._core.is("rotating")&&(b.clearInterval(this._interval),this._core.leave("rotating"))},e.prototype.pause=function(){this._core.is("rotating")&&(this._paused=!0)},e.prototype.destroy=function(){var a,b;this.stop();for(a in this._handlers)this._core.$element.off(a,this._handlers[a]);for(b in Object.getOwnPropertyNames(this))"function"!=typeof this[b]&&(this[b]=null)},a.fn.owlCarousel.Constructor.Plugins.autoplay=e}(window.Zepto||window.jQuery,window,document),function(a,b,c,d){"use strict";var e=function(b){this._core=b,this._initialized=!1,this._pages=[],this._controls={},this._templates=[],this.$element=this._core.$element,this._overrides={next:this._core.next,prev:this._core.prev,to:this._core.to},this._handlers={"prepared.owl.carousel":a.proxy(function(b){b.namespace&&this._core.settings.dotsData&&this._templates.push('<div class="'+this._core.settings.dotClass+'">'+a(b.content).find("[data-dot]").andSelf("[data-dot]").attr("data-dot")+"</div>")},this),"added.owl.carousel":a.proxy(function(a){a.namespace&&this._core.settings.dotsData&&this._templates.splice(a.position,0,this._templates.pop())},this),"remove.owl.carousel":a.proxy(function(a){a.namespace&&this._core.settings.dotsData&&this._templates.splice(a.position,1)},this),"changed.owl.carousel":a.proxy(function(a){a.namespace&&"position"==a.property.name&&this.draw()},this),"initialized.owl.carousel":a.proxy(function(a){a.namespace&&!this._initialized&&(this._core.trigger("initialize",null,"navigation"),this.initialize(),this.update(),this.draw(),this._initialized=!0,this._core.trigger("initialized",null,"navigation"))},this),"refreshed.owl.carousel":a.proxy(function(a){a.namespace&&this._initialized&&(this._core.trigger("refresh",null,"navigation"),this.update(),this.draw(),this._core.trigger("refreshed",null,"navigation"))},this)},this._core.options=a.extend({},e.Defaults,this._core.options),this.$element.on(this._handlers)};e.Defaults={nav:!1,navText:["prev","next"],navSpeed:!1,navElement:"div",navContainer:!1,navContainerClass:"owl-nav",navClass:["owl-prev","owl-next"],slideBy:1,dotClass:"owl-dot",dotsClass:"owl-dots",dots:!0,dotsEach:!1,dotsData:!1,dotsSpeed:!1,dotsContainer:!1},e.prototype.initialize=function(){var b,c=this._core.settings;this._controls.$relative=(c.navContainer?a(c.navContainer):a("<div>").addClass(c.navContainerClass).appendTo(this.$element)).addClass("disabled"),this._controls.$previous=a("<"+c.navElement+">").addClass(c.navClass[0]).html(c.navText[0]).prependTo(this._controls.$relative).on("click",a.proxy(function(a){this.prev(c.navSpeed)},this)),this._controls.$next=a("<"+c.navElement+">").addClass(c.navClass[1]).html(c.navText[1]).appendTo(this._controls.$relative).on("click",a.proxy(function(a){this.next(c.navSpeed)},this)),c.dotsData||(this._templates=[a("<div>").addClass(c.dotClass).append(a("<span>")).prop("outerHTML")]),this._controls.$absolute=(c.dotsContainer?a(c.dotsContainer):a("<div>").addClass(c.dotsClass).appendTo(this.$element)).addClass("disabled"),this._controls.$absolute.on("click","div",a.proxy(function(b){var d=a(b.target).parent().is(this._controls.$absolute)?a(b.target).index():a(b.target).parent().index();b.preventDefault(),this.to(d,c.dotsSpeed)},this));for(b in this._overrides)this._core[b]=a.proxy(this[b],this)},e.prototype.destroy=function(){var a,b,c,d;for(a in this._handlers)this.$element.off(a,this._handlers[a]);for(b in this._controls)this._controls[b].remove();for(d in this.overides)this._core[d]=this._overrides[d];for(c in Object.getOwnPropertyNames(this))"function"!=typeof this[c]&&(this[c]=null)},e.prototype.update=function(){var a,b,c,d=this._core.clones().length/2,e=d+this._core.items().length,f=this._core.maximum(!0),g=this._core.settings,h=g.center||g.autoWidth||g.dotsData?1:g.dotsEach||g.items;if("page"!==g.slideBy&&(g.slideBy=Math.min(g.slideBy,g.items)),g.dots||"page"==g.slideBy)for(this._pages=[],a=d,b=0,c=0;e>a;a++){if(b>=h||0===b){if(this._pages.push({start:Math.min(f,a-d),end:a-d+h-1}),Math.min(f,a-d)===f)break;b=0,++c}b+=this._core.mergers(this._core.relative(a))}},e.prototype.draw=function(){var b,c=this._core.settings,d=this._core.items().length<=c.items,e=this._core.relative(this._core.current()),f=c.loop||c.rewind;this._controls.$relative.toggleClass("disabled",!c.nav||d),c.nav&&(this._controls.$previous.toggleClass("disabled",!f&&e<=this._core.minimum(!0)),this._controls.$next.toggleClass("disabled",!f&&e>=this._core.maximum(!0))),this._controls.$absolute.toggleClass("disabled",!c.dots||d),c.dots&&(b=this._pages.length-this._controls.$absolute.children().length,c.dotsData&&0!==b?this._controls.$absolute.html(this._templates.join("")):b>0?this._controls.$absolute.append(new Array(b+1).join(this._templates[0])):0>b&&this._controls.$absolute.children().slice(b).remove(),this._controls.$absolute.find(".active").removeClass("active"),this._controls.$absolute.children().eq(a.inArray(this.current(),this._pages)).addClass("active"))},e.prototype.onTrigger=function(b){var c=this._core.settings;b.page={index:a.inArray(this.current(),this._pages),count:this._pages.length,size:c&&(c.center||c.autoWidth||c.dotsData?1:c.dotsEach||c.items)}},e.prototype.current=function(){var b=this._core.relative(this._core.current());return a.grep(this._pages,a.proxy(function(a,c){return a.start<=b&&a.end>=b},this)).pop()},e.prototype.getPosition=function(b){var c,d,e=this._core.settings;return"page"==e.slideBy?(c=a.inArray(this.current(),this._pages),d=this._pages.length,b?++c:--c,c=this._pages[(c%d+d)%d].start):(c=this._core.relative(this._core.current()),d=this._core.items().length,b?c+=e.slideBy:c-=e.slideBy),c},e.prototype.next=function(b){a.proxy(this._overrides.to,this._core)(this.getPosition(!0),b)},e.prototype.prev=function(b){a.proxy(this._overrides.to,this._core)(this.getPosition(!1),b)},e.prototype.to=function(b,c,d){var e;d?a.proxy(this._overrides.to,this._core)(b,c):(e=this._pages.length,a.proxy(this._overrides.to,this._core)(this._pages[(b%e+e)%e].start,c))},a.fn.owlCarousel.Constructor.Plugins.Navigation=e}(window.Zepto||window.jQuery,window,document),function(a,b,c,d){"use strict";var e=function(c){this._core=c,this._hashes={},this.$element=this._core.$element,this._handlers={"initialized.owl.carousel":a.proxy(function(c){c.namespace&&"URLHash"===this._core.settings.startPosition&&a(b).trigger("hashchange.owl.navigation")},this),"prepared.owl.carousel":a.proxy(function(b){if(b.namespace){var c=a(b.content).find("[data-hash]").andSelf("[data-hash]").attr("data-hash");if(!c)return;this._hashes[c]=b.content}},this),"changed.owl.carousel":a.proxy(function(c){if(c.namespace&&"position"===c.property.name){var d=this._core.items(this._core.relative(this._core.current())),e=a.map(this._hashes,function(a,b){return a===d?b:null}).join();if(!e||b.location.hash.slice(1)===e)return;b.location.hash=e}},this)},this._core.options=a.extend({},e.Defaults,this._core.options),this.$element.on(this._handlers),a(b).on("hashchange.owl.navigation",a.proxy(function(a){var c=b.location.hash.substring(1),e=this._core.$stage.children(),f=this._hashes[c]&&e.index(this._hashes[c]);f!==d&&f!==this._core.current()&&this._core.to(this._core.relative(f),!1,!0)},this))};e.Defaults={URLhashListener:!1},e.prototype.destroy=function(){var c,d;a(b).off("hashchange.owl.navigation");for(c in this._handlers)this._core.$element.off(c,this._handlers[c]);for(d in Object.getOwnPropertyNames(this))"function"!=typeof this[d]&&(this[d]=null)},a.fn.owlCarousel.Constructor.Plugins.Hash=e}(window.Zepto||window.jQuery,window,document),function(a,b,c,d){function e(b,c){var e=!1,f=b.charAt(0).toUpperCase()+b.slice(1);return a.each((b+" "+h.join(f+" ")+f).split(" "),function(a,b){return g[b]!==d?(e=c?b:!0,!1):void 0}),e}function f(a){return e(a,!0)}var g=a("<support>").get(0).style,h="Webkit Moz O ms".split(" "),i={transition:{end:{WebkitTransition:"webkitTransitionEnd",MozTransition:"transitionend",OTransition:"oTransitionEnd",transition:"transitionend"}},animation:{end:{WebkitAnimation:"webkitAnimationEnd",MozAnimation:"animationend",OAnimation:"oAnimationEnd",animation:"animationend"}}},j={csstransforms:function(){return!!e("transform")},csstransforms3d:function(){return!!e("perspective")},csstransitions:function(){return!!e("transition")},cssanimations:function(){return!!e("animation")}};j.csstransitions()&&(a.support.transition=new String(f("transition")),a.support.transition.end=i.transition.end[a.support.transition]),j.cssanimations()&&(a.support.animation=new String(f("animation")),a.support.animation.end=i.animation.end[a.support.animation]),j.csstransforms()&&(a.support.transform=new String(f("transform")),a.support.transform3d=j.csstransforms3d())}(window.Zepto||window.jQuery,window,document);
themes/foundation/modules/owlcarousel/owlcarousel.php CHANGED
@@ -5,7 +5,14 @@ add_action( 'foundation_module_init_mobile', 'foundation_owlcarousel_init' );
5
  function foundation_owlcarousel_init() {
6
  wp_enqueue_style(
7
  'foundation_owlcarousel',
8
- foundation_get_base_module_url() . '/owlcarousel/assets/owl.carousel.css',
 
 
 
 
 
 
 
9
  '',
10
  md5( FOUNDATION_VERSION )
11
  );
5
  function foundation_owlcarousel_init() {
6
  wp_enqueue_style(
7
  'foundation_owlcarousel',
8
+ foundation_get_base_module_url() . '/owlcarousel/assets/owl.carousel.min.css',
9
+ '',
10
+ md5( FOUNDATION_VERSION )
11
+ );
12
+
13
+ wp_enqueue_style(
14
+ 'foundation_owlcarousel_theme',
15
+ foundation_get_base_module_url() . '/owlcarousel/assets/owl.theme.default.min.css',
16
  '',
17
  md5( FOUNDATION_VERSION )
18
  );
themes/foundation/modules/sharing/sharing.php CHANGED
@@ -89,64 +89,66 @@ function foundation_handle_share_links_bottom( $content ) {
89
  }
90
 
91
  function foundation_sharing_settings( $page_options ) {
92
- wptouch_add_page_section(
93
- FOUNDATION_PAGE_BRANDING,
94
- __( 'Social Sharing', 'wptouch-pro' ),
95
- 'social-sharing',
96
- array(
97
- wptouch_add_setting(
98
- 'no-setting-text',
99
- 'share_info',
100
- __( 'Will show Facebook, Twitter, Pinterest and Email buttons.', 'wptouch-pro' ),
101
- false,
102
- WPTOUCH_SETTING_BASIC,
103
- '2.0'
104
- ),
105
- wptouch_add_setting(
106
- 'checkbox',
107
- 'show_share',
108
- __( 'Show sharing links on posts', 'wptouch-pro' ),
109
- false,
110
- WPTOUCH_SETTING_BASIC,
111
- '2.0'
112
- ),
113
- wptouch_add_setting(
114
- 'checkbox',
115
- 'share_on_pages',
116
- __( 'Also show on pages', 'wptouch-pro' ),
117
- false,
118
- WPTOUCH_SETTING_BASIC,
119
- '2.0'
120
- ),
121
- wptouch_add_setting(
122
- 'radiolist',
123
- 'share_location',
124
- __( 'Sharing links location', 'wptouch-pro' ),
125
- false,
126
- WPTOUCH_SETTING_BASIC,
127
- '2.0',
128
- array(
129
- 'top' => __( 'Above post content', 'wptouch-pro' ),
130
- 'bottom' => __( 'Below post content', 'wptouch-pro' )
 
 
 
 
 
 
 
 
 
 
 
 
 
 
131
  )
132
  ),
133
- wptouch_add_setting(
134
- 'radiolist',
135
- 'share_colour_scheme',
136
- __( 'Color scheme', 'wptouch-pro' ),
137
- false,
138
- WPTOUCH_SETTING_BASIC,
139
- '2.0',
140
- array(
141
- 'default' => __( 'Theme colors', 'wptouch-pro' ),
142
- 'vibrant' => __( 'Social network colors', 'wptouch-pro' )
143
- )
144
- )
145
- ),
146
- $page_options,
147
- FOUNDATION_SETTING_DOMAIN,
148
- true
149
- );
150
 
151
  return $page_options;
152
  }
89
  }
90
 
91
  function foundation_sharing_settings( $page_options ) {
92
+ if ( wptouch_can_show_page( 'social_sharing' ) ) {
93
+ wptouch_add_page_section(
94
+ FOUNDATION_PAGE_BRANDING,
95
+ __( 'Social Sharing', 'wptouch-pro' ),
96
+ 'social-sharing',
97
+ array(
98
+ wptouch_add_setting(
99
+ 'no-setting-text',
100
+ 'share_info',
101
+ __( 'Will show Facebook, Twitter, Pinterest and Email buttons.', 'wptouch-pro' ),
102
+ false,
103
+ WPTOUCH_SETTING_BASIC,
104
+ '2.0'
105
+ ),
106
+ wptouch_add_setting(
107
+ 'checkbox',
108
+ 'show_share',
109
+ __( 'Show sharing links on posts', 'wptouch-pro' ),
110
+ false,
111
+ WPTOUCH_SETTING_BASIC,
112
+ '2.0'
113
+ ),
114
+ wptouch_add_setting(
115
+ 'checkbox',
116
+ 'share_on_pages',
117
+ __( 'Also show on pages', 'wptouch-pro' ),
118
+ false,
119
+ WPTOUCH_SETTING_BASIC,
120
+ '2.0'
121
+ ),
122
+ wptouch_add_setting(
123
+ 'radiolist',
124
+ 'share_location',
125
+ __( 'Sharing links location', 'wptouch-pro' ),
126
+ false,
127
+ WPTOUCH_SETTING_BASIC,
128
+ '2.0',
129
+ array(
130
+ 'top' => __( 'Above post content', 'wptouch-pro' ),
131
+ 'bottom' => __( 'Below post content', 'wptouch-pro' )
132
+ )
133
+ ),
134
+ wptouch_add_setting(
135
+ 'radiolist',
136
+ 'share_colour_scheme',
137
+ __( 'Color scheme', 'wptouch-pro' ),
138
+ false,
139
+ WPTOUCH_SETTING_BASIC,
140
+ '2.0',
141
+ array(
142
+ 'default' => __( 'Theme colors', 'wptouch-pro' ),
143
+ 'vibrant' => __( 'Social network colors', 'wptouch-pro' )
144
+ )
145
  )
146
  ),
147
+ $page_options,
148
+ FOUNDATION_SETTING_DOMAIN,
149
+ true
150
+ );
151
+ }
 
 
 
 
 
 
 
 
 
 
 
 
152
 
153
  return $page_options;
154
  }
themes/foundation/modules/social-links/social-links.php CHANGED
@@ -3,113 +3,115 @@ add_action( 'wptouch_admin_page_render_wptouch-admin-theme-settings', 'foundatio
3
  add_action( 'wptouch_pre_footer', 'foundation_show_social_links_area' );
4
 
5
  function foundation_social_links_settings( $page_options ) {
6
- wptouch_add_page_section(
7
- FOUNDATION_PAGE_BRANDING,
8
- __( 'Social Media Links', 'wptouch-pro' ),
9
- 'footer-social-links',
10
- array(
11
- wptouch_add_setting(
12
- 'url',
13
- 'social_facebook_url',
14
- 'Facebook',
15
- __( 'Full URL to your Facebook page', 'wptouch-pro' ),
16
- WPTOUCH_SETTING_BASIC,
17
- '1.0'
18
- ),
19
- wptouch_add_setting(
20
- 'url',
21
- 'social_twitter_url',
22
- 'Twitter',
23
- __( 'Full URL to your Twitter profile', 'wptouch-pro' ),
24
- WPTOUCH_SETTING_BASIC,
25
- '1.0'
26
- ),
27
- wptouch_add_setting(
28
- 'url',
29
- 'social_google_url',
30
- 'Google+',
31
- __( 'Full URL to your Google+ profile', 'wptouch-pro' ),
32
- WPTOUCH_SETTING_BASIC,
33
- '1.0'
34
- ),
35
- wptouch_add_setting(
36
- 'url',
37
- 'social_instagram_url',
38
- 'Instagram',
39
- __( 'Full URL to your Instagram profile', 'wptouch-pro' ),
40
- WPTOUCH_SETTING_BASIC,
41
- '1.0'
42
- ),
43
- wptouch_add_setting(
44
- 'url',
45
- 'social_tumblr_url',
46
- __( 'Tumblr', 'wptouch-pro' ),
47
- __( 'Full URL to your Tumblr profile', 'wptouch-pro' ),
48
- WPTOUCH_SETTING_BASIC,
49
- '2.0.1'
50
- ),
51
- wptouch_add_pro_setting(
52
- 'url',
53
- 'social_pinterest_url',
54
- 'Pinterest',
55
- __( 'Full URL to your Pinterest page', 'wptouch-pro' ),
56
- WPTOUCH_SETTING_BASIC,
57
- '1.0.2'
58
- ),
59
- wptouch_add_pro_setting(
60
- 'url',
61
- 'social_vimeo_url',
62
- 'Vimeo',
63
- __( 'Full URL to your Vimeo page', 'wptouch-pro' ),
64
- WPTOUCH_SETTING_BASIC,
65
- '1.0.2'
66
- ),
67
- wptouch_add_pro_setting(
68
- 'url',
69
- 'social_youtube_url',
70
- 'YouTube',
71
- sprintf( __( 'Full URL to your %s profile', 'wptouch-pro' ), 'YouTube' ),
72
- WPTOUCH_SETTING_BASIC,
73
- '1.0.5'
74
- ),
75
- wptouch_add_pro_setting(
76
- 'url',
77
- 'social_linkedin_url',
78
- __( 'LinkedIn', 'wptouch-pro' ),
79
- __( 'Full URL to your LinkedIn profile', 'wptouch-pro' ),
80
- WPTOUCH_SETTING_BASIC,
81
- '1.0.2'
82
- ),
83
- wptouch_add_setting(
84
- 'url',
85
- 'social_yelp_url',
86
- 'Yelp',
87
- __( 'Full URL to your Yelp profile', 'wptouch-pro' ),
88
- WPTOUCH_SETTING_BASIC,
89
- '1.0'
90
- ),
91
- wptouch_add_setting(
92
- 'url',
93
- 'social_email_url',
94
- __( 'E-Mail', 'wptouch-pro' ),
95
- __( 'E-Mail address', 'wptouch-pro' ),
96
- WPTOUCH_SETTING_BASIC,
97
- '1.0'
98
- ),
99
- wptouch_add_setting(
100
- 'url',
101
- 'social_rss_url',
102
- 'RSS',
103
- __( 'Full URL to your RSS feed', 'wptouch-pro' ),
104
- WPTOUCH_SETTING_BASIC,
105
- '1.0.2'
106
- )
 
107
 
108
- ),
109
- $page_options,
110
- FOUNDATION_SETTING_DOMAIN,
111
- true
112
- );
 
113
 
114
  return $page_options;
115
  }
3
  add_action( 'wptouch_pre_footer', 'foundation_show_social_links_area' );
4
 
5
  function foundation_social_links_settings( $page_options ) {
6
+ if ( wptouch_can_show_page( 'social_media' ) ) {
7
+ wptouch_add_page_section(
8
+ FOUNDATION_PAGE_BRANDING,
9
+ __( 'Social Media Links', 'wptouch-pro' ),
10
+ 'footer-social-links',
11
+ array(
12
+ wptouch_add_setting(
13
+ 'url',
14
+ 'social_facebook_url',
15
+ 'Facebook',
16
+ __( 'Full URL to your Facebook page', 'wptouch-pro' ),
17
+ WPTOUCH_SETTING_BASIC,
18
+ '1.0'
19
+ ),
20
+ wptouch_add_setting(
21
+ 'url',
22
+ 'social_twitter_url',
23
+ 'Twitter',
24
+ __( 'Full URL to your Twitter profile', 'wptouch-pro' ),
25
+ WPTOUCH_SETTING_BASIC,
26
+ '1.0'
27
+ ),
28
+ wptouch_add_setting(
29
+ 'url',
30
+ 'social_google_url',
31
+ 'Google+',
32
+ __( 'Full URL to your Google+ profile', 'wptouch-pro' ),
33
+ WPTOUCH_SETTING_BASIC,
34
+ '1.0'
35
+ ),
36
+ wptouch_add_setting(
37
+ 'url',
38
+ 'social_instagram_url',
39
+ 'Instagram',
40
+ __( 'Full URL to your Instagram profile', 'wptouch-pro' ),
41
+ WPTOUCH_SETTING_BASIC,
42
+ '1.0'
43
+ ),
44
+ wptouch_add_setting(
45
+ 'url',
46
+ 'social_tumblr_url',
47
+ __( 'Tumblr', 'wptouch-pro' ),
48
+ __( 'Full URL to your Tumblr profile', 'wptouch-pro' ),
49
+ WPTOUCH_SETTING_BASIC,
50
+ '2.0.1'
51
+ ),
52
+ wptouch_add_pro_setting(
53
+ 'url',
54
+ 'social_pinterest_url',
55
+ 'Pinterest',
56
+ __( 'Full URL to your Pinterest page', 'wptouch-pro' ),
57
+ WPTOUCH_SETTING_BASIC,
58
+ '1.0.2'
59
+ ),
60
+ wptouch_add_pro_setting(
61
+ 'url',
62
+ 'social_vimeo_url',
63
+ 'Vimeo',
64
+ __( 'Full URL to your Vimeo page', 'wptouch-pro' ),
65
+ WPTOUCH_SETTING_BASIC,
66
+ '1.0.2'
67
+ ),
68
+ wptouch_add_pro_setting(
69
+ 'url',
70
+ 'social_youtube_url',
71
+ 'YouTube',
72
+ sprintf( __( 'Full URL to your %s profile', 'wptouch-pro' ), 'YouTube' ),
73
+ WPTOUCH_SETTING_BASIC,
74
+ '1.0.5'
75
+ ),
76
+ wptouch_add_pro_setting(
77
+ 'url',
78
+ 'social_linkedin_url',
79
+ __( 'LinkedIn', 'wptouch-pro' ),
80
+ __( 'Full URL to your LinkedIn profile', 'wptouch-pro' ),
81
+ WPTOUCH_SETTING_BASIC,
82
+ '1.0.2'
83
+ ),
84
+ wptouch_add_setting(
85
+ 'url',
86
+ 'social_yelp_url',
87
+ 'Yelp',
88
+ __( 'Full URL to your Yelp profile', 'wptouch-pro' ),
89
+ WPTOUCH_SETTING_BASIC,
90
+ '1.0'
91
+ ),
92
+ wptouch_add_setting(
93
+ 'url',
94
+ 'social_email_url',
95
+ __( 'E-Mail', 'wptouch-pro' ),
96
+ __( 'E-Mail address', 'wptouch-pro' ),
97
+ WPTOUCH_SETTING_BASIC,
98
+ '1.0'
99
+ ),
100
+ wptouch_add_setting(
101
+ 'url',
102
+ 'social_rss_url',
103
+ 'RSS',
104
+ __( 'Full URL to your RSS feed', 'wptouch-pro' ),
105
+ WPTOUCH_SETTING_BASIC,
106
+ '1.0.2'
107
+ )
108
 
109
+ ),
110
+ $page_options,
111
+ FOUNDATION_SETTING_DOMAIN,
112
+ true
113
+ );
114
+ }
115
 
116
  return $page_options;
117
  }
themes/foundation/root-functions.php CHANGED
@@ -147,10 +147,6 @@ function foundation_setting_defaults( $settings ) {
147
  $settings->excluded_categories = '';
148
  $settings->excluded_tags = '';
149
 
150
- // Login
151
- $settings->show_login_box = false;
152
- $settings->show_login_links = false;
153
-
154
  // Branding
155
  $settings->typography_sets = 'default';
156
 
147
  $settings->excluded_categories = '';
148
  $settings->excluded_tags = '';
149
 
 
 
 
 
150
  // Branding
151
  $settings->typography_sets = 'default';
152
 
wptouch.php CHANGED
@@ -2,7 +2,7 @@
2
  /*
3
  Plugin Name: WPtouch Mobile Plugin
4
  Plugin URI: http://www.wptouch.com/
5
- Version: 4.0.4
6
  Description: Make a beautiful mobile-friendly version of your website with just a few clicks
7
  Author: BraveNewCode Inc.
8
  Author URI: http://www.bravenewcode.com/
@@ -14,7 +14,7 @@
14
 
15
  function wptouch_create_four_object() {
16
  if ( !defined( 'WPTOUCH_IS_PRO' ) ) {
17
- define( 'WPTOUCH_VERSION', '4.0.4' );
18
 
19
  define( 'WPTOUCH_BASE_NAME', basename( __FILE__, '.php' ) . '.php' );
20
  define( 'WPTOUCH_DIR', WP_PLUGIN_DIR . DIRECTORY_SEPARATOR . basename( __FILE__, '.php' ) );
@@ -107,4 +107,14 @@ function wptouch_free_order_sections( $page_info, $page_name ) {
107
  }
108
 
109
  return $page_info;
 
 
 
 
 
 
 
 
 
 
110
  }
2
  /*
3
  Plugin Name: WPtouch Mobile Plugin
4
  Plugin URI: http://www.wptouch.com/
5
+ Version: 4.1
6
  Description: Make a beautiful mobile-friendly version of your website with just a few clicks
7
  Author: BraveNewCode Inc.
8
  Author URI: http://www.bravenewcode.com/
14
 
15
  function wptouch_create_four_object() {
16
  if ( !defined( 'WPTOUCH_IS_PRO' ) ) {
17
+ define( 'WPTOUCH_VERSION', '4.1' );
18
 
19
  define( 'WPTOUCH_BASE_NAME', basename( __FILE__, '.php' ) . '.php' );
20
  define( 'WPTOUCH_DIR', WP_PLUGIN_DIR . DIRECTORY_SEPARATOR . basename( __FILE__, '.php' ) );
107
  }
108
 
109
  return $page_info;
110
+ }
111
+
112
+ add_filter( 'wptouch_theme_title', 'wptouch_bauhaus_pro' );
113
+ function wptouch_bauhaus_pro( $name ) {
114
+ if ( $name == 'Bauhaus' ) { $name = 'Bauhaus Pro'; }
115
+ return $name;
116
+ }
117
+
118
+ function wptouch_is_update_available() {
119
+ return false;
120
  }